Java 获取列表<;客户>;在索引值中添加到oracle数据库

Java 获取列表<;客户>;在索引值中添加到oracle数据库,java,Java,请看下面的java源代码,我从oracle数据库索引中获得了地址值。 但是,这是索引错误代码。我找不到错误 public List<Customer> selByAddress(String address) { List<Customer> list = new ArrayList<>(); Connection conn = null; PreparedStatement pstmt = null; ResultSet

请看下面的java源代码,我从oracle数据库索引中获得了地址值。
但是,这是索引错误代码。我找不到错误

public List<Customer> selByAddress(String address) {

    List<Customer> list = new ArrayList<>();

    Connection conn = null;
    PreparedStatement pstmt = null;
    ResultSet rs = null;

    try {

        String query = "select id, name, password, age, address from customer_tb where address = ? ";

        conn = factory.createConnection();
        pstmt = conn.prepareStatement(query);

        pstmt.setString(5, address);
        rs = pstmt.executeQuery();

        while(rs.next()) {
            Customer ct = new Customer();
            ct.setId(rs.getString("id"));
            ct.setPasswd(rs.getString("passwd"));
            ct.setName(rs.getString("name"));
            ct.setAge(rs.getInt("age"));
            ct.setAddress(rs.getString("address"));

            list.add(ct);
        }

    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        JdbcUtils.closeResource(conn, pstmt, rs);
    }
    return list;
}
公共列表选择地址(字符串地址){
列表=新的ArrayList();
连接conn=null;
PreparedStatement pstmt=null;
结果集rs=null;
试一试{
String query=“从客户_tb中选择id、姓名、密码、年龄、地址,其中地址=?”;
conn=factory.createConnection();
pstmt=conn.preparest陈述(查询);
pstmt.setString(5,地址);
rs=pstmt.executeQuery();
while(rs.next()){
客户ct=新客户();
ct.setId(rs.getString(“id”);
ct.setPasswd(rs.getString(“passwd”);
ct.setName(rs.getString(“name”);
ct设置(rs.getInt(“年龄”));
ct.setAddress(rs.getString(“地址”);
列表。添加(ct);
}
}捕获(SQLE异常){
e、 printStackTrace();
}最后{
JdbcUtils.closeResource(conn、pstmt、rs);
}
退货清单;
}

您可能需要进一步研究一下Prepare语句。您对以下代码有问题:

pstmt.setString(5, address);
当您的查询只有一个通配符(?)时,您正在尝试将字符串设置为第五个通配符(它不存在)。将其更改为:

pstmt.setString(1, address);

但问题是什么?你有例外吗?结果为空?这是错误代码。java.sql.SQLException:无效列索引在一个位置中包含
password
,在另一个位置中包含
passwd
,这对该程序来说也不是好兆头。请保持静止,,,但是,无法打印到java地址值。我已更改语法(密码为passw)。无法检查它。