как я могу сохранить значение из SqlDataReader? и сравнить?

#c# #mysql #datareader

#c# #mysql #datareader

Вопрос:

 int availableSeat = 0;
string query = "select flight_no flight_seat from flight_info where flight_departure_time = @selectedFlight AND flight_from = @flightFrom AND flight_to = @flightTo ";
string url = "Server=localhost;Database=flight;uid=******;password=*****";
con1 = new MySqlConnection(url);
con1.Open();
cmd1 = new MySqlCommand(query,con1);
cmd1.Parameters.AddWithValue("@selectedFlight",comboBox3.SelectedItem);
cmd1.Parameters.AddWithValue("@flightFrom",comboBox1.SelectedItem);
cmd1.Parameters.AddWithValue("@flightTo",comboBox2.SelectedItem);
reader = cmd1.ExecuteReader();
while (reader.Read()) 
{
    availableSeat.Equals(reader["flight_seat"]);
    if(availableSeat > 0)
    {
        MessageBox.Show("The seat is available!!");
    }
    else
    {
        MessageBox.Show("Sorry, all seat has been booked!!");
    }
}
con1.Close();
  

Как вы можете видеть здесь, я хотел бы сохранить flight_seat столбец из SQL availableSeat в, чтобы проверить, есть ли свободное место.

Как я могу это сделать? потому что он продолжает переходить к else.

Ответ №1:

availableSeat.Equals() является ли сравнение не присваиванием. Вам нужно будет присвоить значение. Например

 availableSeat = (int)reader["flight_seat"];
  

Ответ №2:

Измените его на:

 availableSeat = (int)reader["flight_seat"]);
  

Equals() Метод используется для сравнения (равенства), а не для присваивания. Кроме того, присваивания выполняются в C # путем установки переменной слева от = результата оператора справа.

Вам нужно преобразовать значение в reader an int , потому что оно хранится как an object . Вы также должны проверить null значение, поскольку оно поступает из базы данных:

 availableSeat = reader["flight_seat"].Equals(DBNull.Value)
                    ? 0
                    : (int)reader["flight_seat"];
  

Комментарии:

1. Ммм, я думаю, что есть проблема. В нем говорится: «Было вызвано исключение типа System.invalidCaseException: nSpecified приведение недопустимо»

2. Тогда ваше flight_seat значение не является int значением. Вы должны проверить, какой базовый тип находится в базе данных MySQL. Например, если это какой-то тип varchar , который вам нужно будет определить availableSeat как a string вместо.