有没有办法检查列是否支持来自datareader的空值?

naw*_*fal 2 c# dbnull datareader sqldatareader mysqldatareader

db中的表的列可以存储空值(如DBNulls).有没有一种方法,我可以从这些信息IDataReader还是DbDataReader

using (var reader = command.ExecuteReader())
{
    //can I get the column info like if it supports null value if I pass the ordinal?
    reader.CheckIfSupportsNull(someIndex) ???

    while (reader.Read())
    {

    }
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以读取单元格值并检查它DBNull.Value,但我不是问我是否可以检查读取值是否为null,但是如果我可以检查列本身是否支持DBNulls而不管表中存在的实际值.

我想知道这是否可能MySqlDataReader和/或SqlDataReader..

usr*_*usr 6

IDataReader.GetSchemaTable允许这样做.它返回DataTable描述结果集的内容.查看文档以查看它返回的列(有很多列).但不确定这个电话有多贵.我认为它不会往返服务器.

它返回结果集的属性,而不是直接返回某些表的属性.如果直接从表中选择列,则属性应匹配.这不适用于计算表达式(SomeCol + 1),因为SQL Server无法通过表达式精确跟踪可空性.