1

在 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;
     }
4

1 回答 1

3

由于您使用COUNT(*),因此使用ExecuteScalar将是更好的方法。

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

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

也使用using语句来处理你的OleDbConnectionand OleDbCommand

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();
}
于 2014-05-06T19:13:13.883 回答