Hotline: 0919 365 363; Email: daotao@r2s.edu.vn

Lập trình Java Swing và JDBC

Lập trình Java Swing và JDBC

lập trình java swing và jdbc
Kiến thức hữu ích

Lập trình Java Swing và JDBC

Sản phẩm lập trình java swing và jdbc là những ứng dụng có sự kết hợp giữa thư viện Swing và thư viện JDBC. Chúng cho phép người dùng thao tác với ứng dụng thông qua giao diện đồ hoạ (GUI), quản lý dữ liệu thông qua thư viện JDBC cực kỳ tiện lợi.

Để tìm hiểu chi tiết hơn về lập trình Java Swing và JDBC, hãy cùng theo dõi bài viết dưới đây của R2S nhé!

Lập trình java swing và jdbc là gì?

lập trình java swing và jdbc
Lập trình java swing và jdbc

Bạn sẽ thường thấy những chương trình quản lý bán hàng, quản lý siêu thị vá quản lý đào tạo,… với phần giao diện chương trình được thiết kế bằng cách sử dụng Swing. Và trong đó, phần cơ sở dữ liệu sẽ sử dụng JDBC và một hệ quản trị cơ sở dữ liệu như MySQL, SQL Server hay Oracle, …

Lập trình java swing

Lập trình Java Swing là việc sử dụng thư viện Swing trong Java để phát triển các ứng dụng giao diện đồ họa. Swing là một bộ công cụ phát triển giao diện người dùng (GUI) trong Java, cho phép bạn tạo ra các cửa sổ, nút bấm, trình điều khiển đầu vào và các thành phần khác để xây dựng một giao diện người dùng tương tác.

Java Swing cung cấp các lớp và thành phần để xây dựng các ứng dụng desktop đa nền tảng, cho phép bạn tạo ra các cửa sổ, bảng, danh sách, menu và các thành phần khác. Bằng cách sử dụng Swing, bạn có thể tạo ra các ứng dụng có giao diện đẹp mắt và tương tác với người dùng một cách linh hoạt.

Lập trình Java Swing thường bao gồm việc tạo ra các lớp con của các lớp Swing có sẵn, gắn kết các sự kiện và xử lý logic đằng sau các thành phần giao diện. 

Lập trình java jdbc

Java JDBC (Java Database Connectivity) là một API (Application Programming Interface) cho phép các ứng dụng Java kết nối và tương tác với các cơ sở dữ liệu quan hệ. Nó cung cấp các lớp và giao diện để thực hiện các thao tác như thiết lập kết nối,  truy vấn cơ sở dữ liệu, cập nhật dữ liệu và xử lý các lỗi liên quan đến cơ sở dữ liệu.

Java JDBC cho phép ứng dụng Java truy cập và sử dụng các cơ sở dữ liệu như MySQL, Oracle, SQL Server, PostgreSQL và nhiều hơn nữa. Nó cung cấp một cách tiện lợi và linh hoạt để tương tác với cơ sở dữ liệu từ các ứng dụng Java, cho phép truy vấn, cập nhật và xử lý dữ liệu dễ dàng.

Một số mẫu trong lập trình java swing và jdbc

Chuẩn bị cơ sở dữ liệu (Cơ sở dữ liệu này được tạo với MS SQL Server)

CREATE DATABASE Library

USE Library

GO

CREATE TABLE Books (
 ID INT IDENTITY PRIMARY KEY
 ,title NVARCHAR(50)
 ,price FLOAT 
)

GO

INSERT INTO Books (title, price) VALUES (N'Lập trình C',100)
INSERT INTO Books (title, price) VALUES (N'Lập trình Java',200)
INSERT INTO Books (title, price) VALUES (N'Lập trình C#',150)

GO

Mẫu 1: Tìm kiếm và xóa dữ liệu trong lập trình java swing và jdbc 

Cho phép người dùng xem và xóa dữ liệu của bảng Books. Ngoài ra chương trình còn cho phép người dùng tìm kiếm một sách theo tiêu đề (title).

lập trình java swing và jdbc

Mô tả yêu cầu

Đối với nút “Search” nếu vùng filter không nhập dữ liệu, chương trình sẽ hiển thị tất cả dữ liệu của bảng Books. Ngược lại thì chương trình chỉ hiển thị đúng với thông tin mà người dùng đã nhập hoặc ứng dụng sẽ thông báo “The book is not available!” trong trường hợp không tìm thấy.

lập trình java swing và jdbc

Khi người dùng lựa chọn một dòng trên table, nút “Delete” sẽ ở trạng thái sử dụng và chương trình sẽ hiển thị thông báo cho việc xác nhận “Do you want to delete?” khi người dùng chọn nút “Delete”. Nếu chọn “Yes“, chương trình sẽ xóa thông tin sách được chọn khỏi cơ sở dữ liệu.

lập trình java swing và jdbc

 Nhấn nút “Exit” sẽ đóng chương trình

Viết xử lý cho nút “Search”

