Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 数据库中的空值会在数据集中返回空值吗?_C#_Asp.net_Sql Server_Null - Fatal编程技术网

C# 数据库中的空值会在数据集中返回空值吗?

C# 数据库中的空值会在数据集中返回空值吗?,c#,asp.net,sql-server,null,C#,Asp.net,Sql Server,Null,默认情况下,数据库中字符串列的NULL值是否会在C中的数据集记录中返回NULL值?或者它会在数据集中变成一个空字符串吗?在.NET中,根据您使用的技术,NULL值将返回为NULL或as 当使用ADO.NET System.Data时,数据库NULL值通常将作为DbNull.value返回,而在例如Entity Framework中,它将作为NULL返回 如果不进行任何其他处理,该值将不会作为空字符串返回,并且在任何情况下都不会作为字符串值null返回。通常它将返回该值或抛出InvalidCast

默认情况下,数据库中字符串列的NULL值是否会在C中的数据集记录中返回NULL值?或者它会在数据集中变成一个空字符串吗?

在.NET中,根据您使用的技术,NULL值将返回为NULL或as

当使用ADO.NET System.Data时,数据库NULL值通常将作为DbNull.value返回,而在例如Entity Framework中,它将作为NULL返回


如果不进行任何其他处理,该值将不会作为空字符串返回,并且在任何情况下都不会作为字符串值null返回。

通常它将返回该值或抛出InvalidCastException。根据您将要执行的操作,它可以将DBNull.Value转换为null,但通常在发生类似情况时,它实际上是在为您执行DBNull.Value检查并将其隐藏。您也可以自己创建一个扩展方法来实现它

public static string GetStringWithNullCheck(this IDataReader reader, int index)
{
    if(reader.IsDBNull(index))
        return null;
    return reader.GetString(index); //If we called this on a record that is null we get a InvalidCastException.
}
null和DBNull.Value之间的这种区别在调用时非常有用,这允许您区分未返回的记录和返回的记录之间的区别,但DB包含null作为值

using(var cmd = new SqlCommand(query, connection))
{
    var result = cmd.ExecuteScalar();

    if(result == null)
    {
        //0 rows where returned from the query
    }
    else if(result == DBNull.Value)
    {
        //Rows where returned but the value in the first column in the first row was NULL
    }
    else
    {
        //Result is the value of whatever object was in the first column in the first row
    }
}

为什么不试试看呢?我猜它会返回空值。