从SqlServer获取一点到c#

我需要从SQL服务器获取一个位到c#。 我尝试了不同的解决方案,如:

bool active = rdr.GetSqlBinary(5); Int16 active = rdr.GetSqlBinary(5); 

但找不到任何方法来获得比特。 有人能举个例子吗?

如果您确定列值永远不会为NULL那么以下内容将起到作用:

 bool active = rdr.GetBoolean(rdr.GetOrdinal("Active")); 

如果可能返回NULL值:

 int oActive = rdr.GetOrdinal("Active"); bool? active = rdr.IsDBNull(oActive) ? (bool?)null : rdr.GetBoolean(oActive); 

使用GetSqlBoolean方法。

更新

确保将返回值转换为布尔值,即

 var active = (bool)rdr.GetSqlBoolean(5); 

使用GetFieldType确定要使用的数据类型。

我使用以下方法得出以下解决方案:

 bool active = (bool)rdr.GetSqlBoolean(rdr.GetOrdinal("Active")); 

有一个SqlBoolean结构的公共get方法:IsTrue。 所以你可以这样使用它,以确保结果是布尔值:

 bool active = rdr.GetSqlBoolean(5).IsTrue;