2011-10-23 34 views
0
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(); 

正如你在這裏看到的,我想將SQL的flight_seat列存儲到availableSeat以檢查是否有可用的座位。如何從sqlDataReader存儲值?並比較?

我該怎麼做?因爲它一直在繼續。

回答

1

它更改爲:

​​

Equals()方法用於比較目的(平等),而不是分配。此外,通過將=左側的變量設置爲右側語句的結果,可以在C#中完成賦值。

您需要將reader中的值轉換爲int,因爲它存儲爲object。您也應該檢查了null值,因爲這是從一個數據庫來:

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

謝謝你指導我。 – Toni

+0

嗯,我覺得有一個問題。它說:「拋出System.invalidCaseException類型的異常:\ n指定的轉換無效」 – Toni

+0

然後,您的'flight_seat'不是'int'值。您應該檢查MySQL數據庫中的底層類型。例如,如果它是'varchar'的某種類型,則需要將'availableSeat'定義爲'string'。 – Yuck

1

availableSeat.Equals()是一個比較不分配。您需要分配值。例如

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

非常感謝,它的工作原理。 – Toni

相關問題