Bước 1: Khai báo tiêu đề và model cho Table

private String header[] = {"Id", "Title", "Price"};
private DefaultTableModel tblModel = new DefaultTableModel(header, 0);

Bước 2: Truy xuất dữ liệu của bảng Books

Connection conn = null;
Statement st = null;
ResultSet rs = null;

try { 
 conn = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa");

 // Câu lệnh xem dữ liệu
 String sql = "select * from Books ";

 // Nếu tìm kiếm theo title
 if (txtTitle.getText().length() > 0) {
   sql = sql + " where title like '%" + txtTitle.getText() + "%'";
 }

 // Tạo đối tượng thực thi câu lệnh Select
 st = conn.createStatement();

 // Thực thi 
 rs = st.executeQuery(sql);
 Vector data = null;
 tblModel.setRowCount(0);

 // Nếu sách không tồn tại
 if (rs.isBeforeFirst() == false) {
  JOptionPane.showMessageDialog(this, "The book is not available!");
  return;
 }

 // Trong khi chưa hết dữ liệu
 while (rs.next()) {
   data = new Vector();

   data.add(rs.getInt("id"));
   data.add(rs.getString("title"));
   data.add(rs.getString("price"));

   // Thêm một dòng vào table model
   tblModel.addRow(data);
 }

 jTable1.setModel(tblModel); // Thêm dữ liệu vào table
} catch (Exception e) {
  e.printStackTrace();
} finally {
  try {
    if (conn != null) {
      conn.close();
    }

    if (st != null) {
     st.close();
    }

    if (rs != null) {
     rs.close();
    }

   } catch (Exception ex) {
     ex.printStackTrace();
   }
}

Viết xử lý cho nút “Delete”

Trước khi xóa dữ liệu, người dùng phải chọn một dòng trên table và chương trình sẽ lấy giá trị của cột đầu tiên của dòng được chọn để làm điều kiện xóa (cột id)

int ret = JOptionPane.showConfirmDialog(this, "Do you want to delete?", "Confirm", JOptionPane.YES_NO_OPTION);

if(ret != JOptionPane.YES_OPTION) {
 return;
}

Connection c = null;

PreparedStatement ps = null;

try {
 c = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa");

 ps = c.prepareStatement("Delete From Books where id = ?");
 ps.setInt(1, id); //giá trị của cột đầu tiên tại dòng được chọn trong table
 ret = ps.executeUpdate();

 if (ret != -1) {
  JOptionPane.showMessageDialog(this, "This book has been deleted");  
 }
} catch (Exception ex) {
 ex.printStackTrace();
} finally {
  try {
   if (c != null) {
     c.close();
   }

   if (ps != null) {
     ps.close();
   }
 } catch (Exception ex2) {
   ex2.printStackTrace();
 }
}

Mẫu 2: Cập nhật tiêu đề giá của sách dựa vào id trong lập trình java swing và jdbc

Giao diện chương trình

Giao diện chương trình

Khi người dùng chọn id từ combobox, chương trình sẽ hiển thị thông tin của title và price tương ứng vào các textfield. Dữ liệu sẽ được cập nhật khi người dùng nhấn chọn nút “Save

Viết xử lý hiển thị dữ liệu cho combobox

Connection conn = null;
Statement st = null;
ResultSet rs = null;

try {
 conn = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa");

 st = conn.createStatement();
 rs = st.executeQuery("select id from books ");
 Vector data = new Vector();

 while (rs.next()) {
   data.add(rs.getString("id"));
 }

 cmbModel = new DefaultComboBoxModel(data);
 cmbCondition.setModel(cmbModel);
} catch (Exception e) {
 e.printStackTrace();
} finally {
 try {
   if (conn != null) {
     conn.close();
   }

  if (st != null) {
    st.close();
   }

  if (rs != null) {
    rs.close();
  }
 } catch (Exception ex) {
  ex.printStackTrace();
 }
}

Đăng ký và xử lý sự kiện cho combobox

Đăng ký sự kiện: chuột phải combobox -> chọn Events -> chọn Action -> chọn actionPerformed

Viết xử lý

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
 conn = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa"); 

 id = Integer.parseInt((String) cmbCondition.getSelectedItem());
 String sql = "Select * from books where id = ?";
 ps = conn.prepareStatement(sql); 
 ps.setInt(1, id);
 rs = ps.executeQuery();

 if (rs.next()) {
  //Hiển thị dữ liệu vào các textfield
  txtTitle.setText(rs.getString("title"));
  txtPrice.setText(rs.getString("price"));
 } 
} catch (Exception e) {
 e.printStackTrace();
} finally {
 try {
  if (conn != null) {
   conn.close();
  }

  if (rs != null) {
   rs.close();
  }

  if (ps != null) {
   ps.close();
  }
 } catch (Exception ex2) {
   ex2.printStackTrace();
 }
}

Viết xử lý cho nút “Save”

int ret = JOptionPane.showConfirmDialog(this, "Do you want to update?", "Confirm", JOptionPane.YES_NO_OPTION);

