当您调用任何一个时,您将收到此错误setXxx()
上的方法PreparedStatement
,而 SQL 查询字符串没有任何占位符?
为了这。
例如这是wrong:
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (val1, val2, val3)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1); // Fail.
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
您需要相应地修复 SQL 查询字符串以指定占位符。
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES (?, ?, ?)";
// ...
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setString(1, val1);
preparedStatement.setString(2, val2);
preparedStatement.setString(3, val3);
注意参数索引以1
你所做的not需要像这样引用那些占位符:
String sql = "INSERT INTO tablename (col1, col2, col3) VALUES ('?', '?', '?')";
否则,您仍然会得到相同的异常,因为 SQL 解析器会将它们解释为实际的字符串值,因此无法再找到占位符。
也可以看看: