我现在正在编程中使用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归零吗?任何帮助将不胜感激。
答案 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());
}