if (ret != JOptionPane.YES_OPTION) {
 return;
}

String update = "update books set title = ?, price = ? where id = ?";

System.out.println(update);

Connection conn = null;
PreparedStatement ps = null;
ResultSet rs = null;

try {
 conn = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa");

 ps = conn.prepareStatement(update);
 ps.setString(1, txtTitle.getText());
 ps.setFloat(2, Float.parseFloat(txtPrice.getText()));
 ps.setInt(3, id); //id được chọn từ combobox

 ret = ps.executeUpdate();

 if (ret != -1) {
   lblStatus.setText("The book has been updated");
 }
} catch (Exception e) {
 e.printStackTrace();
} finally {
 try {
  if (conn != null) {
     conn.close();
  }

  if(rs != null) {
     rs.close();
  }

  if (ps != null) {
     ps.close();
  }
 } catch (Exception ex2) {
    ex2.printStackTrace();
 }
}

Mẫu 3: Thêm dữ liệu trong Lập trình java swing và jdbc

Giao diện chương trình

Giao diện chương trình

Xử lý cho nút “Save”

// Nếu không nhập tiêu đề (Title)
if (txtTitle.getText().isEmpty()) {
 JOptionPane.showMessageDialog(this, "Please input title");
 txtTitle.requestFocus();

 return; // Thoát khỏi xử lý không thực hiện các lệnh tiếp theo
}

 // Nếu không nhập giá (Price)
if (txtPrice.getText().isEmpty()) {
 JOptionPane.showMessageDialog(this, "Please input price");
 txtPrice.requestFocus();

 return;
}

 // Hiển thị hộp thoại xác nhận có muốn lưu hay không?
 int ret = JOptionPane.showConfirmDialog(this, "Do you want to save?", "Confirm", JOptionPane.YES_NO_OPTION);

 // Trường hợp không lưu
 if (ret != JOptionPane.YES_OPTION) {
   return; // Thoát khỏi phương thức
 }

 // Câu lệnh insert
 String insert = "insert into books (title,price) values(?, ?)";
 System.out.println(insert);

 Connection conn = null;
 PreparedStatement ps = null;

 try {
  conn = DriverManager.getConnection("jdbc:sqlserver://localhost;DatabaseName=Library", "sa", "sa");

  ps = conn.prepareStatement(insert);
  ps.setString(1, txtTitle.getText());
  ps.setFloat(2, Float.parseFloat(txtPrice.getText()));

  // Thực thi câu lệnh insert
  ret = ps.executeUpdate();

  if (ret != -1) {
    lblStatus.setText("The book has been inserted");
  }
 } catch (Exception e) {
   e.printStackTrace();
 } finally {
   try {
    if (conn != null) {
      conn.close();
    }

    if (ps != null) {
      ps.close();
    }
   } catch (Exception ex2) {
    ex2.printStackTrace();
   }
}

Một số bài tập thực hành

Bài thực hành số 1: Viết chương trình cho phép quản lý thông tin của lớp học

Giao diện

Giao diện

Màn hình 1

Viết xử lý

Khi người dùng chọn nút lệnh “Display”, hiển thị thông tin từ bảng ClassTab vào JTable. Nếu người dùng nhập tên lớp tại “Class name”, chương trình sẽ hiển thị thông tin về lớp học đã được nhập.

Chương trình cũng cho phép cập nhật lại thông tin lớp học bằng cách lựa chọn một dòng tại JTable và nhập thông tin cần thay đổi tại “Class Name” , sau đó chọn nút lệnh “Update” để hoàn tất.

Để xóa thông tin, người dùng sẽ lựa chọn một dòng muốn xóa tại JTable và chọn nút lệnh “Delete

Khi người dùng chọn nút lệnh “Insert”, chương trình sẽ hiển thị trên màn hình thêm thông tin lớp học.

Viết xử lý

Màn hình 2

Bài thực hành số 2: Tại màn hình thêm thông tin lớp học (Màn hình 2)

Khi người dùng chọn nút lệnh “Save”, thì thông tin lớp học sẽ được lưu lại.

Lưu ý kiểm tra thông tin ở “Class ID” đã tồn tại hay chưa? Khi người dùng chọn nút lệnh “Close” để quay về màn hình 1

Tổng kết 

Như vậy, qua bài viết về lập trình java swing và jdbc trên đây, R2S chúng tôi đã giúp bạn hiểu được về Lập trình java swing và jdbc là gì?, Một số mẫu trong lập trình java swing và jdbc

Đừng bỏ lỡ bất cứ bài viết nào của chúng tôi để học thêm nhiều kiến thức hữu ích về lập trình java nhé.

Hãy đến với website của R2S để tìm hiểu sâu hơn về lập trình và công nghệ thông tin để có nhiều kiến thức hay về lập trình và công nghệ thông tin hơn nha. 

Bài viết gốc được đăng tải tại giasutinhoc.vn

Alert: You are not allowed to copy content or view source !!