OledbDataReader函数返回整数

时间:2014-05-06 19:11:32

标签: c# integer type-conversion oledbdatareader

在C#中工作,我遇到了一个函数问题。函数运行一个查询,查询应该返回一个整数值,但我无法返回它。我不断收到错误:

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

不确定如何使用C#和OleDbDataReader执行此操作。我的代码在

之下
     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;
     }

1 个答案:

答案 0 :(得分:3)

由于您使用COUNT(*),因此使用ExecuteScalar会更好。

  

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

int _value = (int)_query1.ExecuteScalar();

还可以使用using statement来处置您的OleDbConnectionOleDbCommand

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