2011-10-23 1 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からavailableSeatに保存して、座席があるかどうかを確認したいと思います。どのようにsqlDataReaderから値を格納できますか?と比較する?

どうすればいいですか?なぜなら、それは他の人に行き続けるからです。

答えて

1

変更は:

​​

Equals()方法は、比較の目的(平等)とないの割り当てに使用されます。さらに、=の左側の変数を右側のステートメントの結果に設定することによって、C#で代入が行われます。

readerの値をとして格納されているため、値をintにキャストする必要があります。これは、データベースから来ているので、あなたはまた、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

関連する問題