2014-12-24 126 views
-3

代碼:在參數中準備語句?

 java.sql.PreparedStatement pstmt=null; 
     String sql = "UPDATE Person SET address = ? WHERE name = ? "; 
     pstmt=thecon.prepareStatement(sql); 
     String addVar= JOptionPane.showInputDialog("Enter the new address"); 
     String nameVar=JOptionPane.showInputDialog("Enter the Name"); 
     pstmt.setString(1 , addVar); 
     pstmt.setString(2, nameVar); 


     // Tell affected no of rows in table 
     int num = pstmt.executeUpdate(sql); 
     //Step 7: Process the results of the query 
     System.out.println(num + " records updated"); 
     thecon.close(); 
    } catch (SQLException e) { 
     System.out.println("sql problem: "+e); 
    } 

例外:

SQL問題:com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException:您的SQL語法錯誤;檢查與您的MySQL服務器版本相對應的手冊,以便在''附近使用正確的語法'? WHERE name =?'在第1行

+2

有問題嗎? – philshem

+0

什麼是SQL語法的問題? –

+1

您正在使用錯誤的'executeUpdate'方法,您應該使用沒有字符串參數的方法。 –

回答

-1

你可以試試這個: String sql =「UPDATE Person SET address =?WHERE name =?;」;

+0

我嘗試但仍然是相同的錯誤(您有一個SQL語法錯誤;檢查手冊,對應於您的MySQL服務器版本的正確的語法使用附近'?WHERE名稱=?'在第1行) –

+0

SQL查詢是所有好,那裏我的SQL語法是不區分大小寫的,所以我沒有看到任何問題。你能否嘗試從人身上找到選擇的地址,姓名並看看你得到了什麼? – krmanish007

+0

分號不需要(甚至不鼓勵),因爲您不需要JDBC中的語句分隔符(按規範 - 只執行單個語句)。 –