从BIT类型列获取布尔值的SQL查询

本文关键字:SQL 查询 布尔值 获取 BIT 类型 | 更新日期: 2023-09-27 18:18:48

我正面临着从我的数据库的columns之一获得boolean值的问题。我使用的是SQL Server 2008,其中我创建了database,如下所示:

表名:SysUser3,列为:

ProductName || 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()
                        });
                    }
                }
            }
        }

我在这行得到一个错误,因此无法运行代码:

选择

= (bool) dataRead("SelectedProducts");

我做对了吗?谁能告诉我代码出了什么问题?

从BIT类型列获取布尔值的SQL查询

分号放错地方了。改为逗号。它应该是:

                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 ;