从SqlServer获取一点到c#

Jor*_*orn 5 c# sql

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

bool active = rdr.GetSqlBinary(5);
Int16 active = rdr.GetSqlBinary(5);
Run Code Online (Sandbox Code Playgroud)

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

Luk*_*keH 12

如果您确定列值永远不会是,NULL则以下方法将起作用:

bool active = rdr.GetBoolean(rdr.GetOrdinal("Active"));
Run Code Online (Sandbox Code Playgroud)

如果NULL可能返回值:

int oActive = rdr.GetOrdinal("Active");
bool? active = rdr.IsDBNull(oActive) ? (bool?)null : rdr.GetBoolean(oActive);
Run Code Online (Sandbox Code Playgroud)


Jam*_*mes 5

使用GetSqlBoolean方法。

更新

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

var active = (bool)rdr.GetSqlBoolean(5);
Run Code Online (Sandbox Code Playgroud)

  • `SqlBoolean` 实际上只是一个布尔值的包装器,以允许可空性等。所以如果你要调用 `GetSqlBoolean` 然后立即将结果转换为 `bool` 你也可以调用 `rdr.GetBoolean` 在第一名。 (4认同)