Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# OracleCommand ExecuteScalar有时返回null_C#_Sql_Oracle - Fatal编程技术网

C# OracleCommand ExecuteScalar有时返回null

C# 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 {

我使用下面的代码在c#中执行标量sql查询。 有时,在设置“res”时会出现NullReferenceException失败。 你知道为什么有时候会这样吗?(可能当我同时进行多个查询时) 注意:我使用相同的查询…有时它返回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();

如果查询返回null。。。那么您就不能对其调用toString()。您还应该在
中使用
块使用
OracleConnection
oraclecondrom
。让我把问题说得更清楚。我想知道为什么它在使用相同的查询时会返回null,而这个查询肯定会有相同的结果。我有足够的经验知道ToString不适用于null。你能添加一个catch块,看看ExecuteScalar()是否抛出某种异常吗?公平地说,通常选择count(*)不会返回null@DarrenKopp当然,您假定注释掉的SQL是发生错误时发出的SQL。问题的模糊性和“也许当我同时做几个问题时”的陈述表明你可能错了。