2011-08-07 1 views
0

私のテーブルでは、ビットタイプをIsTrueカラムに使用しています。T-SQLのビットタイプ

私はselectコマンドを実行すると:

SqlDataReader reader = command.ExecuteReader(); 

私はよく分からないが何reader["isTrue"]リターンということ?

は、私が比較

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

をやってみましたが、それはうまくいきませんでした。誰かが私が間違って行ったことを教えてもらえますか?

+2

「うまくいきませんでした」どういう意味ですか? 'reader [" isTrue "] ToString()'は何を返しますか? – Gabe

+0

期待通りに動作しませんでした。 – Xitrum

+1

何かが期待どおりに動作しないときは、それがどのように機能し、どのように動作するかを投稿する必要があります。 – Gabe

答えて

5

ブール値を返します。

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

あなたが使用することができ、結果セット内の列のインデックスを知っている場合:

bool value = reader.GetBoolean(index); 
+2

カラムのインデックスがわからない場合、 'GetOrdinal'はそれが何であるかを伝えます。 – Gabe

0

を私は拡張メソッドでこれをしたい:

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

    } 

そして、あなたの中に単純にこれを行うことができます:

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

ToBool拡張方法は、以下の場合に真/偽を返します:

  • 偽リーダー[ "isTrueは"](ビットとして)0を返す場合、リーダ[ "isTrueは"] DBNull.Valueの
  • がfalseを返す場合
  • を読者が[「istrue」] 1(ビットなど)

を返し、「isTrue」欄は、結果セットに存在しない場合を除き、あなたは明らかに、それを実行すると、それが例外をスローすることはありません場合は

  • 真。

  • +0

    'bool.TryParse'はすでにデフォルト値(つまり' false')に設定されているので、 'result = false; 'を割り当てることには意味がありません。 C#7では、これは 'bool.TryParse(theString、out bool result);に単純化することもできます。結果を返す; '。 – Manuzor