# SQLite - Java: Hướng dẫn cho người mới bắt đầu
Xin chào bạn, tương lai của ngôi sao lập trình! ? Chào mừng bạn đến với thế giới kỳ diệu của SQLite và Java. Tôi rất vui mừng được làm hướng dẫn viên cho bạn trong hành trình thú vị này. Với tư cách là người đã dạy khoa học máy tính trong nhiều năm, tôi có thể đảm bảo rằng vào cuối bài hướng dẫn này, bạn sẽ ngạc nhiên về những gì bạn có thể thực hiện được. Vậy, chúng ta cùng bắt đầu nào!
## Cài đặt
Trước khi chúng ta bắt đầu tạo ra phép màu cơ sở dữ liệu, chúng ta cần thiết lập các công cụ của mình. Hãy tưởng tượng như đang chuẩn bị nhà bếp trước khi nấu một bữa ăn ngon. ?
1. Đầu tiên, tải xuống trình điều khiển JDBC của SQLite từ [đây](https://github.com/xerial/sqlite-jdbc/releases).
2. Thêm tệp JAR đã tải xuống vào classpath của dự án Java của bạn.
Dưới đây là một đoạn mã nhỏ để kiểm tra xem mọi thứ đã được thiết lập đúng chưa:
```java
import java.sql.*;
public class SQLiteTest {
public static void main(String[] args) {
try {
Class.forName("org.sqlite.JDBC");
System.out.println("Trình điều khiển JDBC của SQLite đã được tải thành công!");
} catch (ClassNotFoundException e) {
System.out.println("Lỗi: Trình điều khiển JDBC của SQLite không tìm thấy.");
e.printStackTrace();
}
}
}
Nếu bạn thấy thông báo "Trình điều khiển JDBC của SQLite đã được tải thành công!" khi chạy đoạn mã này, bạn đã sẵn sàng!
Kết nối với cơ sở dữ liệu
Bây giờ chúng ta đã có nguyên liệu sẵn sàng, hãy bắt đầu nấu ăn! ?️ Kết nối với cơ sở dữ liệu giống như mở tủ lạnh - đó là bước đầu tiên để tạo ra điều kỳ diệu.
import java.sql.*;
public class SQLiteConnect {
public static void main(String[] args) {
Connection conn = null;
try {
String url = "jdbc:sqlite:test.db";
conn = DriverManager.getConnection(url);
System.out.println("Kết nối với SQLite đã được thiết lập.");
} catch (SQLException e) {
System.out.println(e.getMessage());
} finally {
try {
if (conn != null) {
conn.close();
}
} catch (SQLException ex) {
System.out.println(ex.getMessage());
}
}
}
}
Đoạn mã này tạo ra một kết nối với cơ sở dữ liệu SQLite có tên là "test.db". Nếu tệp không tồn tại, SQLite sẽ tự động tạo ra nó cho bạn. Thật tuyệt vời phải không?
Tạo bảng
Bây giờ chúng ta đã kết nối, hãy tạo một bảng. Hãy tưởng tượng bảng như một bảng tính trong cơ sở dữ liệu của bạn. Chúng ta sẽ tạo một bảng đơn giản có tên "students".
import java.sql.*;
public class CreateTable {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "CREATE TABLE IF NOT EXISTS students (" +
"id INTEGER PRIMARY KEY," +
"name TEXT NOT NULL," +
"grade INTEGER" +
");";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement()) {
stmt.execute(sql);
System.out.println("Bảng đã được tạo thành công!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Đoạn mã này tạo ra một bảng có tên "students" với ba cột: id, name và grade. Phần "IF NOT EXISTS" giống như một knock nhẹ vào cửa - nó kiểm tra xem bảng đã tồn tại hay chưa trước khi thử tạo.
Thao tác INSERT
Bây giờ hãy thêm một số dữ liệu vào bảng của chúng ta. Điều này giống như điền thông tin vào bảng tính mà chúng ta đã tạo.
import java.sql.*;
public class InsertData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "INSERT INTO students(name,grade) VALUES(?,?)";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Alice");
pstmt.setInt(2, 85);
pstmt.executeUpdate();
pstmt.setString(1, "Bob");
pstmt.setInt(2, 90);
pstmt.executeUpdate();
System.out.println("Dữ liệu đã được chèn thành công!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Đoạn mã này chèn hai sinh viên vào bảng. Dấu "?" trong câu lệnh SQL là các placeholder mà chúng ta điền bằng setString()
và setInt()
. Điều này giống như điền vào các khoảng trống trong một câu!
Thao tác SELECT
Bây giờ chúng ta đã thêm một số dữ liệu, hãy lấy chúng ra. Điều này giống như đọc từ bảng tính của chúng ta.
import java.sql.*;
public class SelectData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "SELECT id, name, grade FROM students";
try (Connection conn = DriverManager.getConnection(url);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(sql)) {
while (rs.next()) {
System.out.println(rs.getInt("id") + "\t" +
rs.getString("name") + "\t" +
rs.getInt("grade"));
}
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Đoạn mã này lấy tất cả dữ liệu từ bảng "students" và in chúng ra. Vòng lặp while
giống như đi qua từng hàng của bảng tính một cách tuần tự.
Thao tác UPDATE
Đôi khi chúng ta cần thay đổi dữ liệu đã có trong bảng. Hãy cập nhật điểm của Alice.
import java.sql.*;
public class UpdateData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "UPDATE students SET grade = ? WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setInt(1, 95);
pstmt.setString(2, "Alice");
pstmt.executeUpdate();
System.out.println("Dữ liệu đã được cập nhật thành công!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Đoạn mã này cập nhật điểm của Alice thành 95. Điều này giống như xóa một ô trong bảng tính và viết một giá trị mới.
Thao tác DELETE
Cuối cùng, hãy học cách xóa dữ liệu khỏi bảng. Có lẽ Bob đã quyết định chuyển sang một trường khác.
import java.sql.*;
public class DeleteData {
public static void main(String[] args) {
String url = "jdbc:sqlite:test.db";
String sql = "DELETE FROM students WHERE name = ?";
try (Connection conn = DriverManager.getConnection(url);
PreparedStatement pstmt = conn.prepareStatement(sql)) {
pstmt.setString(1, "Bob");
pstmt.executeUpdate();
System.out.println("Dữ liệu đã được xóa thành công!");
} catch (SQLException e) {
System.out.println(e.getMessage());
}
}
}
Đoạn mã này xóa Bob khỏi bảng "students". Điều này giống như xóa một hàng khỏi bảng tính.
Và thế là xong! Bạn đã học được các основ làm việc với SQLite trong Java. Hãy nhớ rằng, thực hành là chìa khóa của sự hoàn hảo, vì vậy đừng ngại thử nghiệm với các ví dụ này. Trước khi bạn biết, bạn sẽ tạo ra các ứng dụng cơ sở dữ liệu phức tạp!
Dưới đây là bảng tham khảo nhanh các phương thức chính chúng ta đã sử dụng:
Phương thức | Mô tả |
---|---|
DriverManager.getConnection(url) |
Thiết lập kết nối với cơ sở dữ liệu |
Connection.createStatement() |
Tạo một đối tượng Statement để thực thi SQL |
Connection.prepareStatement(sql) |
Tạo một đối tượng PreparedStatement cho SQL có tham số |
Statement.execute(sql) |
Thực thi một câu lệnh SQL không trả về kết quả |
Statement.executeQuery(sql) |
Thực thi một truy vấn SQL và trả về một ResultSet |
PreparedStatement.setString(index, value) |
Đặt một tham số String trong PreparedStatement |
PreparedStatement.setInt(index, value) |
Đặt một tham số int trong PreparedStatement |
PreparedStatement.executeUpdate() |
Thực thi một câu lệnh INSERT, UPDATE hoặc DELETE |
ResultSet.next() |
Di chuyển đến hàng tiếp theo trong ResultSet |
ResultSet.getInt(columnName) |
Lấy giá trị int từ hàng hiện tại |
ResultSet.getString(columnName) |
Lấy giá trị String từ hàng hiện tại |
Tiếp tục lập trình, tiếp tục học hỏi, và quan trọng nhất, hãy vui vẻ! ??
Credits: Image by storyset