- SQLite with FMDB in Swift (P2)
- SQLite with FMDB in Swift (P1)
Nội dung bài viết:
- Truy vấn insert
- Truy vấn select
- Truy vấn delete
- Truy vấn update
Truy vấn INSERT
- Câu truy vấn này dùng để thêm bản ghi vào table
- Có 2 cách để viết 1 câu truy vấn insert.
Cách 1:
Cách 2: Trong trường hợp bạn tạo 1 bản ghi mới đầy đủ các trường của bảng ghi, thì k cần liệt kê cụ thể tên các trường như cách 1:
- Để thực hiện truy vấn INSERT vào table Book ở bài viết trước, việc đầu tiên là viết 1 câu truy vấn:
let query = "insert into Book (name, author, price) values ('Kill the mockingbird', 'HarperLee', 85000)"
Đây là 1 câu truy vấn thực hiện sự thay đổi đến database, nên ta vẫn sử dụng lệnh executeUpdate(…) để thực hiện câu query:
Ở đây, vì table Book được khởi tạo với thuộc tính id tự động tăng, nên ta có thể bỏ qua việc khai báo id.
func insertBook() {
if openDatabaseConnectionAtPath(path: getDatabasePath()) {
let query = "insert into Book (name, author, price) values ('Kill the mockingbird', 'HarperLee', 85000)"
do {
try database.executeUpdate(query, values: nil)
} catch let err {
print("Insert failed, error: \(err.localizedDescription)")
}
}
database.close()
}
Ở đây, table Book có cả 4 trường đều khác nil, tuy nhiên trường id và price có thuộc tính default nên có thể không cần khai báo trong câu lệnh insert, nhưng nếu bạn insert thêm 1 bản ghi mà không có trường name hay author thì FMDB sẽ trả về lỗi và không thể insert được.
Note: Bạn có thể thực hiện nhiều câu truy vấn cùng 1 lúc, bằng cách gộp chúng vào 1 câu truy vấn chung, mỗi câu truy vấn nhỏ ngăn cách nhau bằng 1 dấu ;
- Ngoài ra, còn có 1 cách thực hiện câu lệnh executeUpdate thuận tiện hơn bằng cách sử dụng thuộc tính values như sau:
- Ở đây, name và author không được cụ thể ngay từ câu truy vấn, mà được để 1 dấu ? có tác dụng như 1 placeholder để truyền trường name, author vào sau.
- Khi thực hiện lệnh executeQuery, điền lần lượt các giá trị muốn truyền tương ứng vào các dấu ? vào thuộc tính values.
Truy vấn SELECT:
- Câu truy vấn này dùng để lấy các bản ghi từ table.
- Cách viết câu truy vấn Select:
+ SELECT column1, column2,… FROM table_name; // Lấy 1 vài trường cụ thể
+ SELECT * FROM table_name; // Lấy tất cả các bản ghi
+ Ngoài ra có thể kết hợp thêm Where, Order by,… vào câu truy vấn để lọc các bản ghi - Ví dụ thực hiện câu truy vấn lấy tất cả các sách trong table Book:
- Câu truy vấn select k làm thay đổi DB, nên sử dụng lệnh executeQuery(…) để thực hiện.
- Câu truy vấn này trả về 1 tập dữ liệu FMResultSet, từ đó convert về kiểu dữ liệu mà ta mong muốn.
Truy vấn DELETE
- Dùng để xóa bản ghi đang có trong table.
- Cách viết câu truy vấn delete:
DELETE FROM table_name WHERE condition; - Ví dụ thực hiện câu truy vấn delete:
Truy vấn UPDATE:
- Dùng để thay đổi giá trị của bản ghi đang có trong table.
- Cách viết câu truy vấn:
UPDATE table_name SET column1 = value1, column2 = value2, … WHERE condition; - Ví dụ thực hiện câu truy vấn:
Kết luận:
- Nên define các trường thành Constant để tránh gõ nhầm khi viết câu truy vấn.
- Sử dụng lệnh executeUpdate để thực hiện thay đổi DB, dùng lệnh executeQuery để thực hiện việc lấy các bản ghi.
- Các câu lệnh có thể gộp vào với nhau, nhưng ngăn cách với nhau bằng dấu ;.
- Luôn đóng liên kết tới DB sau khi thực hiện xong câu truy vấn.