C # для доступа к соединению в визуальной форме OleDb Не существует данных для строки / столбца ИЛИ недопустимого вывода

#c# #ms-access #oledb

#c# #ms-access #oledb

Вопрос:

Я пытаюсь получить текстовое значение из одной ячейки в форме доступа, но вместо этого этот код выдает мне System.Data.OleDb.OleDbDataReader результат. Когда я меняю Sell на * и Convert.ToString(cusReader) на Convert.ToString(cusReader.getValue(1)) , я получаю ошибку в заголовке. Как мне это исправить? Спасибо, Джек.

  OleDbCommand cmd = new OleDbCommand("SELECT Sell FROM Product WHERE ID = "   Count, conn);
            OleDbDataReader cusReader = cmd.ExecuteReader();

            if (Count != 0)
            {
                labelInsertedExtra.Visible = true;
                labelInserted.Visible = true;
                labelInsertedExtra.Text = Convert.ToString(cusReader);
            }
            else
            {
                labelInsertedExtra.Visible = false;
                labelInserted.Visible = false;
            }
            cusReader.Close();
  

Ответ №1:

Индекс начинается с 0

    Convert.ToString(cusReader.getValue(0)) 
  

вы также должны протестировать dbnullvalue

       while (cusReader.Read())
      {

        if (Count != 0 amp;amp; cusReader["Sell"] != DBNull.Value)
        {
            labelInsertedExtra.Visible = true;
            labelInserted.Visible = true;
            labelInsertedExtra.Text = cusReader["Sell"].ToString(); 
        }
        else
        {
            labelInsertedExtra.Visible = false;
            labelInserted.Visible = false;
        }

        break;
      }
  

Комментарии:

1. Все еще получаем «Для строки / столбца не существует даты», и в этой позиции определенно есть значение

2. Хорошо, я попробовал cusReader["sell"].ToString() и до сих пор никаких данных не существует… если вы хотите знать, таблица Access содержит 9 записей с идентификатором, именем продукта, стоимостью и продажей. Все, кроме ID, представляют собой короткий текст. Спасибо за помощь до сих пор

3. обратите внимание на случай, когда «sell» отличается от «Sell», и вы должны протестировать DBNull. Значение, подобное приведенному выше

4. Извините, это просто из-за того, что я лениво перепечатываю код, у меня есть Sell в реальной программе. Теперь я приступаю No data exists for the row/column к оператору if…

5. извините, я забыл чтение (долгое время я не использовал datareader), теперь я правильно изменил свой код