SqlCeDataReader Read();迭代和迭代了一些次数

时间:2014-03-23 15:17:04

标签: c# sql-server sql-server-2005 sqldatareader sqlcedatareader

我正在使用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来自数据库的数据时,我确信只有一行符合条件,所以为了确保一切,问题来自{{1过程。

我必须提到您,当我使用Read()然后使用SqlCeResultSet时,会出现此问题。

特别感谢那些知道答案的人。

1 个答案:

答案 0 :(得分:1)

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

尝试以下方法:

     if (reader1.HasRows)
     {
         dblogger(user + " Entered and WAS in list");
     }