0

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リストビューに文字列を追加する void です

実際、私の問題はif{....}、データベース内の行数の数まで反復して反復することです

SELECTを使用してデータベースからデータを取得する場合WHERE、基準に一致するのは 1 行だけであると確信しているため、すべてを確認するには、問題は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 に答える