2012-05-19 65 views
0

我想在Java中的MySQL語句中將字符串變量記錄到數據庫中。在MySQL語句中傳遞變量

我讀過thisthis但我無法成功。

這裏是我的代碼:

public void registerUser(String userName, String password) { 

    try { 
     String insertQuery = "INSERT INTO Credentials ('11', name, pass) VALUES('11', ?, ?)"; 
     pstmt = connection.prepareStatement(insertQuery); 
     pstmt.setString(2, userName); 
     pstmt.setString(3, password); 
     pstmt.executeUpdate(); 
//   statement.executeUpdate("INSERT INTO Credentials VALUES(3, 'userName', 'password')"); 
    } catch (SQLException e) { 
     e.printStackTrace(); 
    } finally { 
     // close the connection when done 
     try { 
      if (connection != null) { 
       connection.close(); 
      } 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } 
    }//END finally 

}//END registerUser 

正如你所看到的,這個代碼是獲得兩個字符串值,它應該把它們放到數據庫中。但我找不到合適的解決方案。

任何想法?

謝謝。

+0

對我來說這是一個乾淨的解決方案。最好是一系列字符串連接或其他任何東西。 – Zakaria

回答

2

此:

pstmt.setString(2, userName); 
pstmt.setString(3, password); 

需要是:

pstmt.setString(1, userName); 
pstmt.setString(2, password); 

你只設置兩個變量在你的PreparedStatement,所以你需要從1開始計數的制定者使用的整數方法需要與您的語句中的問號匹配,而不是給定SQL字符串的參數列表。

+0

按照你的說法改變它。但是這一次,我得到了一個SQL語法錯誤的String分配,說我的語法錯了,我應該改變它。它出什麼問題了? –

+0

我認爲這個錯誤是指你爲列名設置的'11'。 – Jeremy

+0

將其更改爲:String insertQuery =「INSERT INTO Credentials(11,name,pass)VALUES('11',?,?)」;然後這:String insertQuery =「INSERT INTO Credentials VALUES('11',?,?)」;但沒有運氣。那條線應該如何? –