나는 왜 이런 일이 발생하는지 잘 모르겠습니다. 나는 온라인으로 같은 문제를 보았고 그것을 해결할 수있는 도움이 거의 없었다.ExecuteScalar는 항상 0을 반환합니다.
Access에서 쿼리를 실행할 때 0에서 10까지 다른 값을 갖지만 어떤 이유로 인해 코드에서 동일한 값을 반환하지 않습니다.
static int OrdersPerHour(string User)
{
int? OrdersPerHour = 0;
OleDbConnection conn = new OleDbConnection(strAccessConn);
DateTime curTime = DateTime.Now;
try
{
string query = "SELECT COUNT(ControlNumber) FROM Log WHERE DateChanged > #" + curTime.AddHours(-1) + "# AND User = '" + User + "' AND Log.EndStatus in ('Needs Review', 'Check Search', 'Vision Delivery', 'CA Review', '1TSI To Be Delivered');";
OleDbCommand dbcommand = new OleDbCommand(query, conn);
dbcommand.Connection.Open();
dbcommand.CommandType = CommandType.Text;
dbcommand.CommandText = query;
OrdersPerHour = (int?)dbcommand.ExecuteScalar();
}
catch (OleDbException ex)
{
}
finally
{
conn.Close();
}
return OrdersPerHour.Value;
}
마크 아웃의 서식을 향상 시키려면 편집하고 싶을 수 있습니다. 또한 try {} 안에이 코드 중 일부가 있다는 뜻입니까? –
매개 변수를 사용하십시오 ... SQL 삽입은 매우 현실입니다 –
1.) [Parameterized Queries] (http://en.wikipedia.org/wiki/SQL_injection)를 사용하십시오. 2.) 왜 당신은 비어있는'Try Catch Finally'를 가지고 있습니까? 연결이 닫혀 있는지 확인하는 것입니까? 'using' 문에'OleDbConnection'을 써야합니다. –