ImG*_*reg 6 c# stored-procedures sqldatareader sql-server-2008
我在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"));
Run Code Online (Sandbox Code Playgroud)
我发现有几个网站引用了上面的"GetSqlBit",但显然它不是我正在使用的程序集的一部分.有什么建议我如何从SQL读取这个"位"数据类型?
我使用"GetSqlBinary"找到了类似的数据类型,但我不完全了解它是如何工作的,或者它是否适合这种情况?
每个人的持续帮助表示赞赏!
Bry*_*sby 10
A bool是你在寻找的.根据数据库表是否允许空值,它将是bool或者bool?为可空类型.
(如果位列允许空值 - 您可以通过多种方式执行此操作)
bitValue = reader["MyBitColumn"] as bool? ?? null;
Run Code Online (Sandbox Code Playgroud)
如果没有,那么:
bitValue = (bool)reader["MyBitColumn"];
Run Code Online (Sandbox Code Playgroud)
存储在数据库中的位实际上可以有三种状态,而不仅仅是两种:0,1和NULL.因此,您想要的类型是a Nullable<bool>或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)
{
//...
}
Run Code Online (Sandbox Code Playgroud)