如果select语句没有返回任何行,返回什么?

时间:2011-06-01 18:20:28

标签: c# sql select

我现在正在编程中使用SQL,我正在查询数据库,就像这样。

scCommand = new SqlCommand("SELECT LegislationID FROM Legislation WHERE Number =  @ECERegulation", sconConnection);
        scCommand.Parameters.Add("@ECERegulation", SqlDbType.NVarChar);
        scCommand.Parameters["@ECERegulation"].Value = strECERegulation;

        return (int)scCommand.ExecuteScalar();

我的问题是,如果我的参数与我查询的表中的任何内容都不匹配,会返回什么?我需要一个if语句来处理不匹配的ECERegulation。它会返回null吗?或者它会将立法ID归零吗?任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:4)

docs

  

返回值
  结果集中第一行的第一列,如果结果集为空,则为空引用(在Visual Basic中为Nothing)。最多返回2033个字符。

答案 1 :(得分:1)

如果未找到记录,则返回NULL。所以你会得到一个投射错误。

您需要在投射前检查结果是否为无效。并且还决定是否抛出异常或返回零,具体取决于您的业务规则。

答案 2 :(得分:1)

您可以使用Nullable<匹配null。 int>。您也可以传递转换错误并像这样返回null。

int? GetSomething()
{
     .....
     .....
     return (int?)TypeDescriptor.GetConverter(typeof(int?)).ConvertFrom(scCommand.ExecuteScalar());
}