3

データベースでクエリを作成し、結果を結果セットに入れます。結果セットには 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 つは文字列で、最後の 1 つは ArrayList オブジェクトです。私の結果セット rs には Customer オブジェクトが含まれているため、結果セットからこのリストを取得したいと考えています。つまり、この特定のユーザーのアカウントです。

では、結果セットでこの ArrayList を取得するにはどうすればよいですか? 誰でも助けることができますか?

ありがとう

4

1 に答える 1