Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# SqlDataReader正在从SQLServer2008读取位数据类型?_C#_Sql Server 2008_Stored Procedures_Sqldatareader - Fatal编程技术网

C# SqlDataReader正在从SQLServer2008读取位数据类型?

C# SqlDataReader正在从SQLServer2008读取位数据类型?,c#,sql-server-2008,stored-procedures,sqldatareader,C#,Sql Server 2008,Stored Procedures,Sqldatareader,我正在asp.net/c程序中使用SQL Server 2008。我试图使用SqlDataReader从数据库中获取数据,但我不确定数据类型“bit”使用什么 我发现有几个站点引用了上面的“GetSqlBit”,但显然它不是我正在使用的程序集的一部分。对如何从SQL中读取此“位”数据类型有何建议 我使用“GetSqlBinary”找到了一个类似的数据类型,但我不完全理解它是如何工作的,或者它是否适合这种情况 感谢大家的持续帮助 可以检索位并将其存储在布尔值中。我使用位(0或1)指示记录是否处于活

我正在asp.net/c程序中使用SQL Server 2008。我试图使用SqlDataReader从数据库中获取数据,但我不确定数据类型“bit”使用什么

我发现有几个站点引用了上面的“GetSqlBit”,但显然它不是我正在使用的程序集的一部分。对如何从SQL中读取此“位”数据类型有何建议

我使用“GetSqlBinary”找到了一个类似的数据类型,但我不完全理解它是如何工作的,或者它是否适合这种情况


感谢大家的持续帮助

可以检索位并将其存储在布尔值中。我使用位(0或1)指示记录是否处于活动状态。当我将其检索到我的C#应用程序中时,我将其存储在布尔变量中。这就是你要问的吗?

数据库中存储的位实际上可以有三种状态,而不仅仅是两种:0、1和NULL。因此,您需要的类型是
Nullable
,或
bool?
速记

但是,看起来您需要
.GetBoolean()
方法。该方法要求您在调用该方法之前检查null。代码可能如下所示:

bool? Line_Name = rdr2.IsDBNull(rdr2.GetOrdinal("Line_Name"))?null:rdr2.GetBoolean(rdr2.GetOrdinal("Line_Name"));
if (Line_Name != null && Line_Name.Value)
{
    //...
}

你要找的是
bool
。根据数据库表是否允许空值,对于可空类型,它将是
bool
bool?

(如果位列允许空值——可以通过多种方式实现)

若否,则:

bitValue = (bool)reader["MyBitColumn"];

Boolean数据类型足以从sql server 2008读取位数据类型

只是想在Joel的答案中添加一些内容。。。你必须把空值转换成布尔值?或者您在该语句中出现错误:

var myvar = reader.IsDBNull(reader.GetOrdinal("field_name")) 
            ? (bool?)null
            : reader.GetBoolean(reader.GetOrdinal("field_name"));

我确实需要允许空值(更多只是为了测试…)。但是,我在使用“bool”数据类型时遇到了错误。我在if语句中使用它,它说它不能从'bool'转换为'bool'。使用此数据类型需要做任何不同的操作吗?@Joel Coehoorn谢谢。这看起来是我需要的。当然也需要这个isDBNull。Good stuff.bool不能为null。使用Nullable或Nullable。在sql中,位有3种状态:{1,0,NULL}。根据逻辑,您也可以使用false或true而不是null?
bitValue = (bool)reader["MyBitColumn"];
var myvar = reader.IsDBNull(reader.GetOrdinal("field_name")) 
            ? (bool?)null
            : reader.GetBoolean(reader.GetOrdinal("field_name"));