Mình viết một chương trình quản lý sinh viên có cơ sở dữ liệu tạo bằng Microsoft Access như hình dưới:
Click vào hình ảnh để lấy hình ảnh lớn

Tên:		Untitled.jpg
Lần xem:	7
Size:		84.8 KB
ID:		24457
Chương trình của mình gồm có một bảng để hiển thị dữ liệu,và có nút Insert để chèn thêm một trường vào csdl,rồi cập nhật lại bảng.
Nhưng mỗi lần ấn vào nút Insert bảng lại không cập nhật mặc dù trong csdl vẫn cập nhật trường này vào.
Sau đó chạy lại chương trình thì bản ghi cuối cùng vừa mới được thêm vào csdl lại được hiển thị
lên trên cùng của bảng.Các bạn giúp mình sửa lỗi này với.

Đây là giao diện ban đầu:
Click vào hình ảnh để lấy hình ảnh lớn

Tên:		1.jpg
Lần xem:	7
Size:		31.3 KB
ID:		24458

Đây là giao diện sau khi ấn nút Insert:
Click vào hình ảnh để lấy hình ảnh lớn

Tên:		2.jpg
Lần xem:	5
Size:		26.5 KB
ID:		24459

Đây là giao diện sau khi chạy lại chương trình:
Click vào hình ảnh để lấy hình ảnh lớn

Tên:		3.jpg
Lần xem:	6
Size:		33.7 KB
ID:		24460



Còn đây là code:

Java Code:
  1. package quochuy.ketnoicsdl;
  2.  
  3. import javax.swing.*;
  4. import javax.swing.table.DefaultTableModel;
  5.  
  6. import java.awt.*;
  7. import java.sql.*;
  8. import java.awt.event.*;
  9. import java.util.*;
  10. public class ConnectCsdl extends JFrame implements ActionListener{
  11.     private JLabel titleLb;
  12.     private JButton dBn,iBn;
  13.     private JFrame f;
  14.     private JPanel np,cp;
  15.     private Vector cName = new Vector();
  16.     private Vector rData = new Vector();
  17.     private JTable table;
  18.     private Connection con;
  19.     private Statement state;
  20.     private DefaultTableModel dtm;
  21.     private JScrollPane scp;
  22.     public ConnectCsdl() throws ClassNotFoundException,SQLException{
  23.         f = new JFrame();
  24.         f.setTitle("Quan Ly Sinh Vien");
  25.         f.setSize(600,500);
  26.        
  27.         //Ket noi csdl
  28.         //Naptrinh dieu khien
  29.         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
  30.         //tao doi tuong ket noi
  31.         con = DriverManager.getConnection("jdbc:odbc:QuanLySinhVien","login","password");
  32.         //tao doi tuong statement
  33.         state = con.createStatement();
  34.         reload();
  35.        
  36.         //tao north panel chua table
  37.         np = new JPanel();
  38.         dtm = new DefaultTableModel(rData,cName);
  39.         table = new JTable(dtm);
  40.         scp = new JScrollPane(table);
  41.         np.add(scp);
  42.         f.add(np,BorderLayout.NORTH);
  43.        
  44.         //tao center panel chua cac nut insert and delete button
  45.         cp = new JPanel();
  46.         titleLb = new JLabel("Chon Cong Viec Ban Muon Thuc Hien");
  47.         cp.add(titleLb);
  48.         dBn = new JButton("Delete");
  49.         iBn = new JButton("Insert");
  50.         cp.add(dBn);
  51.         cp.add(iBn);
  52.         f.add(cp,BorderLayout.CENTER);
  53.        
  54.         f.setVisible(true);
  55.         //bat su kien cho cac nut delete va insert
  56.         dBn.addActionListener(this);
  57.         iBn.addActionListener(this);
  58.     }  
  59.     public void actionPerformed(ActionEvent event){
  60.         if(event.getSource() == dBn){
  61.         //  delete();
  62.         }
  63.         else
  64.             try{
  65.                 insert();
  66.             }
  67.             catch(Exception e){System.out.println("Loi tai ham insert");}
  68.     }
  69.    
  70. //ham insert de chen mot record vao table  
  71.     public void insert()throws ClassNotFoundException,SQLException{
  72.        
  73.         String sql = "INSERT INTO SinhVien(Id,Ten,Khoa,NgaySinh) VALUES('7','Mun Dau Den','cntt','13/7/1993')";
  74.         state.executeUpdate(sql);
  75.         reload();
  76.         //cap nhat lai bang
  77.         dtm.fireTableDataChanged();
  78.         state.close();
  79.     }
  80. //truy van vao csdl de nap thong tin vao columname va row data
  81.     public void reload()throws ClassNotFoundException,SQLException{
  82.         //xoa cac gia tri co trong cName va rData
  83.         cName.clear();
  84.         rData.clear();
  85.         String sql = "Select * from SinhVien";
  86.         ResultSet rs = state.executeQuery(sql);
  87.         ResultSetMetaData rsmd = rs.getMetaData();
  88.        
  89.         //lay so cot
  90.         int count = rsmd.getColumnCount();
  91.         int i;
  92.         cName = new Vector(count);
  93.         rData = new Vector(20,20);
  94.         //nap ten cac cot vao cName
  95.         for(i=1;i<=count;i++)
  96.             cName.add(rsmd.getColumnLabel(i));
  97.  
  98.         //Nap gia tri tai moi dong vao row ,roi nap tat cac cac dong vao rData
  99.         while(rs.next()){
  100.             Vector row = new Vector(count);
  101.             for(i=1;i<=count;i++)
  102.                 row.add(rs.getObject(i));
  103.             rData.add(row);
  104.         }
  105.     }
  106.    
  107.     public static void main(String args []){
  108.         try{
  109.             ConnectCsdl cc = new ConnectCsdl();
  110.         }catch(Exception e){System.out.println("Loi thao tac csdl tai reload");}
  111.     }
  112. }