亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

JTable 顯示所有記錄(數據),就在一列中?

JTable 顯示所有記錄(數據),就在一列中?

揚帆大魚 2021-11-11 15:53:18
在代碼中,JTable 從具有一個表和兩列的數據庫中檢索所有數據。該程序只是一個最小的示例。數據庫(Javadb)“SOMETABLE”,表“TESTTABLE”,第一列“DATA1”(字符),第二列“DATA2”(字符)。該程序獲取并顯示來自命令行的輸入和記錄。剩下的就在 Gui 上完成了。首先獲取 DATA1 和 DATA2 的輸入,然后單擊保存,然后單擊加載顯示記錄。然后單擊 Del,以顯示 JTable 上的記錄。只需在 GUI 和 CLI 之間切換。但是當我執行程序時,JTable 只在一列中顯示所有數據,而不是兩列?
查看完整描述

1 回答

?
慕容708150

TA貢獻1831條經驗 獲得超4個贊

你的tableView方法毫無意義。為什么要打開兩個數據連接,在同一個表上運行兩個不同的查詢,然后嘗試合并它們?


您還冒著泄漏資源(保持數據庫連接打開)的風險,從長遠來看這不會是健康的。


這個問題的簡單答案是,正確使用 SQL。在盡可能少的語句中從您想要的表中查詢您想要的列。例如...


public void tableView() throws SQLException, ClassNotFoundException {

    Class.forName("org.apache.derby.jdbc.EmbeddedDriver");


    //Create new table model

    DefaultTableModel tableModel = new DefaultTableModel();


    try (Connection con = DriverManager.getConnection("jdbc:derby://localhost:1527/TESTTABLE", "me", "1234")) {

        String sql = "SELECT DATA1, DATA2 FROM ME.SOMETABLE";

        try (PreparedStatement ps = con.prepareStatement(sql)) {

            try (ResultSet rs = ps.executeQuery()) {

                ResultSetMetaData rsmd = rs.getMetaData();

                int columnCount = rsmd.getColumnCount();

                List<String> columnNames = new ArrayList<>(columnCount);

                for (int column = 0; column < columnCount; column++) {

                    columnNames.add(rsmd.getColumnName(column + 1));

                }


                tableModel.setColumnIdentifiers(columnNames.toArray(new Object[columnNames.size()]));


                while (rs.next()) {

                    Object row[] = new Object[columnCount];

                    for (int column = 0; column < columnCount; column++) {

                        row[column] = rs.getObject(column + 1);

                    }

                    tableModel.addRow(row);

                }

            }

        } finally {

            t.setModel(tableModel);

        }

    }

}

還可以查看try-with-resources以更好地管理資源...


查看完整回答
反對 回復 2021-11-11
  • 1 回答
  • 0 關注
  • 253 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號