java.sql.SQLException:参数索引超出范围 - 字符串中的空格



>我正在尝试通过ServletClass中的PreparedStatement更新数据库中的表。它引发java.sql.SQLException:参数索引超出范围(2>参数数,即1(。我想,问题是汽车字符串由更多单词组成,所以它包含空格,但我不知道具体如何解决它。我试图删除准备好的语句中第二个问号周围的两个撇号,但没有帮助。删除引号后,仍然存在以下错误:

java.sql.SQLException:无法使用 executeQuery(( 发出数据操作语句

以下是代码摘录:

private void updateCarAvailability(int value, String car) throws Exception {
Connection conn = null;
PreparedStatement prst = null;
try {
conn = ds.getConnection();
String sql = "update cars set available=? where name='?'";
prst = conn.prepareStatement(sql);
prst.setInt(1, value);
prst.setString(2, car);
prst.executeQuery(sql);
}

解决方案是删除where name='?'上的',所以它应该看起来像update cars set available=? where name=?,并且一旦您使用更新命令,您就应该更改executeexecuteQuery

删除?两边的单引号

String sql = "update cars set available=? where name=?";

它们不是必需的,因为实际值不是作为 SQL 语句的一部分传递的,而是作为绑定参数传递的。并且绑定参数不需要"SQL格式化"。

相关内容

  • 没有找到相关文章

最新更新