0

でACCDBデータベースにアクセスしている問題を誰かが確認または異議を唱えることができますかDataReader. データベースをセットアップしDataReaderてクエリを実行します。をチェックするDataReader.HasRowsと、レコードが存在するかどうかに関係なく、true になります。

データテーブルが空で、レコードがまったくないことを二重に確認しましたが、DataReader.HasRowsそれでもレコードがあると言います。

試してみるとDataReader.Read、返されたレコードがないことがわかっているときに、「行/列のデータが存在しません」というエラーが表示されます。これは予想されることです。

誰もこれを見たことがありますか?それとも、これは起こらないと言えますか?

ありがとう

sql = @"SELECT a.License, a.ClassID, a.CurrentlyIn, a.TotalScans " +
    @"FROM Attendance a " +
    @"WHERE a.License = " + myScan.LicenseInt +
        @" AND a.ClassID = " + myScan.ClassID + ";";
_parent.StatusOutput(sql);

cmdDB = new OleDbCommand(sql, cnDB);
try
{
    //cnDB.Open();

    drDB = cmdDB.ExecuteReader();
    if (drDB.HasRows)
    {
        _parent.StatusOutput("Data reader has no rows");
    }
    else
    {
        _parent.StatusOutput("Data reader has rows.");
        drDB.Read();
        _parent.StatusOutput(drDB["License"].ToString() + ", " + drDB["ClassID"].ToString());
    }

では行きましょう。これを投稿する方法について混乱させて申し訳ありません。

4

1 に答える 1

0

ここにあるサンプルコードでは、リーダーに行がある場合、エラーが出力されます

リーダーに行がない場合は、それが持っていることを出力し、読み取り、例外をスローします

スワップ:

if (drDB.HasRows)
        {
            _parent.StatusOutput("Data reader has rows.");
            drDB.Read();
            _parent.StatusOutput(drDB["License"].ToString() + ", " + drDB["ClassID"].ToString());

                   }
        else
        {
            _parent.StatusOutput("Data reader has no rows");

        }
于 2013-04-06T02:36:26.907 に答える