这是我试图实现的,但是当在任一列中返回dbnull时它会返回错误.
Reader.Read()Dim Val As Nullable(Of Double) = Reader.GetDecimal(0)Dim Vol As Nullable(Of Long) = Reader.GetInt32(1)解决方法 这些扩展方法涉及DaTarow – 即Datatable ……而不是IDataReader(etc).
你可以用条件来做你想要的事情 – 虽然在VB中使用IIf,或者在C#中:
double? val = reader.Isdbnull(index) ? (double?) null : reader.GetDouble(index);long? vol = reader.Isdbnull(index) ? (long?)null : reader.GetInt64(index);
您当然可以将它们作为实用程序方法包装起来,也许作为您自己的IDataReader上的自定义扩展方法:
public static class DataReaderExtensions{ public static int? ReadNullableInt32(this IDataReader reader,int index) { return reader.Isdbnull(index) ? (int?)null : reader.GetInt32(index); } public static long? ReadNullableInt64(this IDataReader reader,int index) { return reader.Isdbnull(index) ? (long?)null : reader.GetInt64(index); } public static double? ReadNullableDouble(this IDataReader reader,int index) { return reader.Isdbnull(index) ? (double?)null : reader.GetDouble(index); } public static string ReadNullableString(this IDataReader reader,int index) { return reader.Isdbnull(index) ? null : reader.GetString(index); } // etc}
(抱歉使用c#作为示例 – 但你可以阅读c#比写出准确的vb.net更好)
总结以上是内存溢出为你收集整理的在.net4中使用带有dbnull值的datareader全部内容,希望文章能够帮你解决在.net4中使用带有dbnull值的datareader所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)