C# OracleCommand ExecuteScalar有时返回null
我使用下面的代码在c#中执行标量sql查询。 有时,在设置“res”时会出现NullReferenceException失败。 你知道为什么有时候会这样吗?(可能当我同时进行多个查询时) 注意:我使用相同的查询…有时它返回nullC# OracleCommand ExecuteScalar有时返回null,c#,sql,oracle,C#,Sql,Oracle,我使用下面的代码在c#中执行标量sql查询。 有时,在设置“res”时会出现NullReferenceException失败。 你知道为什么有时候会这样吗?(可能当我同时进行多个查询时) 注意:我使用相同的查询…有时它返回null public void ExecScalarQuery(String query) { OracleConnection conn = new OracleConnection(connectionString); try {
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();
如果查询返回null。。。那么您就不能对其调用toString()。您还应该在
中使用块使用OracleConnection
和oraclecondrom
。让我把问题说得更清楚。我想知道为什么它在使用相同的查询时会返回null,而这个查询肯定会有相同的结果。我有足够的经验知道ToString不适用于null。你能添加一个catch块,看看ExecuteScalar()是否抛出某种异常吗?公平地说,通常选择count(*)不会返回null@DarrenKopp当然,您假定注释掉的SQL是发生错误时发出的SQL。问题的模糊性和“也许当我同时做几个问题时”的陈述表明你可能错了。