1

質問: Sql の bit 値を C# の Int 値に変換する正しい方法は何ですか?

目的: Sql2008R2 と C# を使用して、値を整数に変換し、別のテーブルに挿入します。

エラー:次のコードはこのエラーを返します。入力文字列は、正しい形式ではありませんでした。

    public struct Mystruct
    {
        public Int32 Active
    }

    public static bool ReturnActivity
    {
        String sql = "";

       {
           conn.Open();

           sql = "SELECT " +
                     "database.dbo.table1.Active " +
                 "FROM " +
                     "database.dbo.tabe1 ";

           SqlCommand cmd = new SqlCommand(sql, conn);

           SqlDataReader dr = cmd.ExecuteReader();
           while (dr.Read())
           {
                MyStruct ReturnActivity = new MyStruct();

                ReturnActivity.Active = Convert.ToInt32(dr.GetValue(0).ToString());

                SomeArraylist.Add(MyStruct);

           }

                dr.Close();
                conn.Close();

                return true;
     }

コメント、提案、または推奨事項を事前にありがとうございます。

4

3 に答える 3

3

メソッドを使用してGetBoolean、ビット列の値を として返しますbool

ReturnActivity.Active = dr.GetBoolean(0) ? 1 : 0;

?…:三項演算子であることに注意してください。の左側のブール式を評価し、の場合?は の左側の値を返し、 の場合は の右側の値を返します。:true:false

これは、次とほぼ同等です。

if (dr.GetBoolean(0))
{
    ReturnActivity.Active = 1;
} else {
    ReturnActivity.Active = 0;
}
于 2013-09-20T16:42:16.913 に答える
1

通常BIT、SQL データベースから値を取得するときGetBoolean()は、単に GetValue() の代わりに使用します。Convert.ToInt32(bool b)次に、文字列の代わりにブール値を単純に渡すことができます。これは、それに応じて 0 または 1 を返します。

文字列に変換してから int に戻す必要はありません。

于 2013-09-20T16:48:46.777 に答える