从SqlServer获取一点到c#

时间:2009-08-26 14:20:51

标签: c# sql

我需要从sql server获取一个bit到c#。我尝试了不同的解决方案,如:

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

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

5 个答案:

答案 0 :(得分:12)

如果您确定列值永远不会是NULL,那么以下内容就可以解决问题:

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

如果可能返回NULL值:

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

答案 1 :(得分:4)

使用GetSqlBoolean方法。

更新

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

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

答案 4 :(得分:0)

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

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