0

我正在使用 SQL Server Compact Edition 编写应用程序,其中我的程序将一些数据从某处插入到本地数据库。我的数据库表有如下列:username, enterdate, exitdate... 等等。

现在我正在尝试读取我的数据的特殊行,然后将该行添加到列表视图中,但是当我使用SqlCeDataReader及其Read();方法时,它会将重复项添加到我的列表视图中。例如,如果我需要的行位于数据库的第 9 个索引处,我的意思是,当我SELECT使用它WHERE然后读取它时,例如我想要的行位于数据库的第 9 行时,它会添加 9 个具有相同行的重复项我需要到我的列表视图的数据。

我正在使用 Microsoft Visual Studio 2008 速成版。

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是一个将字符串添加到列表视图的 void

实际上我的问题是内部if{....}迭代并迭代到数据库中的行数

我必须告诉你,当我SELECT使用数据库中的数据时,WHERE我确信只有一行符合条件,所以要确定一切,问题出在Read()程序上。

我必须提到你,这个问题要么发生在我使用SqlCeResultSet然后使用它时ReadFirst();

特别感谢知道答案的人。

4

1 回答 1

1

您错误地使用了 DataReader。read 方法用于将 DataReader 推进到下一行。HasRows 属性将告诉您是否返回了任何结果。

尝试以下操作:

     if (reader1.HasRows)
     {
         dblogger(user + " Entered and WAS in list");
     }
于 2014-03-23T15:53:57.887 回答