我在我的数据库中进行查询并将结果放在结果集中。我在结果集中有8个属性,其中前7个是字符串,所以我可以通过编写来获取它们:
rs.getString(1), rs.getString(2) ... etc
然后在索引8处,我有一个ArrayList。我尝试接受它并使用其中的值创建新列表但我无法做到。这是我的代码,您可以在注释掉的行中看到我在那里尝试的内容:
public void loginCheck() {
try {
Bank bank = Bank.getBank();
ResultSet rs = queryDatabase();
if (rs.next()) {
// List<Account> a = (List<Account>) rs.getObject(8, ArrayList); DOES NOT WORK
Customer currentCustomer = new Customer(rs.getString(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getString(5), rs.getString(6), rs.getString(7));
addToSession(currentCustomer);
rs.close();
DBConnect.disconnect(con);
FacesContext.getCurrentInstance().getExternalContext().redirect("main.xhtml");
} else {
rs.close();
DBConnect.disconnect(con);
}
} catch (SQLException | IOException e) {
}
}
private ResultSet queryDatabase() {
con = DBConnect.connect();
try {
PreparedStatement checkDB = (PreparedStatement) con.prepareStatement("SELECT * FROM users where identityNumber = ? AND password = ?");
checkDB.setString(1, identityNumber);
checkDB.setString(2, password);
ResultSet res=(ResultSet) checkDB.executeQuery();
return res;
} catch (Exception e) {
return null;
}
}
编辑:我有一个具有8个属性的Customer对象,其中前7个是字符串,最后一个是ArrayList对象。我的结果集rs包含一个Customer对象,所以我想从结果集中获取这个列表,我的意思是这个特定用户的帐户
那么如何才能在结果集中获得这个ArrayList?有人可以帮忙吗?
由于
答案 0 :(得分:2)
在您评论的代码中,您缺少 .class ,它应该是:
List<Account> a = (List<Account>) rs.getObject(8, ArrayList.class);