在MySQL语句中传递变量

时间:2012-05-19 16:27:42

标签: java mysql variables

我正在尝试将String变量记录到Java中的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

如您所见,此代码获取两个String值,它应该将它们放入数据库中。但我找不到合适的解决方案。

有什么想法吗?

感谢。

1 个答案:

答案 0 :(得分:2)

此:

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

需要:

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

您只在PreparedStatement中设置两个变量,因此需要从1开始计数。 setter 方法中使用的整数需要与语句中的问号匹配,而不是给定SQL字符串的参数列表。