如何从数据库datareader解析值并处理可能的NULL值?

web*_*orm 2 c# vb.net null types

我已经遇到过这个问题几次,从来没有得到一个好的答案.我认为其他人必须已经处理过这个问题.

我有一个从数据库返回的datareader,我想使用其中的值,但值可能包含或不包含NULL.我想有一个辅助函数,它接受来自datareader的值,如果它不是NULL则返回值,如果是NULL则返回空格.

我遇到的问题是我正在测试的变量的数据类型是可变的.它可以是String,Integer或DateTime.任何人都可以建议一种简单的方法来测试该值,然后返回原始值(如果可能的话,返回相同的数据类型)或其他什么,如果它是NULL?

我目前正在使用VB.NET,但我也想知道如何在C#中执行此操作.谢谢.

Iai*_*ard 8

这应该适用于我认为的大多数事情(我没有测试过它):

 public T ParseValue<T>(System.Data.SqlClient.SqlDataReader reader, string column)
 {
     T result = default(T);

     if (!reader.IsDBNull(reader.GetOrdinal(column)))
         result = (T)reader.GetValue(reader.GetOrdinal(column));

     return result;
 }
Run Code Online (Sandbox Code Playgroud)

并且如果是,则返回该类型的默认值 null