Возвращаемое значение бита из SQL-запроса в C # - PullRequest
2 голосов
/ 13 января 2012

Лучший способ объяснить это с помощью кода:

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. Оно всегда установлено правильно, так что это не должно вызывать проблем при возврате нуля.или если есть лучший способ сделать то, что я делаю.Мои навыки C # не слишком хороши, но я пытаюсь учиться!

Спасибо, ребята!

Ответы [ 2 ]

7 голосов
/ 13 января 2012

Я думаю, вы хотите использовать здесь тип данных 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();
  }
}
1 голос
/ 13 января 2012

То, что вы также можете сделать, чтобы преобразовать бит в логическое значение, - это сохранить значение вдоха комнаты, определенное как байт, и в конце преобразовать его как

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