第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

從 Java ResultSet 返回值時出現(xiàn)的問題

從 Java ResultSet 返回值時出現(xiàn)的問題

慕森卡 2021-11-17 10:32:41
出于某種原因,我只返回 1 個條目,但我有 2 個待處理的用戶。public Set getApplicationStatus() {        DbConn connector = new DbConn();        String Pending = "Pending";        Connection connection = connector.getConnection();        try {            Statement stmt = connection.createStatement();            ResultSet rs = stmt.executeQuery("SELECT * FROM `person` WHERE `Department` = '"+Pending+"'");            Set persons = new HashSet();                        while (rs.next()) {                Person person = extractUserFromResultSet(rs);                persons.add(person);               }            System.out.println(persons.size());            return persons;        } catch (SQLException ex) {            ex.printStackTrace();        }        return null;如果我直接在數(shù)據(jù)庫上運行查詢,我會得到兩個帳戶,但如果我通過,ResultSet我似乎只得到最后一個。public static Person p = new Person();public static ArrayList<Person> Users = new ArrayList();public boolean WriteTOfile() throws IOException {    try (Writer writer = new FileWriter("Output.json")) {        Gson gson = new GsonBuilder().create();        Users = p.getApplicationStatus();        for (Person User : Users) {            String json = gson.toJson(User);            writer.write(json);        }    }    return true;}當我寫入我的 Json 文件時,它會將最后一行添加兩次? public ArrayList<Person> getApplicationStatus() {    DbConn connector = new DbConn();    String Pending = "Pending";    Connection connection = connector.getConnection();    try {        Statement stmt = connection.createStatement();        ResultSet rs = stmt.executeQuery("SELECT * FROM `person` WHERE `Department` = '"+Pending+"'");        ArrayList persons = new ArrayList();        while (rs.next()) {            Person person = extractUserFromResultSet(rs);            persons.add(person);           }        //System.out.println("Persons Size: " + persons.size());        return persons;    } catch (SQLException ex) {        ex.printStackTrace();    }    return null;}
查看完整描述

1 回答

?
幕布斯6054654

TA貢獻1876條經(jīng)驗 獲得超7個贊

我不確定你在哪里聲明了提取方法中的人。


但是在方法中本地聲明一個應(yīng)該可以解決手指交叉的問題。


所以我認為發(fā)生的事情是你宣布了一個全球性的人。你正在設(shè)置字段。所以有一個 person 對象,你只是在改變它的細節(jié)。當您將其添加到 arraylist 時,您將添加對同一個人的引用。所以最后你添加了 3 個對同一個 person 對象的引用。該 person 對象已將其字段設(shè)置為 db 中的最后一個條目。我希望這是有道理的。


我得出這個結(jié)論的原因是當你打印這個人時,我讓你在 rs.next 循環(huán)中做的 println 打印相同的引用。進行下面的更改后,您將看到引用發(fā)生了變化。因為您每次都創(chuàng)建一個新人并返回該新人對象,然后將對該對象的引用添加到數(shù)組列表中。


private Person extractUserFromResultSet(ResultSet rs) throws SQLException { 


    // add this line below

    Person person = new Person();


    person.setId(rs.getInt("ID"));

    person.setFName(rs.getString("FName")); 

    person.setLName(rs.getString("LName")); 

    person.setDOB(rs.getString("DOB")); 

    person.setDepartment(rs.getString("Department")); 

    person.setLocation(rs.getString("Location")); 

    person.setCellNr(rs.getString("Cellnr")); 

    person.setUsername(rs.getString("Username")); 

    person.setPassword(rs.getString("Password"));

    return person;

}


查看完整回答
反對 回復(fù) 2021-11-17
  • 1 回答
  • 0 關(guān)注
  • 249 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號