首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查OleDbDataReader是否为空?

如何检查OleDbDataReader是否为空?
EN

Stack Overflow用户
提问于 2020-06-06 18:45:58
回答 1查看 359关注 0票数 1

这是我使用的代码,用于根据Class字段值选择最大的。但是当表中没有关于字段的数据时。然后产生错误。

代码语言:javascript
复制
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"]);
                    }
                }

正在发生InvalidOperation异常。如果表中有数据,我希望得到RollNo的值。如果表中没有可用的数据,那么我该怎么办?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 19:13:07

你正在逆转这些步骤:

  • 打开连接;
  • 检查是否有开始数据;
  • 检查值是否为空;
  • 读取数据;

试试这个:

代码语言:javascript
复制
while (dr.Read())
   {
       if (!dr.IsDBNull(0))
          {
            i = Convert.ToInt32(dr["Roll"]);
          }
   }

当您只关注单个值时,请使用executeScalar获取值;

代码语言:javascript
复制
  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 :
  }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62236465

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档