2012-01-13 14 views
2

でこれを説明するための最良の方法は、コードを使用することです:戻りビット値は、C#

byte roominspiration = 0; 
query = "SELECT room_inspiration FROM Room WHERE room_id = @room_id); SELECT SCOPE_IDENTITY();"; 
using (sqlConnection1) 
{ 
    using (SqlCommand cmd = new SqlCommand(query, sqlConnection1)) 
    { 
    cmd.Parameters.Add("@room_id", System.Data.SqlDbType.Int); 
    cmd.Parameters["@room_id"].Value = roomid; 
    sqlConnection1.Open(); 
    if (cmd.ExecuteScalar() != null) 
    { 
     roominspiration = (byte)cmd.ExecuteScalar(); 
    } 
    } 
} 

私がやろうとしているすべては、そのレコードのどのような値に「roominspiration」の値を更新していますデータベースの中にあります。データベース内のフィールドは、デフォルト値の0のビットデータ型です。常に正しく設定されているため、nullを返す問題はありません。

誰かが私が間違っていることを発見することができますか、または私がやっていることをするためのよりよい方法があるかどうか。私のC#スキルはそれほど良くはありませんが、私は学びたいと思っています!

ありがとうございました!

答えて

5

bool .NETデータ型をここで使用したいと思います。

ので、

bool roominspiration = false; 
query = "SELECT room_inspiration FROM Room WHERE room_id = @room_id); SELECT SCOPE_IDENTITY();"; 
using (sqlConnection1) 
{ 
    using (SqlCommand cmd = new SqlCommand(query, sqlConnection1)) 
    { 
    cmd.Parameters.Add("@room_id", System.Data.SqlDbType.Int); 
    cmd.Parameters["@room_id"].Value = roomid; 
    sqlConnection1.Open(); 
    roominspiration = ((bool?)cmd.ExecuteScalar()).GetValueOrDefault(); 
    } 
} 
+0

HTTPのようにそれを変換 です。 //msdn.microsoft.com/en-us/library/ms131092.aspx – Oded

+0

ええと、この行にエラーがあります:roominspiration =((bool?)cmd.ExecuteScalar())。GetValueOrDefault(); 私は行をコメントアウトしても大丈夫ですが、コメントがない場合はエラーが発生します。 – Dan

+0

実際、私の悪いことは完全に - クエリに構文エラーがあります!これであなたの助けてくれてありがとう - ブールの方法は今すぐうまく動作します。 – Dan

1

は何もブール値にビットを変換するために何ができることは、バイトとして定義されroominspirationを維持し、最後 で

roominspiration = ConvertToBoolean(the value you are wanting to convert);