Làm thế nào để load data từ Oracle Database vào JTable

Trước hết, cái JTable của bạn phải được đặt trong một cái JScrollPane trước đã nhé.... Vì khi đặt trong JScrollPane thì cái Column Header nó mới hiện ra trên JTable được..... Giờ thì bắt đầu các bước load dữ liệu lên JTable.

Phần 1:

LấyData từ DB - Mỗi người mỗi khác :D ở đây mình dùng Oracle DB
private List getStudentsFromDB(){
        try {
            OracleDataSource source = new OracleDataSource();
            source.setURL("jdbc:oracle:thin:@localhost:1521/XE");
            Connection con = source.getConnection("sa", "123456");
            String sql = "SELECT StudentID, StudentName, Age, Address FROM Student";
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            List list = new ArrayList();
            while (rs.next()) {
                Student student = new Student(rs.getString("StudentID"), rs.getString("StudentName"), rs.getString("Age"), rs.getString("Address"));
                list.add(student);
            }
            return list;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }


Phần 2: Đưa Data lên JTable

Bước 1: Tạo mới một DefaultTableModel và khởi tạo nó trong Constructor
private DefaultTableModel model;

public Demo() {
model = new DefaultTableModel();
}

Bước 2: Tạo mới một Vector dùng để chứa Column Header và add Vector đó vào model để lát nữa show header
/* Tạo mới Vector chứa Column Header */
Vector column = new Vector();
column.add("Student ID");
column.add("Student Name");
column.add("Age");
column.add("Address");
/* Set Column Header lên DefaultTableModel */
model.setColumnIdentifiers(column);


Kết quả bước 2: Hình demo là thế. Chỉ khi nào xong bước 4 bạn mới thấy đc cái hình này.

Làm thế nào để load data từ Oracle Database vào JTable

Bước 3: Lấy từng row Data từ CSDL và đưa từng thông tin vào Vector
List list = getStudentsFromDB();
        for (int i = 0; i < list.size(); i++) {
            Student student = (Student)list.get(i);
            Vector row = new Vector();
            row.add(student.getStudentID());
            row.add(student.getStudentName());
            row.add(student.getAge());
            row.add(student.getAddress());
            model.addRow(row);
        }    

Bước 4 (Quan trọng): Set model cho Table - Không có bước này thì coi như từ đầu đến giờ làm hok có ý nghĩa gì.
tblStudent.setModel(model); 

Kết quả cuối cùng:  

Làm thế nào để load data từ Oracle Database vào JTable 001

Tóm tắt: 

Để Load đc data lên JTable chúng ta cần phải làm những việc sau:
  • Tạo DefaultTableModel cho JTable 
  • Tạo một Vector chứa thông tin Column Header 
  • Tạo Vector để chứa thông tin từng Row trên JTable 
  • Add Column và Row vào Model 
  • Set Model cho JTable 

FULL CODE:

package demo;

import java.awt.Dimension;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import java.util.Vector;

import javax.swing.JFrame;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;
import javax.swing.table.TableColumn;

import oracle.jdbc.pool.OracleDataSource;

public class Demo extends JFrame{
    private JTable tblStudent;
    private DefaultTableModel model;
    public Demo() {
        // TODO Auto-generated constructor stub
        /* START - Nếu dùng Netbeans thì không cần quan tâm đến đoạn này làm gì */
        tblStudent = new JTable();
        tblStudent.setPreferredSize(new Dimension(500,500));
        this.add(new JScrollPane(tblStudent));
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.pack();
        this.setVisible(true);
      /* END - Nếu dùng Netbeans thì không cần quan tâm đến đoạn này làm gì */

        loadDataIntoJTable();  //đưa column name và data row lên JTable
    }

    private void loadDataIntoJTable(){
        model = new DefaultTableModel();
        //Set Column Title
        Vector column = new Vector();
        column.add("Student ID");
        column.add("Student Name");
        column.add("Age");
        column.add("Address");
        model.setColumnIdentifiers(column);
        List list = getStudentsFromDB();
        for (int i = 0; i < list.size(); i++) {
            Student student = (Student)list.get(i);
            Vector row = new Vector();
            row.add(student.getStudentID());
            row.add(student.getStudentName());
            row.add(student.getAge());
            row.add(student.getAddress());
            model.addRow(row);
        }

        tblStudent.setModel(model);
    }

    private List getStudentsFromDB(){
        try {
            OracleDataSource source = new OracleDataSource();
            source.setURL("jdbc:oracle:thin:@localhost:1521/XE");
            Connection con = source.getConnection("sa", "123456");
            String sql = "SELECT StudentID, StudentName, Age, Address FROM Student";
            PreparedStatement pst = con.prepareStatement(sql);
            ResultSet rs = pst.executeQuery();
            List list = new ArrayList();
            while (rs.next()) {
                Student student = new Student(rs.getString("StudentID"), rs.getString("StudentName"), rs.getString("Age"), rs.getString("Address"));
                list.add(student);
            }
            return list;
        } catch (SQLException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    public static void main(String[] args) {
        new Demo();
    }
}



Source: http://congdongjava.com

No comments:

Post a Comment