Не могу понять как обновить подключение к базе данных. Есть таблица данные в которую приходят из базы данных (MS SQL SERVER), для добавление новой записи нажимаю кнопку добавить после чего появляется диалоговое окно, в которое я заношу всю необходимую информацию и нажимаю сохранить. Данные введенные в диалоговом окне сохраняются в базе данных, но таблица после закрытия диалогового окна не обновляется. Я испробовал различные варианты но так и не понял как это сделать. Вот мой код Класс Connect Код |
public class Connect { public Connection getConnection(String address,String port,String base, String user, String pasn) throws SQLException{ Connection con; String connectionUrl= "jdbc:sqlserver://"+address+":"+port+";" + "database="+base+";" + "user="+user+";" + "password="+pasn+";"; try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); con = DriverManager.getConnection(connectionUrl); return con; } catch (ClassNotFoundException ex) { Logger.getLogger(ContractorsJInternalFrame.class.getName()).log(Level.SEVERE, null, ex); return null; } }
|
класс ContractorsJInternalFrameКод | public ContractorsJInternalFrame() throws ClassNotFoundException, SQLException { initComponents(); Show_JTable(); } public ArrayList<Contr> contrList() throws ClassNotFoundException{ ArrayList<Contr> contrList = new ArrayList<Contr>(); String path = new File("setting.json").getAbsolutePath(); JSONParser parser = new JSONParser(); try (Reader reader = new FileReader(path)) { JSONObject jsonObject = (JSONObject) parser.parse(reader); log = (String) jsonObject.get("log"); pass = (String) jsonObject.get("pass"); gen = (String) jsonObject.get("gen"); address = (String) jsonObject.get("address"); port = (String) jsonObject.get("port"); user = (String) jsonObject.get("user"); pasn = (String) jsonObject.get("pasn"); base = (String) jsonObject.get("base"); } catch (IOException e) { e.printStackTrace(); } catch (org.json.simple.parser.ParseException ex) { Logger.getLogger(BaseFrame.class.getName()).log(Level.SEVERE, null, ex); } try { Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver"); Connect con = new Connect(); Connection connection = con.getConnection(address, port, base, user, pasn); Statement stmt = connection.createStatement(); ResultSet rs = stmt.executeQuery("SELECT name_contr, email, telephone, manadger FROM Contractors"); Contr contr; while (rs.next()) { contr = new Contr(rs.getString("name_contr"),rs.getString("name_contr"),rs.getString("telephone"),rs.getString("manadger")); contrList.add(contr); } rs.close(); } catch (SQLException ex) { Logger.getLogger(ContractorsJInternalFrame.class.getName()).log(Level.SEVERE, null, ex); } return contrList; } public void Show_JTable() throws ClassNotFoundException{ ArrayList<Contr> contrList = contrList(); model = new DefaultTableModel(); model = (DefaultTableModel) Tab.getModel(); Object row [] = new Object[4]; for(int i = 0; i<contrList.size();i++){ row[0]= contrList.get(i).getName_Contr(); row[1]= contrList.get(i).getEmail(); row[2]= contrList.get(i).getTelephone(); row[3]= contrList.get(i).getManadger(); model.addRow(row); } } public void executeSql (String sql) throws SQLException, ClassNotFoundException{ Connect con = new Connect(); Connection conn = con.getConnection(address,port,base,user,pasn); Statement stmt = conn.createStatement(); stmt.executeUpdate(sql); }
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
new NewDocumentContr(null,closable).setVisible(true); }
|
класс NewDocumentContrКод |
public class NewDocumentContr extends javax.swing.JDialog { public String address; public String port; public String user; public String pasn; public String base; public NewDocumentContr(java.awt.Frame parent, boolean modal) { super(parent, modal); initComponents(); }
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { dispose(); }
private void jToggleButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { ContractorsJInternalFrame ct = new ContractorsJInternalFrame(); String query = "INSERT INTO Contractors (name_contr,short_title,inn,kpp,address,email,manadger,telephone) VALUES ('"+TF1.getText()+"','"+TF2.getText()+"','"+TF3.getText()+"','"+TF4.getText()+"','"+TF5.getText()+"','"+TF6.getText()+"','"+TF7.getText()+"','"+TF8.getText()+"')"; ct.executeSql(query); } catch (ClassNotFoundException ex) { Logger.getLogger(NewDocumentContr.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(NewDocumentContr.class.getName()).log(Level.SEVERE, null, ex); } dispose(); }
private void formWindowClosing(java.awt.event.WindowEvent evt) { }
private void formWindowClosed(java.awt.event.WindowEvent evt) { }
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() { public void run() { NewDocumentContr dialog = new NewDocumentContr(new javax.swing.JFrame(), true); dialog.addWindowListener(new java.awt.event.WindowAdapter() { @Override public void windowClosing(java.awt.event.WindowEvent e) { System.exit(0); } }); dialog.setVisible(true); } }); }
|
Логика работы приложения: 1. На главной форме таблица с отображением информации из базы данных MSSQL 2. При нажатии на кнопку добавить появляется диалоговое окно куда заносится информация и после нажатия кнопки сохранить диалоговое окно закрывается а новая запись отображается в таблице на главной форме. Выручайте не нашел ни в одном примере, перепробовал кучу вариантов но не получается.
|