我有一个 SQL 表,其中有一列类型为 nvarchar(20)
并想使用 SqlDataReader
阅读该专栏.看起来唯一的方法是使用 GetSqlChars()
其次是 ToSqlString()
:
String result = reader.GetSqlChars(index).ToSqlString().Value
问题是,如果存储的值恰好为 null(这对我的情况有效),我会得到 p>
[SqlNullValueException: Data is Null. This method or property cannot be called on Null values.]
System.Data.SqlTypes.SqlString.get_Value() +3212527
所以我必须首先检查 ToSqlString()
返回的值是什么返回 IsNull()
:
SqlString asSqlString = reader.GetSqlChars(index).ToSqlString();
String result = asSqlString.IsNull() ? null : asSqlString.Value;
这可行,但需要大量额外代码,而且看起来真的很不雅观。
有没有更优雅的方式达到同样的效果?
最佳答案
也许:
var value = reader.IsDBNull(index) ? null : reader.GetString(index);
或者更短:
var value = reader[index] as string;
关于c# - 允许空值时如何将 nvarchar(x) 读入 String?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12933658/