Я пытаюсь получить 2 строки данных из моей базы данных MS Access с помощью команды SQL и с помощью средства чтения данных, но он возвращает только одну строку данных. Я точно не знаю, как работает устройство чтения данных, поэтому я думаю, что это может быть из-за того, что я неправильно закодировал его. Команда SQL должна быть в порядке, потому что я запускаю ее в запросе MS Access, и она работает. Вы знаете, что не так с моим кодом? [Редактировать: на самом деле я не пытаюсь получить количество строк, это просто для тестирования. Под фрагментом кода, который я разместил, моя программа фактически загружает данные в массив, чтобы можно было сравнить два целых числа и выбрать наименьшее из них.]
if (passageID != 1)
{
Connect(fileName);
OleDbCommand com = new OleDbCommand();
com.Connection = cxn;
com.CommandText = "SELECT PO.OptionID_FK FROM PassageOption AS PO WHERE PO.PassageID_FK = @passageID;";
com.Parameters.AddWithValue("@passageID", passageID);
OleDbDataReader r = com.ExecuteReader();
int numRows = r.RowCount;
if (r.HasRows)
{
int i = 0;
int[] optionIDs = new int[2];
while (r.Read())
{
optionIDs[i] = (int)r[i]; // It gives me the following error, the second time it runs, when i = 1; System.IndexOutOfRangeException: 'Index was outside the bounds of the array.'
i++;
}
if (optionIDs[0] < optionIDs[1])
{
j = optionIDs[0];
}
else
{
j = optionIDs[1];
}
}
}
using
приведет к утечке пула соединений. - person Uwe Keim   schedule 11.05.2018SELECT COUNT...
...) - person Matt Gibson   schedule 11.05.2018SELECT COUNT(*) FROM
не будет более эффективным, чем запуск считывателя и получение счета от считывателя? - person Uwe Keim   schedule 11.05.2018