2017-03-03 3 views
-2

Ich mache Reservierungsprogramm.JDBC Fehler. Hilf mir

ich Gesicht MySQL JDBC Fehler.

Ich führte Code unten aus.

public void ReservationModifyQuery(String room, String name, String phone, String nop, String revdate, String revtime, String usetime, String isgroup, String id, String PrefRoom, String PrefReservationTime, String PrefDateString, Connection conn) throws Exception{ 

    String updateDB = "UPDATE reservation SET "; 
    String sql = "roomNum = ?,"+ 
        "Name = ? ,"+ 
        "Phone = ? ,"+ 
        "NumOfPeople = ? ,"+ 
        "ReservationDate = ? ,"+ 
        "ReservationTime = ? ,"+ 
        "UseTime = ? ,"+ 
        "Group = ? ,"+ 
        "ID = ? "; 

    sql = "roomNum = ?"; 
    String where = "where roomNum = ? and ReservationDate = ? and ReservationTime = ? ;"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setInt(1, Integer.parseInt(room)); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "Name = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setString(1, name); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "Phone = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setString(1, phone); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "NumOfPeople = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setInt(1, Integer.parseInt(nop)); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "ReservationDate = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setDate(1, Date.valueOf(revdate)); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "ReservationTime = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setTime(1, Time.valueOf(revtime)); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "UseTime = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setDouble(1, Double.parseDouble(usetime)); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "Group = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setString(1, isgroup); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 

    sql = "ID = ?"; 
    pstmt = conn.prepareStatement(updateDB+sql+where); 
    pstmt.setString(1, id); 
    pstmt.setInt(2, Integer.parseInt(PrefRoom)); 
    pstmt.setDate(3, Date.valueOf(PrefDateString)); 
    pstmt.setTime(4, Time.valueOf(PrefReservationTime)); 
    pstmt.executeUpdate(); 


    pstmt.close(); 
    conn.close(); 
} 

Dieser Code tritt Syntax Ausnahme unten auf. aber ich weiß nicht, Fehler Abschnitt ...

enter image description here

Wie kann ich diese Angelegenheit lösen?

+2

Sie machen zwei Zuweisungen an die 'sql' Variable am Anfang. Wollen Sie das wirklich tun? – Nurjan

+2

Bitte fügen Sie den vollständigen StackTrace als ** Text ** in Ihre Frage ein, verwenden Sie keine Bilder für Dinge, die per Text übermittelt werden können. BTW: Das Problem ist wahrscheinlich der fehlende Abstand zwischen '?' Und 'WHERE' nach der Verkettung. –

Antwort

0

Zwischen Ihren Anweisungen ist kein Leerzeichen. In Ihrem Code, SQL für preparedStatement ist

UPDATE reservation SET roomNum=?,Name = ?,Phone = ? ,NumOfPeople = ? ,ReservationDate = ? ,ReservationTime = ? ,UseTime = ? ,Group = ? ,ID = ?where roomNum = ? and ReservationDate = ? and ReservationTime = ? ; 

, die nicht korrekt ist, weil es keinen Raum dazwischen ist? und wo.

Ich habe auch Semikolon entfernt wo Anweisung. Verwenden Sie

String where = " where roomNum = ? and ReservationDate = ? and ReservationTime = ? "; 

statt

String where = "where roomNum = ? and ReservationDate = ? and ReservationTime = ? ;"; 
Verwandte Themen