通过SQL查询从BIT类型列中获取布尔值
我正面临从我的数据库的columns
之一获取boolean
值的问题。我使用SQL Server 2008
凡在我创建了一个database
如下:通过SQL查询从BIT类型列中获取布尔值
表名:SysUser3
和列:
产品名称|| ProductId || SelectedProducts
列SelectedProducts
是BIT
类型列,并且包含当前每个行条目的False
值。现在
,我写一个SQL Query
从我的“SelectedProducts”列
这里得到布尔值是我的代码:
using (SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|Database.mdf;User Instance=true"))
{
con.Open();
string cmdString = "SELECT ProductName,SelectedProducts FROM SysUser3";
using (SqlCommand cmd = new SqlCommand(cmdString, con))
{
using (SqlDataReader dataRead = cmd.ExecuteReader())
{
while (dataRead.Read())
{
items.Add(new ProductModel
{
Selected=(bool)dataRead["SelectedProducts"];
ProductName= dataRead["ProductName"].ToString()
});
}
}
}
}
我得到一个错误,在这条线,因此无法运行代码:
Selected =(bool)dataRead [“SelectedProducts”];
我正确吗?有人能告诉我代码中有什么问题吗?
你有一个分号错位。将其更改为逗号。 它应该是:
while (dataRead.Read())
{
items.Add(new ProductModel()
{
Selected=(bool)dataRead["SelectedProducts"],
ProductName= dataRead["ProductName"].ToString()
});
}
您可以尝试GetBoolean(column_odrinal)
方法。
if(!dataRead.IsDBNull(1))
Selected=dataRead.GetBoolean(1);
或者你可以修复它,如果返回值如果为null。
Selected = (dataRead["SelectedProducts"] as bool?) ?? false ;
在这种情况下,您知道该列的序号位置为1,但如果你想通过列名得到它,使用GetOrdinal()。 http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqldatareader.getordinal.aspx – 2011-12-24 04:59:38
什么是错误信息? – 2011-12-24 05:02:10
错误消息表明在上面提到的那一行上有“语法错误”,再加上以下一行ProductName = .... – 2011-12-24 05:07:52