Как загрузить список объектов из базы данных, используя jdbc - PullRequest
0 голосов
/ 26 декабря 2018

Я пытаюсь научиться сохранять и загружать данные в / из баз данных и столкнулся с проблемой.На данный момент у меня есть класс с именем Component, который имеет следующее:

public class Componente {

    private int code;
    private String description;
    private double price;
    private int quantity;
    private List<Componente> previous;
    private List<Componente> incompatible;

У меня также есть класс с именем Storage, который имеет следующее:

public class Storage {

    private List<Component> stock;

Естьдругие классы, где я смог создать методы сохранения и загрузки, потому что у них были только простые переменные, такие как String или Integers, но для них я полностью потерян, потому что не только есть списки, которые нужно сохранить / вернуть, но также и рекурсивные списки.То, что я пока имею для Компонентов:

public void save(Component c)throws SQLException{
    Connection con = null;

    con = Connect.connect();
    PreparedStatement st = con.prepareStatement("INSERT INTO component 
    VALUES(?,?,?,?,?,?)");

    st.setInt(1, c.getCode());
    st.setString(2, c.getDescription());
    st.setDouble(2, c.getPrice());
    st.setInt(2, c.getQuantity());
    //Missing the last 2 variables
    st.executeUpdate();

    con.close();
}

public Component load(Object key) throws SQLException {
    Component c = null;
    Connection con = Connect.connect();

    PreparedStatement ps = con.prepareStatement("select * from component 
    where code = ?");
    ps.setInt(1, code);
    ResultSet rs = ps.executeQuery();

    if(rs.next()){
        c = new 

       Component(rs.getInt("code"),rs.getString("description"),
       rs.getDouble("price"),rs.getInt("quantity"));
    }
    con.close();

    return c;
}

Есть исключения, которые нужно обработать, но в этой части я думаю, что я хорош.Также, если я смогу сделать это для Компонентов, я, вероятно, смогу настроить его и для Хранилища, так что сейчас я думаю, что этот вопрос уже достаточно велик.

1 Ответ

0 голосов
/ 26 декабря 2018

Исходя из того, что я понял из вашего вопроса.Возможно, вам придется сделать тип функции загрузки return чем-то вроде списка;создайте свой список в блоке rs.next() и вернитесь, когда закончите.

 public List<Component> load(Object key) throws SQLException { 
     List<Component> componentList= new ArrayList<Component>();
    Component c = null;
    Connection con = Connect.connect();

    PreparedStatement ps = con.prepareStatement("select * from component 
    where code = ?");
    ps.setInt(1, code);
    ResultSet rs = ps.executeQuery();

    if(rs.next()){
        c = new Component(rs.getInt("code"),rs.getString("description"),
                          rs.getDouble("price"),rs.getInt("quantity"));
        componentList.add(c);
    }
    con.close();

    return componentList;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...