C# 数据库中的空值会在数据集中返回空值吗?
默认情况下,数据库中字符串列的NULL值是否会在C中的数据集记录中返回NULL值?或者它会在数据集中变成一个空字符串吗?在.NET中,根据您使用的技术,NULL值将返回为NULL或as 当使用ADO.NET System.Data时,数据库NULL值通常将作为DbNull.value返回,而在例如Entity Framework中,它将作为NULL返回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返回。通常它将返回该值或抛出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
}
}
为什么不试试看呢?我猜它会返回空值。