dan*_*dan 7 c# ado.net sql-server-2008
如果结果中的给定列可以包含空值,是否有一种方法可以在.NET中确定任何SQL Server结果集?
例如,如果我有这些陈述
Select NullableColumn From MyTable
Run Code Online (Sandbox Code Playgroud)
和
Select IsNull(NullableColumn, '5') as NotNullColumn From MyTable
Run Code Online (Sandbox Code Playgroud)
我得到一个像这样的datareader:
var cmd = new SqlCommand(statement, connection);
var rdr = cmd.ExecuteReader();
Run Code Online (Sandbox Code Playgroud)
我可以有这样的功能吗?
bool ColumnMayHaveNullData(SqlDataReader rdr, int ordinal)
{
//????
}
Run Code Online (Sandbox Code Playgroud)
我希望它为第一个语句返回true,对第二个语句返回false.
rdr.GetSchemaTable()不适用于此,因为它返回基础列是否为空,这不是我想要的.datareader上有函数返回字段的底层sql类型,但似乎没有人告诉我它是否为null.
不幸的是你不能,因为 SQL Server 无法确定字段是否可为空。您可以对结果集中的字段(运算符、函数调用等)进行仲裁转换,并且这些转换没有关于它们的元数据,无论它们是否可以返回 null。所以你必须手动解决这个问题或者使用具有模式绑定的视图......
| 归档时间: |
|
| 查看次数: |
624 次 |
| 最近记录: |