2017-05-17 97 views
0

是y插入語法JSP MySQL的插入錯誤

String add="INSERT INTO time_table VALUES("+coursename+"','"+coursecode+"','"+days+"','"+year+"','"+dep+"','"+time+"','"+hall+"','"+lecturer+"','"+credithours+"')"; 

ERROR

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: 
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '','5','2','2','8','1','9','PA','2')' at line 1 

這就是我收到的錯誤。

+1

你是什麼time_table表結構?如果您未指定列名稱,則預計您將按與數據庫中定義的順序相同的順序傳遞所有列的數據。 – ayip

回答

3

我覺得你的查詢正確的版本是這樣的:

"INSERT INTO time_table VALUES('"+coursename+"','"+coursecode+"','"+days+"','"+year+"','"+dep+"','"+time+"','"+hall+"','"+lecturer+"','"+credithours+"')"; 

你在+coursename+

2

開始忘記'千萬不要用這種方式,可能會導致語法錯誤,OT SQL注入,你必須在使用PreparedStatement代替,例如:

String add = "INSERT INTO time_table VALUES(?, ?, ?, ?, ?,?,?,?,?)"; 

try (PreparedStatement insert = connection.prepareStatement(add)) { 

    insert.setString(1, coursename); 
    insert.setString(2, coursecode); 
    insert.setString(3, days); 
    insert.setString(4, year); 
    insert.setString(5, dep); 
    insert.setString(6, time); 
    insert.setString(7, hall); 
    insert.setString(8, lecturer); 
    insert.setString(9, credithours); 

    insert.executeUpdate(); 
} 

注意如果你的屬性是int或float或date或...在你的表中,那麼你必須使用正確的集合,例如如果year是in,你可以使用insert.setInt(4, year);來代替。


你真正的問題是你查詢你錯過'這裏:

INSERT INTO time_table VALUES('" + coursename + "' 
//----------------------------^ 
+1

其實你們很有幫助。願上帝保佑你。 – Kuges