OracleCommand ExecuteScalar有时会返回null

时间:2014-06-18 18:58:11

标签: c# sql oracle

我使用下面的代码在c#中执行标量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();
    }
}

1 个答案:

答案 0 :(得分:2)

ExecuteScalar()可能会返回null值,这并不意外。简单地说,它发生的原因是您运行的查询没有返回结果集。

当发生这种情况时,你应该注意抓住它:

String res = "";
Object o = cmd.ExecuteScalar();
if (o != null)
    res = o.ToString();