首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >返回整数的OledbDataReader函数

返回整数的OledbDataReader函数
EN

Stack Overflow用户
提问于 2014-05-06 19:11:31
回答 1查看 1K关注 0票数 1

在C#工作,我在一个函数上遇到了麻烦。函数运行一个查询,该查询应该返回一个整数值,但我很难返回它。我经常会犯这样的错误:

  • 无法将oleDbDataReader类型的对象强制转换为Int32类型
  • 指定的强制转换无效。

不知道如何用C#和OleDbDataReader来完成这个任务。我的代码在下面

代码语言:javascript
复制
     public static int FifthQuery()
     {
         int _value = 0;
         OleDbConnection _connectMe = Utilities.OledbConnect();

         OleDbCommand _query1 = new OleDbCommand();
         _query1.Connection = _connectMe;
         _query1.CommandText = "SELECT count(*) FROM GIS.PERSONS where Name_Prefix = 'Dr.'";
         OleDbDataReader _reader = _query1.ExecuteReader();

         _reader.Read();

              //_value = Convert.ToInt32(_reader);
              _value = _reader.GetInt32(0);


         return _value;
     }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-06 19:13:13

既然您使用COUNT(*),那么使用ExecuteScalar将是更好的方法。

执行查询,返回查询返回的结果集中第一行的第一列。

代码语言:javascript
复制
int _value = (int)_query1.ExecuteScalar();

还可以使用 statement来释放OleDbConnectionOleDbCommand

代码语言:javascript
复制
using(OleDbConnection _connectMe = Utilities.OledbConnect())
using(OleDbCommand _query1 = _connectMe.CreateCommand())
{
    _query1.CommandText = "SELECT count(*) FROM GIS.PERSONS where Name_Prefix = 'Dr.'";
    _connectMe.Open();
    int _value = (int)_query1.ExecuteScalar();
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23503018

复制
相关文章

相似问题

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