SELECT COUNT 个查询错误

SELECT COUNT Query Error

我有这段代码,我正在尝试计算 accessdatabase 数据表 [Holiday] 中具有特定 payrollno 的行数。

string CountHolidayQuery = "SELECT COUNT FROM [Holiday] WHERE PayrollNo = @PayrollNo";
var CountHoliday = new OleDbCommand(CountHolidayQuery, conn);
CountHoliday.Parameters.AddWithValue("@PayrollNo", OleDbType.Integer).Value = GotPayroll;
int TotalHolidays = Convert.ToInt32(CountHoliday.ExecuteNonQuery());

我收到此错误,但我认为我已经添加了参数?

Exception thrown: 'System.Data.OleDb.OleDbException' in System.Data.dll Additional information: No value given for one or more required parameters.

COUNT 的正确语法是

string CountHolidayQuery = @"SELECT COUNT(*) 
         FROM [Holiday] WHERE PayrollNo = @PayrollNo";
var CountHoliday = new OleDbCommand(CountHolidayQuery, conn);
CountHoliday.Parameters.Add("@PayrollNo", OleDbType.Integer).Value = GotPayroll;
int TotalHolidays = Convert.ToInt32(CountHoliday.ExecuteNonQuery());

另请注意,我已将对 AddWithValue 的调用更改为传递的参数的正确添加。考虑到 AddWithValue 应该非常注意使用,因为 it is know as a source for subtle bugs

尝试

string CountHolidayQuery = 
   @"SELECT COUNT(*) 
       FROM [Holiday] 
      WHERE PayrollNo = @PayrollNo";

int TotalHolidays;

using (var CountHoliday = new OleDbCommand(CountHolidayQuery, conn)) {
  CountHoliday.Parameters.Add("@PayrollNo", OleDbType.Integer).Value = GotPayroll;
  TotalHolidays = Convert.ToInt32(CountHoliday.ExecuteNonQuery());
}