Я использую следующий код для выполнения скалярного SQL-запроса в С#. Иногда это прерывается с исключением NullReferenceException, где я устанавливаю 'res'. Любые идеи, почему это иногда случается? (возможно, когда я делаю несколько запросов одновременно) Примечание: я использую тот же запрос... и иногда он возвращает null.
public void ExecScalarQuery(String query)
{
OracleConnection conn = new OracleConnection(connectionString);
try
{
conn.Open();
OracleCommand cmd = new OracleCommand();
cmd.Connection = conn;
cmd.CommandText = query;// "select count(*) from SALES_ADVENTUREWORKS2012.SALESORDERDETAIL where PRODUCTID=709";
cmd.CommandType = CommandType.Text;
cmd.CommandTimeout = QUERY_TIMEOUT;
String res = cmd.ExecuteScalar().ToString();
}
finally
{
conn.Close();
}
}
Не является неожиданным, что ExecuteScalar()
может вернуть null
значение. Проще говоря, это происходит потому, что вы выполнили запрос, который не возвращал результирующий набор.
Вы должны следить за тем, когда это произойдет:
String res = "";
Object o = cmd.ExecuteScalar();
if (o != null)
res = o.ToString();
OracleConnection
иOracleCommand
вusing
блоков.