Để đáp ứng nhu cầu lưu trữ và xử lý dữ liệu cho ứng dụng của bạn, bada cung cấp lớp (class) với các phương thức (methods) để thao tác với cơ sở dữ liệu một cách hiệu quả.

Nếu bạn đọc đã từng sử dụng SQLlite trước đó thì đến với cơ sở dữ liệu của bada thật dễ dàng bởi đó là nền tảng cơ sở dữ liệu mở phổ biến hiện nay. Bài viết này, chúng tôi muốn đề cập đến bạn đọc cách sử dụng cũng như các thao tác xử lý cơ bản trên cơ sở dữ liệu của bada.

Các lớp cần thiết để thao tác với cơ sở dữ liệu như:

1. Database:  Thực hiện các tính năng cơ sở dữ liệu cơ bản để tạo ra (create) và xóa (delete) các tập tin cơ sở dữ liệu, thực hiện các lệnh SQL, và thực hiện các nhiệm vụ khác trong việc quản lý cơ sở dữ liệu chung.

2. DbStatement:  Cung cấp một phương thức  để tạo và đánh giá các lệnh trước khi biên dịch.

3. DbEnumerator:  Cung cấp một phương thức để điều hướng kết quả của DbStatement.

Các thao tác cơ bản khi sử dụng cơ sở dữ liệu:

a.  Tạo database mới hoặc mở database đã tồn tại.

Trước khi bạn sử dụng một cơ sở dữ liệu (database) hoặc tạo các bảng (tables) cho cơ sở dữ liệu thì việc làm trước tiên nhất là phải mở một kết nối đến cơ sở  dữ liệu.

Khi bạn mở một cơ sở dữ liệu, thì một cơ sở dữ liệu rỗng (empty) sẽ tự động tạo ra nếu cơ sở dữ liệu đó chưa tồn tại. Và ngược lại.

Database database;

DbStatement* pStmt;
DbEnumerator* pEnum;
String dbName(L"/Home/sampleDb");
String sql, sql2, sql3;
String statement;
String stringItem;

result r = E_SUCCESS;

r = database.Construct(dbName, true);

Bạn cần chú ý đến quyền truy cập (permissions)  và chế độ đọc viết (read-write) của thư mục lưu trữ  cơ sở dữ liệu.  Với thưc mục “/Home” sẵn sàng chon ứng dụng của bạn có thể đọc và ghi tập tin.

b. Tạo bảng (table) cho cơ sở dữ liệu

Cú pháp quen thuộc của SQLlite sẽ được sự dụng tại đây. Nếu bạn chưa từng biết đến SQLlite thì có thể tìm hiểu thêm tài liệu tại đây!

sql.Append(L"CREATE TABLE IF NOT EXISTS myTable1 ( column0 INTEGER PRIMARY KEY, column1 DOUBLE, column2 TEXT )");

r = database.ExecuteSql(sql, true);

c. Thêm dữ liệu mới

Sử dụng “DbStatement” để đánh giá các câu lệnh truy vấn với dữ liệu thêm vào động. Và kết quả truy vấn được do “DbEnumerator” quản lý.

database.BeginTransaction();

statement.Append(L"INSERT INTO myTable1 (column0, column1, column2) VALUES (?, ?, ?)");

pStmt = database.CreateStatementN(statement);

stringItem.Append(L"Initial Data");

for (int i=0; i<10; i++) {    pStmt->BindInt(0, i);   // integer
   pStmt->BindDouble(1, i*0.1);   // double
   pStmt->BindString(2, stringItem);   // String

   pEnum = database.ExecuteStatementN(*pStmt);
}
database.CommitTransaction();

d. Cập nhật dữ liệu đã tồn tại

database.BeginTransaction();

sql3.Append(L"UPDATE myTable1 SET column2 = ‘Converted Data’ WHERE column2 = ‘Initial Data’");

r = database.ExecuteSql(sql3, true);
database.CommitTransaction();

e. Xóa dữ liệu đã tồn tại

database.BeginTransaction();

sql2.Append(L"DELETE FROM myTable1 WHERE column0 = 1&");

r = database.ExecuteSql(sql2, true);

database.CommitTransaction();

f. Đóng và xóa cơ sở dữ liệu

delete pEnum;
r = Database::Delete(dbName);

Với những thao tác cơ bản nêu trên, bạn đọc đã có thể sử dụng tốt cơ sở dữ liệu riêng cho từng ứng dụng của mình rôi.

Chúc bạn thành công!