首页 > 解决方案 > 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) 方法,它工作正常。

标签: javajdbcucanaccess

解决方案


推荐阅读