Тип бита в T-SQL - PullRequest
       42

Тип бита в T-SQL

0 голосов
/ 07 августа 2011

В своей таблице я использую битовый тип для столбца IsTrue.

Когда я выполняю команду выбора:

SqlDataReader reader = command.ExecuteReader(); 

Я не уверен, что будет reader["isTrue"] return?

Я пытался сделать сравнение

reader["isTrue"].ToString().Equals("0")

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

Ответы [ 2 ]

5 голосов
/ 07 августа 2011

Возвращает логическое значение.

bool value = (bool)reader["IsTrue"];

Если вам известен индекс столбца в наборе результатов, можно использовать:

bool value = reader.GetBoolean(index);
0 голосов
/ 07 августа 2011

Мне нравится делать это с помощью методов расширения:

public static bool ToBool(this string theString)
    {
        bool result = false;
        bool.TryParse(theString, out result);
        return result;

    }

И в своем коде вы можете просто сделать это:

if(reader["isTrue"].ToBool())
{
}

Метод расширения ToBool вернет true / false вследующие случаи:

  • false, если читатель ["isTrue"] возвращает DBNull.Value
  • false, если читатель ["isTrue"] возвращает 0 (как бит)
  • true, если читатель ["istrue"] возвращает 1 (в битах)

И он никогда не вызовет исключение при его выполнении, если в вашем наборе результатов нет столбца "isTrue", очевидно.

...