SqlCeDataReader Read(); Итерирует и повторяет несколько раз

Я программирую приложение, используя SQL Server Compact Edition, в котором моя программа вставляет некоторые данные откуда-то в локальную базу данных. Моя таблица базы данных имеет такие столбцы, как: username, enterdate, exitdate... и так далее.

Теперь я пытаюсь прочитать специальную строку моих данных, а затем добавить эту строку в просмотр списка, но когда я использую SqlCeDataReader И его Read(); метод, он добавляет дубликаты элементов в мой список. Например, если моя нужная строка находится в 9-м индексе базы данных, я имею в виду, когда моя желаемая строка, например, находится в 9-й строке моей базы данных, когда я SELECT это с помощью WHERE и затем я читаю его, он добавляет 9 повторяющихся элементов с теми же данными строк, которые мне нужны, к моему списку.

Я использую Microsoft Visual Studio 2008 Express Edition.

Con.ConnectionString = "data source = |datadirectory|\\RoomDataBase.sdf";
Con.Open();
cmd.Connection = Con;
cmd.CommandText = "SELECT * FROM room WHERE username = '" + user + "'";

SqlCeDataReader reader1 = cmd.ExecuteReader();

if (reader1.Read() )
{
       dblogger(user + " Entered and WAS in list");
       //my problem happens here that the above line iterates
}

dblogger это пустота, которая добавляет строку в список

На самом деле моя проблема в том, что внутри if{....} перебирает и перебирает номер номера строки в базе данных

Я должен сказать вам, что когда я SELECT данные из базы данных с использованием WHERE Я уверен, что только одна строка соответствует критериям, поэтому, чтобы быть уверенным во всем, проблема заключается в Read() процедура.

И я должен упомянуть, что эта проблема либо возникает, когда я использую SqlCeResultSet а затем использовать его ReadFirst();,

Отдельное спасибо тем, кто знает ответ.

1 ответ

Вы используете DataReader неправильно. Метод read используется для продвижения DataReader к следующей строке. Свойство HasRows, которое сообщит вам, были ли вообще возвращены какие-либо результаты.

Попробуйте следующее:

     if (reader1.HasRows)
     {
         dblogger(user + " Entered and WAS in list");
     }
Другие вопросы по тегам