Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.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# 如果select语句不返回任何行,将返回什么?_C#_Sql_Select - Fatal编程技术网

C# 如果select语句不返回任何行,将返回什么?

C# 如果select语句不返回任何行,将返回什么?,c#,sql,select,C#,Sql,Select,我现在正在编程中使用SQL,我正在查询数据库,就像这样 scCommand = new SqlCommand("SELECT LegislationID FROM Legislation WHERE Number = @ECERegulation", sconConnection); scCommand.Parameters.Add("@ECERegulation", SqlDbType.NVarChar); scCommand.Parameters["@ECE

我现在正在编程中使用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语句来处理不匹配的法规。它会返回空值吗?或者它会返回零的立法ID?如有任何帮助,我们将不胜感激。

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

委员会:

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


如果没有找到记录,它将返回NULL。所以你会得到一个铸造错误


在强制转换之前,需要检查结果是否为空。还决定是抛出异常还是返回零,这取决于您的业务规则。

如果找不到记录,它将返回NULL。所以你会得到一个铸造错误


在强制转换之前,需要检查结果是否为空。并且还决定是抛出异常还是返回零,这取决于您的业务规则。

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

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

您可以使用Nullable来匹配null。您还可以传递转换错误并像这样返回null

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

是什么阻止了你尝试去发现?或者阅读MSDN for ExecuteScalar,看看它是否告诉你?是什么阻止了你尝试去发现?或者阅读MSDN for ExecuteScalar,看看它是否告诉你?事实上是错误的。返回DBNull,特别是当查询返回一条包含数据库NULL的记录时;这就是你得到一个铸造错误。查询返回0条记录时返回null;没有铸造错误。事实上是错误的。返回DBNull,特别是当查询返回一条包含数据库NULL的记录时;这就是你得到一个铸造错误。查询返回0条记录时返回null;没有铸造错误。