SQL-запрос для получения логического значения из столбца типа BIT - PullRequest
1 голос
/ 24 декабря 2011

У меня проблема с получением значения boolean из одного из columns моей базы данных.Я использую SQL Server 2008, где я создал database следующим образом:

Имя таблицы: SysUser3 и столбцы как:

ProductName ||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"];

Я делаю это правильно?может кто-нибудь сказать мне, что не так в коде?

Ответы [ 2 ]

3 голосов
/ 24 декабря 2011

Ваша точка с запятой неуместна.Измените это на запятую.Следует читать:

                while (dataRead.Read())
                {
                    items.Add(new ProductModel()
                    {
                        Selected=(bool)dataRead["SelectedProducts"],
                        ProductName= dataRead["ProductName"].ToString()
                    });
                }
3 голосов
/ 24 декабря 2011

Вы можете попробовать GetBoolean(column_odrinal) метод.

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

ИЛИ вы можете исправить это, если возвращаете значение, если ноль.

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