Datareader.HasRow is wrong

本文关键字:wrong is HasRow Datareader | 更新日期: 2023-09-27 18:07:32

任何人都可以确认或争议的问题,我有一个DataReader访问ACCDB数据库。我设置了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());
    }

好了。

Datareader.HasRow is wrong

在您的示例代码中,如下所示:如果reader拥有这些行,那么它将打印错误

,如果reader没有它打印的行,它有并读取并抛出异常

互换:

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