2016-08-24 88 views
1

我想使用java的mysql庫,但我有問題使用準備好的語句。我不知道我錯過了什麼。以下是我用MYSQL錯誤試圖使用準備好的語句。Java MYSQL Prepared Statement Error:檢查在'?'附近使用的語法在第1行

String query = "SELECT id, clicks FROM mailer.links WHERE campaign_id=?"; 
    try { 

     preparedStatement = connect.prepareStatement(query); 
     preparedStatement.setInt(1, campaignId); 
     preparedStatement.execute(); 
     Statement st = connect.createStatement(); 


     // execute the query, and get a java resultset 
     ResultSet rs = st.executeQuery(query); 

我收到以下錯誤:

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 '?' at line 1 

它的工作原理,如果我做 「CAMPAIGN_ID =」 + CAMPAIGNID,但它是一個SQL注入等待發生。

回答

2

試試這個

ResultSet rs = preparedStatement.executeQuery();

+0

工作。謝謝。 – applecrusher

0

PreparedStatement方法executeQuery()本身返回ResultSet對象

所以這個分配到ResultSet對象

ResultSet rs = preparedStatement.executeQuery(); 

錯誤:

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 '?' at line 1 

而且發生這種錯誤,因爲當

ResultSet rs = st.executeQuery(query); 

這個語句的執行不能在?運營商找到任何價值。 所以你的查詢仍然是這個"SELECT id, clicks FROM mailer.links WHERE campaign_id=?";,這會引發一個MySQL語法異常。

相關問題