• Thứ Tư, 16/08/2006 15:59 (GMT+7)

    Đưa các trường csdl vào JTable

    Câu hỏi :
    Lập trình ứng dụng bằng Java, đã kết nối được csdl để lấy ra các trường nhưng không biết cách đưa các trường đó vào một JTable để hiển thị. Xin hướng dẫn. 
     

    Trả lời :
    Muốn hiển thị dữ liệu lên đối tượng JTable, bạn cần biết các phương thức chức năng của đối tượng này. JTable là đối tượng cho phép hiển thị/xử lý dữ liệu ở dạng bảng 2 chiều gồm nhiều hàng, mỗi hàng nhiều cột, tuy nhiên JTable không chứa dữ liệu trực tiếp, nó chỉ chứa đối tượng TableModel và đối tượng TableModel chứa dữ liệu hiển thị. Phương thức để thêm 1 hàng dữ liệu vào TableModel là addrow(). Cụ thể đoạn code Java sau đây cho phép hiển thị các record dữ liệu của 1 table TestDB trong file Access:
     ...
     //import các class cần dùng
     import javax.swing.table.DefaultTableModel;
     import java.util.Vector;
     import javax.swing.JScrollPane;
     import java.sql.*;
     ...
     public class TestDBDlg extends JFrame {
     ...
     //hàm truy xuất và hiển thị các record lên JTable
     public void jbtnStart_actionPerformed(ActionEvent e) {
     //tạo vector chứa tên các cột của Jtable
     Vector rowHeader = new Vector ();
     rowHeader.add ("ho ten");
     rowHeader.add ("nam sinh");
     rowHeader.add ("dia chi");
     //tạo TableModel chứa dữ liệu cho Jtable
     DefaultTableModel model = new DefaultTableModel(rowHeader,0);
     jTable1.setModel(model);
     //tạo các biến cần thiết để truy xuất database
     String newSQL="SELECT * FROM testdb";
     String conStr = "jdbc:odbc:Driver={Microsoft Access Driver (*.mdb)};DBQ=c:\\data\\MyAccess.mdb";
     Connection con;
     try {
     Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
     con = DriverManager.getConnection(conStr,"","");
     Statement stmt = con.createStatement();
     //thực thi câu truy vấn để đọc các record
     ResultSet rs =stmt.executeQuery(newSQL);
     Vector rowData;
     //lặp hiển thị từng record lên JTable
     if (rs != null) while (rs.next()){
     rowData = new Vector() ;
     rowData.add (rs.getString("hoten"));
     rowData.add (String.valueOf(rs.getInt("namsinh")));
     rowData.add (rs.getString("diachi"));
     model.addRow(rowData) ;
     }
     //đóng các đối tượng đã dùng
     rs.close(); stmt.close(); con.close();
     } catch(Exception ex){System.out.println("Error : "+ex);}
     }
     }
     Lưu ý rằng để hàng header của JTable hiển thị, bạn phải thiết kế JTable chứa đối tượng JScrollPane (cho phép cuộn dữ liệu lên/xuống).
     
    Chuyên mục: Windows