Sau khi tạo kết nối tới Cơ sở dữ liệu thông qua JDBC ở bài trước. Bài này chúng ta sẽ thực hiện tạo các phương thức truy vấn Cơ sở dữ liệu đơn giản như : Insert, Update, Delete.

Ở bài viết này, chúng ta sẽ xem và chạy code chương trình trước sau đó tìm hiểu từng thành phần của chương trình.

Tạo mới Java class : thongtinxe.

 
package thongtinxe;

public class thongtinxe {

    private int maxe;
    private String tenxe;

    public thongtinxe() {

    }

    public thongtinxe(int maxe, String tenxe) {
        this.maxe = maxe;
        this.tenxe = tenxe;
    }

    public int getMaxe() {
        return maxe;
    }

    public void setMaxe(int maxe) {
        this.maxe = maxe;
    }

    public String getTenxe() {
        return tenxe;
    }

    public void setTenxe(String tenxe) {
        this.tenxe = tenxe;
    }

}

Thêm các phương thức Insert, Update, Delete Java class mysql.

package thongtinxe;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;

public class mysql {

    private final String className = "com.mysql.jdbc.Driver";

    private Connection connection;

    private String url = "jdbc:mysql://127.0.0.1:3306/";

    private String dbname = "mydb";

    private String user = "root";

    private String pw = "password";

    public void connect() {
        try {
            Class.forName(className);
            connection = DriverManager.getConnection(url + dbname, user, pw);
            System.out.println("Kết nối Database thành công");
        } catch (ClassNotFoundException ex) {
            System.out.println("Kết nối Database thất bại");
        } catch (SQLException ex) {
            System.out.println("Kết nối Database thất bại");
        }
    }

    public ResultSet getData(String sqlCommand) {
        ResultSet rs = null;
        Statement st;
        try {
            st = connection.createStatement();
//Gán giá tri cho đối tương st
            rs = st.executeQuery(sqlCommand);
//Thực hiện truy vấn
        } catch (SQLException ex) {
            Logger.getLogger(mysql.class.getName()).log(Level.SEVERE, null, ex);
        }
        return rs;
    }

    public boolean delete(int PrimaryKey) {

        String sqlCommand = "delete from " + tableName + " where maxe = ?";
        PreparedStatement pst = null;
        try {
            pst = connection.prepareStatement(sqlCommand);
//Gán giá trị cho đối tượng pst, thông qua connection.
            pst.setInt(1, PrimaryKey);
//Gán giá trị cho dấu ? trong câu lệnh truy vấn sqlCommand
            if (pst.executeUpdate() > 0) {
                return true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(mysql.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean insert(String tableName, thongtinxe ttx) {

        String sqlCommand = "insert into " + tableName + " values(?, ?)";
        PreparedStatement pst = null;
        try {
            pst = connection.prepareStatement(sqlCommand);
//Gán giá trị cho đối tượng pst, thông qua connection.
            pst.setInt(1, ttx.getMaxe());
            pst.setString(2, ttx.getTenxe());
// Thực hiện gán giá trị lần lượt cho các dấu ? trong câu lệnh truy vấn sqlCommand
            if (pst.executeUpdate() > 0) {// Kiểm tra truy vấn
                return true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(mysql.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public boolean update(thongtinxe ttx, int maxe) {
        
        String sqlCommand = "update " + tableName + " set tenxe = ? where maxe = ?";
        PreparedStatement pst = null;
        try {
            pst = connection.prepareStatement(sqlCommand);
//Gán giá trị cho đối tượng pst, thông qua connection.
            pst.setString(1, ttx.getTenxe());
            pst.setInt(2, ttx.getMaxe());
// Lần lượt gán giá trị cho các dấu ?, trong câu lệnh sqlCommand
            if (pst.executeUpdate() > 0) {//Kiểm tra truy vấn
                return true;
            } else {
                return false;
            }
        } catch (SQLException ex) {
            Logger.getLogger(mysql.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

}

 

Bây giờ, chúng ta cùng tiến hành phân tích code :

Java Class thongtinxe.

Ở Class này chúng ta khai báo các thuộc tính trong Bảng thongtinxe trong Database xe gồm : maxe (int), tenxe(string).

Sau đó dùng chức năng Insert Code của IDE, thêm các hàm dựng ( Constructor ) và các phương thức Getter & Setter.

Class này có nhiệm vụ nhằm khởi tạo và gán các giá trị cho các thuộc tính trong Database khi cần.

Java Class mysql :

Các bước cơ bản để kết nối và truy vấn Database với JDBC bao gồm :

1. Kết nối Database qua JDBC ( Hàm Connect ).

2. Lấy dữ liệu từ Database đưa đến Interface trung gian để lưu trử ( Sử dụng ResulSet ).

3. Thực hiện truy vấn Database thông qua Interface hổ trợ truy vấn ( Statement và Prestatement ).

Phân tích từng bước cơ bản :

1. Kết nối Database qua JDBC ( Hàm Connect ).

2. Lấy dữ liệu từ Database đưa đến Interface trung gian để lưu trử ( Sử dụngResulSet ).

ResultSet là Interface giúp lưu trữ các kết quả có được sau khi thực hiện câu lệnh truy vấn tới Database.

Hàm getData trong Class mysql sẽ được sữ dụng để lấy dữ liệu từ Database thông qua câu lệnh truy vấn :

select * from table;

Kết quả có được từ câu lệnh truy vấn sẽ được lưu lại qua ResultSet. Sau đó, chúng ta sử dụng các phương thức của các Interface như Statement / Prestatement để truy vấn với Database được lưu trên ResultSet.

3. Thực hiện truy vấn Database thông qua Interface hổ trợ truy vấn ( Statement và Prestatement ).

Để thao tác trên Cơ sở dữ liệu, thường chúng ta có 2 phương pháp :

+ Sử dụng giao diện đồ họa

+ Sử dụng dòng lệnh

Để thao tác với Cơ sở dữ liệu trên Java chúng ta không có giao diện đồ họa để thao tác, nhưng thao tác dựa trên dòng lệnh là điều rất khó khăn.

Do đó, nhằm giúp đơn giản hóa vấn đề trên Java cung cấp các Interface giúp thực hiện các truy vấn SQL trên Java. Ở loạt bài viết này chúng ta sẽ dùng Statement / Prestatement để thực hiện việc thao tác lên cơ sở dữ liệu. Ở đây cụ thể là Cơ sở dữ liệu được lưu tạm thời thông qua ResultSet.

Phân biệt Statement và Prestatement.

Bài tiếp theo, chúng ta sẽ tạo giao diện chương trình, nơi Cơ sở dữ liệu được đưa lên và thao tác thông qua nó .

Đánh giá của bạn
Tạo các phương thức truy vấn Cơ sở dữ liệu

Trả lời

Thư điện tử của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *