java - Java UCanAccess JDBC Preparedstatement 参数索引越界异常
问题描述
我正在尝试从 Acess-Database 中创建一个简单的 Select 语句。我想选择列名称包含搜索名称的所有行。我将 LIKE 运算符与通常的 % 通配符一起使用 *-Wildcard,因为 Access 与 *. 但是,如果我想执行程序,它会抛出异常Invalid argument in JDBC call: parameter index out of range: 1
。我尝试调试,似乎在创建准备好的语句时,?sql-String 中的转换为 _ 并且 PreparedStatement 不再有参数。有谁知道我该如何解决这个问题?
这是完整的代码:
List<String> names = new ArrayList<String>();
String prepStmtString = "SELECT Name FROM Kunde WHERE Name LIKE \"*?*\"";
try {
PreparedStatement prepStmt = conn.prepareStatement(prepStmtString);
prepStmt.setString(1, name);
ResultSet rs = prepStmt.executeQuery();
while(rs.next()) {
names.add(rs.getString("Name"));
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return names;
}
与数据库的连接工作正常,我也尝试使用普通的 Statement 和 executeQuery(String sql) 方法,它工作正常。
解决方案
推荐阅读
- php - Symfony 3.4 - 安装 FOSUserBundle 时服务不存在
- php - PostgreSQL 表行在更新时移到底部
- algorithm - 使用 SIMD 找出两个元素的最大差异
- solaris - Solaris11 包装
- rust - 从 Box 切换
到 Rc 对于类似 Scheme 的 Cons 列表无法编译 - c - C Getopts:管理所有收到的选项和可选的 optargs
- python - Python Turtle 用正方形画圆
- angular - Angular 6 保护即使在不应该的情况下也会阻塞
- qt - 如何将背景颜色设置为行?
- mysql - MySQL 可预测的随机排序