2017-05-07 35 views
1

我已經寫了一個準備好的聲明,但是它在?處給出了一個語法錯誤。我無法理解什麼wrong.It應該通過一部電影的名字,並得到結果作爲電影爲什麼我會爲預處理語句獲得語法錯誤?

stmt=getConnection().createStatement(); 
     String sql="SELECT directors FROM moviedata WHERE moviedata.title = ?"; 
     PreparedStatement preparedStatement=conn.prepareStatement(sql); 
     preparedStatement.setString(1,movieName); 
     rs=preparedStatement.executeQuery(sql); 

回答

4

董事的問題是在這裏:

rs=preparedStatement.executeQuery(sql); 

你不應該通過SQL StringexecuteQuery(),因爲預準備語句已經包含SQL String?佔位符被替換爲值movieName

用途:

rs=preparedStatement.executeQuery(); 
+0

在這個例子中,我看到他們實際上把sql放在執行查詢中,反正現在解決了它:) @Eran – yacky

1

的問題是不使用PreparedStatement的>因爲準備語句對象持有的SQL查詢。爲什麼不必要地將Sql字符串傳遞給executequery()方法。 PreparedStatement preparedstatement=conn.PrepareStatement(sql)。這包含sql查詢以及調用executequery()方法時查詢被評估。