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");
}