如何检查OleDbDataReader是否为空?



这是我用来根据字段值选择最大滚动号的代码。 但是当表中没有关于字段的数据时。然后生成错误。

using (var conn = new OleDbConnection(DatabaseObjects.ConnectionString))
{
conn.Open();
command = new OleDbCommand("select max(RollNo) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
OleDbDataReader dr = command.ExecuteReader();
if (!dr.IsDBNull(0))
{
while (dr.Read())
{
i = Convert.ToInt32(dr["Roll"]);
}
}

无效操作异常。如果表中有数据可用,我想获取 RollNo 的值。如果表中没有数据,我该怎么办?

您正在反转步骤:

  • 打开连接;
  • 检查是否有即将到来的数据;
  • 检查该值是否不为空;
  • 读取数据;

试试这个:

while (dr.Read())
{
if (!dr.IsDBNull(0))
{
i = Convert.ToInt32(dr["Roll"]);
}
}

当你只参加单个值时,使用 executeScalar 获取该值;

conn.Open();          
command = new OleDbCommand("select isnull(max(RollNo),-1) as Roll from Students where Class = '"+cmbClass.Text+"'", conn);
int rollNo = (int) command.ExecuteScallar();
if(rollno !=-1)
{
// TODO :
}

相关内容

  • 没有找到相关文章

最新更新