3

私はそれを行うJavaプログラムを持っています:データベースからデータを取得し、それらをJTableに追加します。

データベースにデータを追加すると、JTable を更新して新しいデータを表示することができず、プログラムを閉じて再度実行する必要があります。

プログラムを更新/再ロードしてデータを表示するにはどうすればよいですか

4

2 に答える 2

2

使用する場合は、メソッドDefaultTableModelを参照してください。それ以外の場合は、新しいモデルを作成してを呼び出します。addRowJTable.setModel(TableModel)

于 2012-09-01T01:26:24.927 に答える
2

わかりました、私はあなたに簡単な解決策を提供します:

package stack;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;


public class Test {
    JTable table = new JTable();

    public void selectFrom(){
        Connection conn = null;
        Statement st = null;
        ResultSet rs = null;
        DefaultTableModel model=(DefaultTableModel)table.getModel();
        int rc= model.getRowCount();
        for(int i = 0;i<rc;i++){
            model.removeRow(0);
        }
        try{
            Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydb","postgres","123");
            st = conn.createStatement();
            rs = st.executeQuery("select * from mytable");
            while(rs.next()){
                //Populate table
            }
        }catch(Exception e){
            e.printStackTrace();
        }finally{
            try {
                rs.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                st.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }

    private void insertInto(){
        Connection conn = null;
        PreparedStatement pst = null;
            try{
                Class.forName("org.postgresql.Driver");
                conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/mydb","postgres","123");
                pst = conn.prepareStatement("INSERT INTO mytable(id,first_column) VALUES(?,?)");
                //Insert into table using pst
                pst.execute();

                selectFrom();
            }catch(Exception e){
                e.printStackTrace();
            }finally{
                try {
                    conn.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                try {
                    pst.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
        }
    }
}
于 2012-09-01T01:17:39.353 に答える