从C#中的SQL查询返回位值

Dan*_*Dan 2 c# sql byte bit

解释这个的最好方法是使用代码:

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();
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我所要做的就是将'roominspiration'的值更新为数据库中该记录的值.数据库中的字段是一个位数据类型,默认值为0.它始终设置正确,因此这不应该是返回null的问题.

任何人都可以发现我做错了什么,或者是否有更好的方法来做我正在做的事情.我的C#技能不太好,但我正在努力学习!

谢谢大家!

Red*_*ter 7

我想你想在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();
  }
}
Run Code Online (Sandbox Code Playgroud)