2017-03-03 3 views
-2

私は予約プログラムを作っています。JDBCエラーです。助けてください

私はMySQL JDBCエラーに直面しています。

以下のコードを実行しました。

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(); 
} 

このコードは以下の構文例外が発生します。 しかし、私は、エラー部分を知らない...

enter image description here

どのように私はこの問題を解決することができますか?

+2

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

を使用してください。あなたが本当にやりたいことですか? – Nurjan

+2

あなたの質問に完全なstacktraceを**テキスト**として含めるようにしてください。テキストで伝えることのできるものにイメージを使用しないでください。 BTW:問題はおそらく、連結後に '?'と 'WHERE'の間にスペースがないことでしょう。 –

答えて

0

文の間にスペースはありません。あなたのコードでは、preparedStatementのSQLは

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

です。間にスペースがないので正しくありません。そして、どこ。

whereステートメントからセミコロンも削除しました。あなたは初めに `sql`変数への2つの割り当てを行う代わりに、

String where = "where roomNum = ? and ReservationDate = ? and ReservationTime = ? ;"; 
関連する問題