Java SE, DAO, MySql, Swing

291
02 июня 2017, 12:03

Всем привет. Делаю дэскттопное приложение на виндоус 10 на старой библиотеке SWING. Все работает, нормально. Но просто решил спросить, нормально ли это.У меня есть несколько таблиц в MySQL, в одном из JFrame у меня появляются две таблицы на скролах, я ,к примеру ,выбираю из одной таблицы что то , и у меня считывает id этой таблицы и выводит все в JTextArea вот таким вот способом.

отрывок из ДАО:

private PreparedStatement psSelect = null;
private void selectVitPS(String sql) {
    if (psSelect != null) {
        try {
            psSelect = db.getCn().prepareStatement(sql);
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}
public String select(int id) {
    ResultSet rs = null;
    String s = null;
    List<Vitamins> list = new ArrayList<>();
    try {
        selectVitPS("SELECT * FROM vitamins WHERE id_vitamin =" + id);
        rs = psSelect.executeQuery();
        while (rs.next()) {
            Vitamins v = new Vitamins();
            v.setVitamin(rs.getString("vitamin"));
            list.add(v);
        }
        s = list.toString();
    } catch (SQLException e) {
        e.printStackTrace();
    } finally {
        if (psSelect != null) {
            try {
                psSelect.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            if (rs != null) {
                try {
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    return s;
}

Отрывок из фрейма : происходит по нажатию на кнопку :

  private JTextArea area;
  public void action(){
  update.addActionListener(new ActionListener() {
        @Override
        public void actionPerformed(ActionEvent e) {
            if(table1.getSelectedRow() != -1){
                DaoVitamins dv = new DaoVitamins();
                area.setText(dv.select(Integer.valueOf(String.valueOf(table1.getValueAt(table1.getSelectedRow(), 0)))));
                }
            if(table2.getSelectedRow() != -1){
                         DaoDiscriptions dd = new DaoDiscriptions();
                area.setText(dv.select(Integer.valueOf(String.valueOf(table2getValueAt(table1.getSelectedRow(), 0)))));
            }

все выводит что мне надо, но нормально ли так делать ? нужен совет. Спасибо.

Answer 1

DAO оставил без изменений, изменил метод update.addActionListener(new ActionListener(){} в фрейме, а именно изменил

    if(table1.getSelectedRow() != -1){
    DaoVitamins dv = new DaoVitamins();
    area.setText(dv.select(Integer.valueOf(String.valueOf(table1.getValueAt(table1.getSelectedRow(), 0)))));
    }
    if(table2.getSelectedRow() != -1){
             DaoDiscriptions dd = new DaoDiscriptions();
    area.setText(dv.select(Integer.valueOf(String.valueOf(table2getValueAt(table1.getSelectedRow(), 0)))));
}

на

    if (table1.getSelectedRow() != -1) {
        DaoVitamins dv = new DaoVitamins();
        area.append(
                dv.select(Integer.valueOf(String.valueOf(table1.getValueAt(table1.getSelectedRow(), 0)))));
        area.append("\n");
        updateTable();
    }
    if (table2.getSelectedRow() != -1) {
        DaoDiscriptions dd = new DaoDiscriptions();
        area.append(
                dd.select(Integer.valueOf(String.valueOf(table2.getValueAt(table2.getSelectedRow(), 0)))));
        area.append("\n");
        updateTable();
    }
}

метод updateTable() прпосто обновляет содержимое таблицы.

READ ALSO
sql запрос в базу данных

sql запрос в базу данных

Допустим, есть таблица:

236
Создание CMS на php [требует правки]

Создание CMS на php [требует правки]

Здравствуйте! Нужно создать небольшое CMS, только пока не могу понять все аспектыПонимаю что можно создать панель администратора и через него...

296
Создание умного опроса на php

Создание умного опроса на php

Как создать умный опрос, на основании ответа которых будет подставлять следующий нужный вопрос, тем самым в конце опроса человек узнает свою...

250
Не подгружается драйвер QMYSQL

Не подгружается драйвер QMYSQL

Есть одна проблемаВ Qt 5

380