Ở bài viết trước tôi đã hướng dẫn các bạn kết nối và lấy được danh sách từ bảng trong MySQL. Trong phần này tôi sẽ tiếp tục hướng dẫn các bạn xử lý các chức năng thêm mới, hiển thị chi tiết, sửa và xóa thông tin với MySQL bằng JDBC trong lập trình java.
Xây dựng các hàm chức năng
Chúng ta sẽ tiếp tục xây dựng các hàm xử lý công việc trong lớp SinhVienBusiness.java như sau:
Hàm thêm mới thông tin sinh viên
Hàm này nhằm mục đích thực thi một câu lệnh insert để thêm mới thông tin vào trong bảng với dữ liệu lấy động từ giao diện thêm mới sinh viên được người dùng nhập vào như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/** * Hàm thêm mới thông tin sinh viên * * @param objSV, Đối tượng sinh viên cần thêm vào hệ thống * @return True nếu thành công, False nếu thất bại */ public boolean themMoi(SinhVien objSV) { Connection conn = null; try { //Khởi tạo kết nối conn = DataProvider.ketNoi(); //Tạo công việc String strInsert = "Insert into SinhVien(MaSV, HoTen, DienThoai, Email, DiaChi," + "MaKhoa, GioiTinh, NgaySinh) values(?, ?, ?, ?, ?, ?, ?, ?)"; PreparedStatement comm = conn.prepareStatement(strInsert); //Gán giá trị cho các tham số comm.setString(1, objSV.getMaSV()); comm.setString(2, objSV.getHoTen()); comm.setString(3, objSV.getDienThoai()); comm.setString(4, objSV.getEmail()); comm.setString(5, objSV.getDiaChi()); comm.setString(6, objSV.getMaKhoa()); comm.setInt(7, objSV.getGioiTinh()); comm.setDate(8, new Date(objSV.getNgaySinh().getTime())); //Thực hiện công việc return comm.executeUpdate() > 0; } catch (SQLException ex) { System.err.println("Có lỗi không thêm được thông tin. Chi tiết: " + ex.getMessage());; } finally { try { //Đóng kết nối if (conn != null) { conn.close(); } } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } } return false; } |
Hàm lấy thông tin chi tiết của sinh viên
Mục đích của hàm này sử dụng để lấy thông tin chi tiết của một sinh viên trả về kiểu đối tượng với đầu vào là mã sinh viên cần lấy để hiển thị lên giao diện sửa thông tin sinh viên trước khi thay đổi thông tin mới với nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
/** * Hàm lấy thông tin chi tiết của sinh viên * * @param maSV, mã sinh viên cần lấy thông tin * @return Đối tượng chứa thông tin chi tiết của sinh viên */ public SinhVien layChiTiet(String maSV) { //Khai báo 1 đối tượng SinhVien objSV = null; //Khai báo kết nối Connection conn = null; try { conn = DataProvider.ketNoi(); //Khai báo 1 công việc String strSQL = "Select MaSV, HoTen, DienThoai, Email, DiaChi, MaKhoa, " + "GioiTinh, NgaySinh " + " from SinhVien where MaSV = '" + maSV + "'"; //SQL Injection Statement comm = conn.createStatement(); //Thực hiện và trả về kết quả ResultSet rs = comm.executeQuery(strSQL); //Đọc từng dòng thông tin while (rs.next()) { //Khởi tạo đối tượng objSV = new SinhVien(); //Gán giá trị cho các thuộc tính objSV.setMaSV(rs.getString("MaSV")); objSV.setHoTen(rs.getString("HoTen")); objSV.setDienThoai(rs.getString("DienThoai")); objSV.setEmail(rs.getString("Email")); objSV.setMaKhoa(rs.getString("MaKhoa")); objSV.setGioiTinh(rs.getInt("GioiTinh")); objSV.setNgaySinh(rs.getDate("NgaySinh")); } } catch (SQLException ex) { System.out.println("Có lỗi xảy ra trong quá trình làm việc với mysql. " + "Chi tiết: " + ex.getMessage()); } finally { try { //Đóng kết nối if (conn != null) { conn.close(); } } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } } return objSV; } |
Hàm cập nhật thông tin thay đổi của sinh viên bằng lập trình java bằng jdbc
Đây là hàm sử dụng câu lệnh update để cập nhật thông tin thay đổi của sinh viên sau khi người dùng nhấn nút sửa trên giao diện danh sách với các nội dung như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
/** * Hàm cập nhật thông tin mới cho sinh viên cần sửa * * @param objSV, Đối tượng sinh viên chứa các thông tin mới cần cập nhật * @return True nếu cập nhật thành công, False nếu thất bại */ public boolean capNhat(SinhVien objSV) { Connection conn = null; try { //Khởi tạo kết nối conn = DataProvider.ketNoi(); //Tạo công việc String strUpdate = "Update SinhVien set HoTen=?, DienThoai=?, Email=?," + "GioiTinh=?, NgaySinh=?, DiaChi=?, MaKhoa=? where MaSV = ?"; PreparedStatement comm = conn.prepareStatement(strUpdate); //Gán giá trị cho các tham số comm.setString(1, objSV.getHoTen()); comm.setString(2, objSV.getDienThoai()); comm.setString(3, objSV.getEmail()); comm.setInt(4, objSV.getGioiTinh()); comm.setDate(5, new Date(objSV.getNgaySinh().getTime())); comm.setString(6, objSV.getDiaChi()); comm.setString(7, objSV.getMaKhoa()); comm.setString(8, objSV.getMaSV()); //Thực hiện công việc return comm.executeUpdate() > 0; } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } finally { try { //Đóng kết nối if (conn != null) { conn.close(); } } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } } return false; } |
Hàm xóa thông tin sinh viên
Hàm này sẽ thực hiện câu lệnh Delete trong SQL để xóa thông tin mã sinh viên được truyền vào lấy từ việc chọn sinh viên trên danh sách của jTable như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
/** * Hàm xóa thông tin sinh viên * @param maSV, mã sinh viên cần xóa * @return True nếu thành công, False nếu thất bại */ public boolean xoaSinhVien(String maSV) { Connection conn = null; try { //Khởi tạo kết nối conn = DataProvider.ketNoi(); Statement comm = conn.createStatement(); //Câu lệnh thực hiện String strDelete = "Delete from SinhVien where MaSV = '" + maSV + "'"; //Thực hiện xóa và trả về kết quả return comm.executeUpdate(strDelete) > 0; } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } finally { try { //Đóng kết nối if (conn != null) { conn.close(); } } catch (SQLException ex) { Logger.getLogger(SinhVienBusiness.class.getName()).log(Level.SEVERE, null, ex); } } return false; } |
Các bạn học lập trình java cần chú ý thực hiện viết đúng các hàm trên trong lớp SinhVienBusiness.java trước khi chuyển sang phần thiết kế giao diện thêm mới, cập nhật thông tin sinh viên.
Thiết kế giao diện thêm mới, cập nhật thông tin sinh viên
Đây là giao diện để người dùng có thể thực hiện thêm mới một thông tin hoặc cập nhật lại thông tin thay đổi cho một sinh viên đã có trong bảng trên MySQL bằng JDBC. Các bạn sử dụng những đối tượng control đã được học bằng java swing để thiết kế giao diện như sau:
Giao diện này có tên là frmSinhVienAdd.java sử dụng để xử lý trong 2 trường hợp thêm mới, cập nhật sinh viên do vậy chúng ta sẽ mở giao diện code (nhấn vào tab source) của lớp frmSinhVienAdd thêm một thuộc tính mã sinh viên để lưu dữ liệu trong trường hợp sửa thông tin sinh viên như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
/** * Sử dụng thuộc tính này để lưu thông mã sinh viên lấy từ danh sách truyền lên trong * TH sửa */ private String maSinhVien = ""; public String getMaSinhVien() { return maSinhVien; } public void setMaSinhVien(String maSinhVien) { this.maSinhVien = maSinhVien; } |
Sau đó viết hàm xử lý hiển thị thông tin chi tiết trong trường hợp sửa trong lớp frmSinhVienAdd.java như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
private void formWindowOpened(java.awt.event.WindowEvent evt) { if(!maSinhVien.isEmpty()) { //TH sửa this.setTitle("Sửa thông tin sinh viên"); //Hiển thị thông chi tiết của sinh viên cần sửa hienThiChiTietSinhVien(); } else { //TH thêm mới this.setTitle("Thêm mới thông tin sinh viên"); } } |
Hàm hiển thị thông tin chi tiết của sinh viên lên giao diện frmSinhVienAdd.java như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
/** * Hàm hiển thị thông tin chi tiết của sinh viên trong TH sửa */ private void hienThiChiTietSinhVien() { //Khai báo 1 đối tượng SinhVienBusiness sinhVienBusiness = new SinhVienBusiness(); //Lấy thông tin chi tiết của sinh viên SinhVien objSV = sinhVienBusiness.layChiTiet(maSinhVien); txtMaSV.setText(maSinhVien); txtMaSV.setEnabled(false); if(objSV != null) { //Hiển thị lên giao diện txtHoTen.setText(objSV.getHoTen()); txtDienThoai.setText(objSV.getDienThoai()); txtEmail.setText(objSV.getEmail()); txtDiaChi.setText(objSV.getDiaChi()); if(objSV.getGioiTinh()==1) { rbtnNu.setSelected(true); } else { rbtnNam.setSelected(true); } jDateChooserNgaySinh.setDate(objSV.getNgaySinh()); } } |
Hàm xử lý thêm mới hoặc cập nhật thông tin khi nhấn nút cập nhật trên giao diện frmSinhVienAdd.java như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 |
private void btnCapNhatActionPerformed(java.awt.event.ActionEvent evt) { //Khai báo 1 đối tượng sinh viên SinhVien objSV = new SinhVien(); //Lấy thông tin trên giao diện cho các thuộc tính của objSV objSV.setMaSV(txtMaSV.getText()); objSV.setHoTen(txtHoTen.getText()); objSV.setDienThoai(txtDienThoai.getText()); objSV.setEmail(txtEmail.getText()); objSV.setDiaChi(txtDiaChi.getText()); if(rbtnNu.isSelected()) { objSV.setGioiTinh(1); } else//Nam { objSV.setGioiTinh(0); } objSV.setNgaySinh(jDateChooserNgaySinh.getDate()); //Lấy thông tin khoa chọn trên giao diện String maKhoa = ""; ChuyenKhoa objKhoa = (ChuyenKhoa)cboKhoa.getSelectedItem(); if(objKhoa != null) { maKhoa = objKhoa.getMaKhoa(); } objSV.setMaKhoa(maKhoa); boolean kq; //Khai báo đối tượng SinhVienBusiness sinhVienBusiness = new SinhVienBusiness(); if(!maSinhVien.isEmpty())//TH sửa { kq = sinhVienBusiness.capNhat(objSV); } else { kq = sinhVienBusiness.themMoi(objSV); } if(kq)//Nếu thực hiện thành công { JOptionPane.showMessageDialog(rootPane, "Cập nhật thông tin sinh viên thành công"); //Reload lại danh sách frmDanhSachSinhVien.hienThiDanhSachSinhVien(); } } |
Xử lý gọi giao diện thêm mới, sửa từ giao diện danh sách sinh viên
Để gọi giao diện thêm mới hoặc cập nhật thông tin sinh viên từ giao diện danh sách sinh viên, các bạn học lập trình java cần thực hiện nhấp đúp vào nút Thêm mới, sửa trên giao diện của frmDanhSachSinhVien.java sau đó viết các đoạn code java tương ứng đó là:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
private void btnThemActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: frmSinhVienAdd frmThemMoi = new frmSinhVienAdd(); //Hiển thị thông tin frmThemMoi.setVisible(true); } private void btnSuaActionPerformed(java.awt.event.ActionEvent evt) { //Khai báo biến String maSV = ""; int dongChon = 0; frmSinhVienAdd frmSua = new frmSinhVienAdd(); //Lấy chỉ số dòng chọn trên jtable dongChon = jTableSinhVien.getSelectedRow(); //Lấy thông tin mã sinh viên của dòng chọn maSV = "" + jTableSinhVien.getValueAt(dongChon, 0); //Truyền mã sinh viên lên giao diện sửa frmSua.setMaSinhVien(maSV); //Hiển thị thông tin frmSua.setVisible(true); } |
Xử lý xóa thông tin sinh viên
Nhấn đúp vào nút Xóa trên giao diện frmDanhSachSinhVien.java để viết mã lệnh xử lý lấy thông tin mã sinh viên trên giao diện jTable được chọn để thực hiện xóa trong cơ sở dữ liệu MySQL bằng JDBC như sau:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
private void btnXoaActionPerformed(java.awt.event.ActionEvent evt) { // TODO add your handling code here: int ketQua = JOptionPane.showConfirmDialog(rootPane, "Bạn có chắn chắn muốn xóa thông tin này ?", "Thông báo", JOptionPane.WARNING_MESSAGE, JOptionPane.YES_NO_OPTION); if(ketQua == JOptionPane.YES_OPTION) { //Khai báo biến String maSV = ""; int dongChon = 0; //Lấy chỉ số dòng chọn trên jtable dongChon = jTableSinhVien.getSelectedRow(); //Lấy thông tin mã sinh viên của dòng chọn maSV = "" + jTableSinhVien.getValueAt(dongChon, 0); //Khai báo đối tượng SinhVienBusiness sinhVienBusiness = new SinhVienBusiness(); //Thực hiện xóa từ db boolean isXoa = sinhVienBusiness.xoaSinhVien(maSV); if(isXoa) { //Reload lại danh sách hienThiDanhSachSinhVien(); } } } |
Sau khi thực hiện cài đặt các chức năng thành công sẽ được giao diện như hình sau:
Như vậy qua bài viết này tôi đã hướng dẫn xong các bạn học lập trình java cài đặt các chức năng thêm mới, hiển thị chi tiết, sửa và xóa thông tin với bảng SinhVien trong MySQL bằng JDBC. Các bạn đọc kỹ và làm theo hướng dẫn nếu có khó khăn gì có thể comment hoặc hỏi trực tiếp tôi. Chúc các bạn thành công !
Xem phần 1: Làm việc với cơ sở dữ liệu MySQL bằng JDBC trong Java tại đây
=============================
☎ STANFORD – ĐÀO TẠO VÀ PHÁT TRIỂN CÔNG NGHỆ
Hotline: 0963 723 236 – 0866 586 366
Website: https://stanford.com.vn
Facebook:
Youtube: