2016-04-02 11 views
1
String sql2="SELECT rates from room_type a,rooms b ,reservation r where a.type=b.type AND b.room_no=r.room_no AND r.cus_id='"+Cusid+"' group by r.cus_id"; 
pst=conn.prepareStatement(sql2); 
rs=pst.executeQuery(); 
rs.next(); 
double roomRates = Double.parseDouble(rs.getString("rates")); 

Ich habe rs.next() ohne if-Anweisung verwendet. Ist das richtig? Mein Programm bleibt hängen, wenn ich es starte. Ich vermute, der Grund dafür ist rs.next() ohne "if".jdbc SQL-Anweisungen empfangen Daten in Java-Programm

+1

Sind Sie sicher, dass dein RS IMMER mindestens eine Zeile enthält? Sie sollten prüfen, ob eine Zeile gelesen werden muss, bevor Sie versuchen, Daten zu lesen. –

+0

Das 'if' oder' while' ist nicht der Grund, aber es ist sehr nützlich festzustellen, ob irgendwelche Zeilen zurückgegeben wurden oder wann Sie das Ende erreicht haben. Wenn es eine Zeile geben sollte, aber nicht, können Sie eine Ausnahme auslösen oder andere Schritte unternehmen, um es zu lösen. – maraca

+0

'Double.parseDouble (rs.getString (" rates "));' sollte durch 'rs.getDouble (" rates ") ersetzt werden' es macht keinen Sinn, eine Zahl in eine Zeichenkette umzuwandeln, nur um sie in eine Zahl umzuwandeln –

Antwort

0

Bitte tun Sie sich einen Gefallen, lesen Sie das Ergebnis mit einer while-Schleife eingestellt oder zumindest ein bedingter wenn selbst wenn Ihr 99,9% sicher sind, dass es immer eine Zeile zurückgegeben wird:

double roomRates = 0.0; 
if(!rs.next()){ 
    //handle no result 
} else { 
    roomRates = rs.getDouble("rates") != null ? rs.getDouble("rates") : 0.0; 
} 
Verwandte Themen