#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), теперь я правильно изменил свой код