Xây dựng tầng truy xuất dữ liệu cho ứng dụng iOS

Một phần của tài liệu Giáo trình lập trình di động trên iOS Dành cho bậc Cao đẳng (Trang 119 - 121)

CHƯƠNG 3 LÀM VIỆC VỚI CƠ SỞ DỮ LIỆU

3.5 Xây dựng tầng truy xuất dữ liệu cho ứng dụng iOS

Trước tiên cần định nghĩa các thuộc tính của cơ sở dữ liệu như tên, đường dẫn, các thuộc tính của bảng dữ liệu… Đó sẽ là những thuộc tính được sử dụng bên trong tầng DAL (tầng trên sẽ khơng quan tâm đến những thuộc tính đó). Với ứng dụng Quản lý món ăn, thì chúng ta chỉ cần một bảng duy nhất gồm các trường _id (khoá nguyên, tăng tự động), name (kiểu text), image (lưu dưới dạng text) và rating (kiểu Int):

//MARK: Database Properties

let dPath: String

let DB_NAME: String = "Foods.sqlite" let db: FMDatabase?

//MARK: Tables's properties

let TABLE_NAME: String = "meals" let TABLE_ID: String = "_id" let MEAL_NAME: String = "name" let MEAL_IMAGE: String = "image" let MEAL_RATING: String = "rating"

3.5.1 Thiết kế các chức năng cơ bản: Đóng, mở, tạo bảng…

Trong giáo trình này, chúng ta sẽ xây dựng những primitives sau cho cơ sở dữ liệu của chúng ta: hàm khởi tạo cho cơ sở dữ liệu, mở cơ sở dữ liệu, đóng cơ sở dữ liệu và hàm tạo bảng dữ liệu:

//MARK: Database Primitives

init() {

let directories:[String] =

NSSearchPathForDirectoriesInDomains(.documentDirectory,

.allDomainsMask, true)

112

db = FMDatabase(path: dPath) if db == nil {

os_log("Can not create the database. Please review the dPath!") }

else {

os_log("Database is created successful!") }

}

// Create table

func createTable() -> Bool {

var ok: Bool = false if db != nil {

let sql = "CREATE TABLE " + TABLE_NAME + "( "

+ TABLE_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + MEAL_NAME + " TEXT, " + MEAL_IMAGE + " TEXT, " + MEAL_RATING + " INTEGER)" if db!.executeStatements(sql) { ok = true os_log("Table is created!") } else {

os_log("Can not create the table!") } } else { os_log("Database is nil!") } return ok } // Open database

func open() -> Bool {

var ok: Bool = false if db != nil {

if db!.open() { ok = true

os_log("The database is opened!") }

else {

print("Can not open the Database:

\(db!.lastErrorMessage())") } } else { os_log("Database is nil!") } return ok } // Close database func close(){ if db != nil { db!.close() } }

3.5.2 Thiết kế các API cho tầng trên

Database APIs thực chất là các hàm cần thiết để tầng trên có thể gọi xuống cơ sở dữ liệu mà không cần quan tâm đó là cơ sở dữ liệu gì và và làm sao thực hiện được chúng.Trong ứng dụng Quản lý món ăn, rõ ràng chúng ta cần các APIs cho phép đọc từ cơ sở dữ liệu và đưa kết quả vào danh sách món ăn, ghi từng món ăn hoặc danh sách các món ăn vào cơ sở dữ liệu, cập nhật một món ăn vào cơ sở dữ liệu, xố bỏ một món ăn từ cơ sở dữ liệu. Ngoài ra, để mở rộng cho khả năng của cơ sở dữ liệu như tránh ghi nhiều món ăn trùng nhau vào cơ sở dữ liệu,… chúng ta cũng cần một API phục vụ cho việc tìm kiếm sự tồn tại của một món ăn trong cơ sở dữ liệu.

Một phần của tài liệu Giáo trình lập trình di động trên iOS Dành cho bậc Cao đẳng (Trang 119 - 121)

Tải bản đầy đủ (PDF)

(137 trang)