SQL Query从BIT类型列获取布尔值

时间:2011-12-24 04:52:11

标签: c# sql ado.net boolean

我在从我的数据库的boolean之一获取columns值时遇到问题。我正在使用SQL Server 2008我在其中创建了database,如下所示:

表名:SysUser3和列为:

产品名称|| ProductId || SelectedProducts

SelectedProductsBIT类型列,目前包含每个行条目的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()
                        });
                    }
                }
            }
        }

我在此行收到错误,因此无法运行代码:

  

选定=(布尔)DATAREAD [ “SelectedProducts”];

我做得对吗?谁能告诉我代码中有什么问题?

2 个答案:

答案 0 :(得分:3)

您可以尝试GetBoolean(column_odrinal)方法。

  if(!dataRead.IsDBNull(1))
     Selected=dataRead.GetBoolean(1);

如果返回值为null,则可以修复它。

Selected =  (dataRead["SelectedProducts"] as bool?) ??  false ;

答案 1 :(得分:3)

你有一个错误的分号。将其更改为逗号。 它应该是:

                while (dataRead.Read())
                {
                    items.Add(new ProductModel()
                    {
                        Selected=(bool)dataRead["SelectedProducts"],
                        ProductName= dataRead["ProductName"].ToString()
                    });
                }