我在asp.net/c#程序中使用SQL Server 2008 . 我试图使用SqlDataReader从数据库中获取数据,但我不知道如何使用数据类型“bit” .
//these are the assemblies i added manually
using System.Web.Script.Services;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
SqlConnection conn2 = new SqlConnection(ConfigurationManager.ConnectionStrings["ucsConnectionString"].ConnectionString);
SqlDataReader rdr2 = null;
conn2.Open();
SqlCommand cmder = new SqlCommand("usp_Device_GetBy_DeviceID", conn2);
cmder.Parameters.AddWithValue("@ID", id);
cmder.CommandType = CommandType.StoredProcedure;
rdr2 = cmder.ExecuteReader();
rdr2.Read();
*insert datatype & var* = rdr2.GetSqlBit(rdr2.GetOrdinal("Line_Name"));
我发现有几个网站引用了上面的“GetSqlBit”,但显然它不是我正在使用的程序集的一部分 . 有什么建议我如何从SQL读取这个“位”数据类型?
我使用“GetSqlBinary”找到了类似的数据类型,但我不完全了解它是如何工作的,或者它是否适合这种情况?
每个人的持续帮助表示赞赏!
5 回答
存储在数据库中的位实际上可以有三种状态,而不仅仅是两种:0,1和NULL . 因此,您想要的类型是
Nullable<bool>
,或bool?
简写 .但是,看起来你想要
.GetBoolean()
方法 . 该方法要求您在调用方法之前检查null . 代码可能如下所示:你正在寻找
bool
. 根据数据库表是否允许空值,对于可空类型,它将是bool
或bool?
.(如果位列允许空值 - 您可以通过多种方式执行此操作)
如果没有,那么:
可以检索一个位并将其存储在布尔值中 . 我用一点(0或1)来表示记录是否有效 . 当我将其检索到我的C#应用程序时,我将其存储在一个布尔变量中 . 那是你问的吗?
只是想为Joel的回答添加一些内容......你必须将null转换为bool?或者你得到该声明的错误:
布尔数据类型足以从sql server 2008读取位数据类型