2017-03-03 42 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

你让两个赋值在开始'sql'变量。这是你真正想做的吗? – Nurjan

+2

请在你的问题中包含完整的stacktrace作为** text **,不要将图像用于可以通过文本传递的内容。顺便说一句:这个问题可能是串联后'''和'WHERE'之间的空白。 –

回答

0

你的陈述之间没有空格。在你的代码中,准备好的语句的SQL是

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

这是不正确的,因为它们之间没有空格?和哪里。

我也从where语句中删除了分号。使用的

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

代替

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