Tải bản đầy đủ (.pdf) (70 trang)

XÂY DỰNG ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG DÙNG GIẢI PHÁP BẢO MẬT CSDL SQLCIPHER (Luận Văn Thạc Sĩ)

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.17 MB, 70 trang )

Viện Công Nghệ Thông Tin Và Truyền Thông
ĐẠI HỌC BÁCH KHOA HÀ NỘI

Luận Văn Thạc Sĩ
XÂY DỰNG ỨNG DỤNG TRÊN THIẾT BỊ DI ĐỘNG
DÙNG GIẢI PHÁP BẢO MẬT CSDL SQLCIPHER

Nguyen Thanh Long

Ha Noi, 2023


MỤC LỤC
MỤC LỤC ......................................................................................................... i
LỜI CẢM ƠN ................................. Lỗi! Thẻ đánh dấu không được xác định.
LỜI CAM ĐOAN ........................... Lỗi! Thẻ đánh dấu không được xác định.
CÁC KÝ HIỆU, CHỮ VIẾT TẮT ................................................................. iii
DANH MỤC HÌNH VẼ.................. Lỗi! Thẻ đánh dấu không được xác định.
LỜI MỞ ĐẦU ................................................................................................. vii
CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SQLITE ............................. 1
1.1. Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu trên thiết bị di động .................. 1
1.2. An tồn thơng tin trong cơ sở dữ liệu ........................................................ 1
1.2.1.

u cầu để đảm bảo an toàn cho cơ sở dữ liệu ................................. 2

1.2.2.

Các yếu tố liên quan đến an toàn cơ sở dữ liệu ................................. 3

1.2.3.



Các cơ chế để bảo vệ tính an tồn của cơ sở dữ liệu ......................... 7

1.3. Tổng quan về hệ quản trị cơ sở dữ liệu SQLite ......................................... 8
1.3.1.

Giới thiệu chung về hệ quản trị cơ sở dữ liệu SQLite ....................... 8

1.3.2.

Đặc trưng của hệ quản trị cơ sở dữ liệu SQLite .............................. 10

1.3.3.

Hiệu suất hoạt động và hạn chế của SQLite ................................... 14

1.4. Cơ chế hoạt động của SQLite trên môi trường Android .......................... 15
1.4.1.

Lưu trữ dữ liệu ............................................................................... 15

1.4.2.

Sử dụng SQLite trong Android ...................................................... 17

1.5. Kết luận chương ...................................................................................... 23
CHƯƠNG 2: GIẢI PHÁP BẢO MẬT CƠ SỞ DỮ LIỆU SQLITE SỬ DỤNG
SQLCIPHER .................................................................................................... 24
2.1. Các nguy cơ gây mất an toàn cho cơ sở dữ liệu SQLite ........................... 24
i



2.2. Cơ chế bảo mật cho SQLite..................................................................... 25
2.2.1.

Mức độ an ninh trong cơ sở dữ liệu................................................ 25

2.2.2.

Cơ chế bảo mật cho SQLite ........................................................... 25

2.3. Giải pháp bảo mật cơ sở dữ liệu SQLite sử dụng SQLCipher.................. 27
2.3.1.

Giới thiệu SQLCipher .................................................................... 27

2.3.2.

Đặc trưng ....................................................................................... 29

2.3.3.

Thiết kế .......................................................................................... 29

2.3.4.

Tính năng bảo mật ......................................................................... 30

2.3.5.


Đặc điểm mới của SQLCipher phiên bản 4.4.0 trở lên ................... 31

2.3.6.

SQLCipher API ............................................................................. 32

2.3.7.

Thao tác mã hoá cơ sở dữ liệu với SQLCipher ............................... 47

2.4. Kết luận chương ...................................................................................... 48
CHƯƠNG 3: XÂY DỰNG ỨNG DỤNG CÓ BẢO MẬT TRÊN HỆ ĐIỀU
HÀNH ANDROID ........................................................................................... 49
3.1. Đặt bài toán ............................................................................................. 49
3.2. Phân tích bài tốn và đề xuất giải pháp ................................................... 49
3.3. Xây dựng ứng dụng SQLCipher trên Android ......................................... 50
3.3.1.

Cơ sở dữ liệu.................................................................................. 50

3.3.2.

Tích hợp SQLCipher trên Android ................................................. 50

3.3.3.

Giao diện ....................................................................................... 53

3.3.4.


Đánh giá ........................................................................................ 59

3.4. Kết luận chương ...................................................................................... 61
KẾT LUẬN ..................................................................................................... 63
TÀI LIỆU THAM KHẢO .............................................................................. 64
ii


CÁC KÝ HIỆU, CHỮ VIẾT TẮT
Viết tắt

Tiếng Anh

AES

Advanced Encryption Standard

API
CBC

Chuẩn mã hố tiên
tiến

Application Programming

Giao diện lập trình

Interface

ứng dụng


Cipher Block Chaining

Chuỗi khối mật mã

DAC

Discretionary Access Control

DBMS

Database Management System

MAC

Message Authentication Code

PBKDF2

Tiếng Việt

Điều khiển truy cập
tuỳ quyền
Hệ quản trị cơ sở dữ
liệu
Mã xác thực thơng
báo

Password Based Key Derivation


Hàm dẫn xuất khố

Function 2

dựa trên mật khẩu 2

PKI

Public Key Infrastructure

TDE

Transparent Data Encryption

SHA

Secure Hash Algorithm

iii

Hạ tầng khố cơng
khai
Mã hố dữ liệu
trong suốt
Giải thuật băm an
tồn


LỜI MỞ ĐẦU
Hiện nay, các thiết bị di động ngày càng được sử dụng trong hoạt động

hàng ngày, chúng đã trở thành một bộ lưu trữ di động, lưu trữ nhiều thông tin cá
nhân của người dùng. Hầu hết các hệ điều hành di động, bao gồm cả Android lưu
trữ dữ liệu trong cơ sở dữ liệu và cung cấp API cho các ứng dụng có thể truy cập
cơ sở dữ liệu do hệ thống quản lý hoặc để quản lý cơ sở dữ liệu của chính nó. Tuy
nhiên đa phần các ứng dụng lưu trữ dữ liệu ở bản rõ trong các tập tin cơ sở dữ liệu
của nó, kết quả là nội dung cơ sở dữ liệu có thể bị rị rỉ ngồi ý muốn.
Việc lựa chọn một cơ sở dữ liệu để đáp ứng các yêu cầu về lưu trữ cũng
như bảo mật thông tin cần thỏa mãn đầy đủ các nhu cầu: là cơ sở dữ liệu nhúng,
dung lượng nhỏ, thiết kế và cài đặt đơn giản, dễ thao tác trên thiết bị di động. Và
SQLite là một ví dụ điển hình xuất sắc, đáp ứng đầy đủ những nhu cầu trên để trở
thành một cơ sở dữ liệu tối ưu để lưu trữ dữ liệu trong ứng dụng di động. Song
song với đó, bên cạnh lưu trữ thì bảo mật dữ liệu cũng là một vấn đề quan trọng.
Dữ liệu nằm trong cơ sở dữ liệu càng quý giá thì một cơ sở dữ liệu càng cần có
mức độ bảo mật cao, để bảo vệ bảo đảm sự an tồn của dữ liệu có trong cơ sở dữ
liệu trên thiết bị di động. Để đáp ứng nhu cầu bảo mật trên, SQLCipher là một
giải pháp bảo mật tiêu biểu. Việc tích hợp SQLCipher bảo đảm dữ liệu trong suốt
với người dùng; hoạt động hiệu quả ngay cả với cơ sở dữ liệu có kích thước lớn;
mã hóa dữ liệu trong cơ sở dữ liệu SQLite,…

vii


Đồ án gồm 3 chương cụ thể như sau:
Chương 1: Tổng quan về cơ sở dữ liệu SQLite
Chương đầu tiên tìm hiểu về cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu trên
thiết bị di động; An tồn thơng tin trong cơ sở dữ liệu; Tổng quan về cơ sở dữ liệu
SQLite và cơ chế hoạt động của SQLite trong Android.
Chương 2: Giải pháp bảo mật cơ sở dữ liệu SQLite sử dụng
SQLCipher
Chương này trình bày về các nguy cơ gây mất an toàn cho cơ sở dữ liệu

SQLite; Cơ chế bảo mật cho cơ sở dữ liệu SQLite và tìm hiểu về đặc điểm, tính
năng bảo mật và cách thức hoạt động của SQLCipher.
Chương 3: Xây dựng ứng dụng có bảo mật trên hệ điều hành Android
Chương này xây dựng ứng dụng có bảo mật cơ sở dữ liệu SQLite cho thiết
bị di động dùng hệ điều hành Android sử dụng SQLCipher.

viii


CHƯƠNG 1: TỔNG QUAN VỀ CƠ SỞ DỮ LIỆU SQLITE
1.1.

Cơ sở dữ liệu và hệ quản trị cơ sở dữ liệu trên thiết bị di động
Dữ liệu là các thông tin liên quan đến đối tượng (ví dụ như người, vật, sự

việc,...). Dữ liệu được mô tả dưới nhiều dạng khác nhau (như ký tự, ký hiệu, hình
ảnh, âm thanh...).
Dữ liệu về đối tượng có thể khác nhau tùy thuộc vào mục đích quản lý. Ví
dụ: Cùng là dữ liệu về đối tượng sinh viên nhưng với mục đích quản lý khác nhau
thì sẽ khác nhau, cụ thể như sau:
- Với mục đích quản lý điểm, dữ liệu về đối tượng sinh viên sẽ bao gồm:
Tên, Mã sinh viên, Điểm môn 1, Điểm môn 2, Điểm môn 3.
- Với mục đích quản lý thơng tin cá nhân, dữ liệu về đối tượng sinh viên sẽ
bao gồm: Tên, Địa chỉ, Ngày sinh, Quê quán, Lớp.
Cơ sở dữ liệu trên thiết bị di động là tập hợp dữ liệu được tổ chức một cách
có cấu trúc liên quan với nhau và được lưu trữ trên các thiết bị này. Cơ sở dữ liệu
được thiết kế, xây dựng cho phép người dùng lưu trữ dữ liệu, truy xuất thông tin
hoặc cập nhật dữ liệu. Tất cả cơ sở dữ liệu của Android được lưu trữ trong thư
mục /data/data/<tên package>/databases trong thiết bị hoặc máy ảo.
Hệ quản trị cơ sở dữ liệu là một tập các chương trình cho phép người dùng

tạo lập và duy trì các cơ sở dữ liệu. Các thao tác cơ sở dữ liệu được hỗ trợ thực
hiện gồm:
- Định nghĩa: Khai báo các kiểu, cấu trúc và ràng buộc dữ liệu.
- Xây dựng: Liên quan đến việc lưu trữ dữ liệu trên các phương tiện lưu trữ
do hệ quản trị cơ sở dữ liệu quản lý.
- Xử lý: Cho phép thực hiện các thao tác truy vấn, thêm, sửa, xóa dữ liệu.
- Chia sẻ: Cho phép nhiều người dùng cùng truy nhập, chia sẻ dữ liệu.
1.2.

An tồn thơng tin trong cơ sở dữ liệu
1


1.2.1. Yêu cầu để đảm bảo an toàn cho cơ sở dữ liệu
Việc tổ chức, lưu trữ thơng tin nói chung có thể được triển khai dưới nhiều
hình thức và công nghệ khác nhau, sử dụng các phần mềm và phương tiện lưu trữ
khác nhau, trong đó việc sử dụng cơ sở dữ liệu để lưu trữ thông tin là rất phổ biến.
Do vậy, việc đảm bảo an toàn cho cơ sở dữ liệu là vấn đề cấp thiết và phải được
xác định ngay từ ban đầu.
Bảo mật hay an toàn cho cơ sở dữ liệu (Database Security) là một tập hợp
các thủ tục, chuẩn, chính sách và cơng cụ được sử dụng để bảo vệ dữ liệu nhằm
tránh bị trộm cắp, lạm dụng, đột nhập, tấn công, hoặc các hành động khơng mong
muốn khác. Nói cách khác, mục đích của việc bảo mật hay an toàn cho cơ sở dữ
liệu là để đảm bảo 3 thuộc tính cơ bản của an tồn cơ sở dữ liệu, bao gồm tính bí
mật (Confidentiality), tính tồn vẹn (Integrity) và tính sẵn sàng (Availability).
Trong đó:
- Tính bí mật: Đảm bảo rằng chỉ có người dùng có thẩm quyền (Authorised
Users) mới có thể truy nhập và thực hiện các thao tác trên cơ sở dữ liệu. Tính bí
mật có thể được đảm bảo thơng qua các cơ chế kiểm soát truy nhập bao gồm xác
thực (Authentication) và trao quyền (Authorisation) vào các đối tượng trong cơ

sở dữ liệu. Ngồi ra tính bí mật cịn được đảm bảo bởi nhiều biện pháp bảo mật
bổ sung, như bảo vệ vật lý, tường lửa, mã hóa,…
- Tính tồn vẹn: Đảm bảo rằng dữ liệu có thể được sửa đổi bởi những người
dùng có thẩm quyền. Tính tồn vẹn liên quan đến tính hợp lệ (Validity), tính nhất
quán (Consistency) và chính xác (Accuracy) của dữ liệu. Dữ liệu được xem là
tồn vẹn nếu nó khơng bị thay đổi, hợp lệ và chính xác. Tính tồn vẹn có thể được
đảm bảo bởi các ràng buộc dữ liệu (Constraints), các phép kiểm tra và các cơ chế
xử lý dữ liệu.
- Tính sẵn sàng: Đảm bảo rằng cơ sở dữ liệu có thể truy nhập bởi người
dùng hợp pháp bất cứ khi nào họ u cầu. Tính sẵn sàng có liên quan mật thiết
đến hạ tầng mạng và năng lực của các máy chủ cơ sở dữ liệu và có thể được đảm
2


bảo bằng chuỗi máy chủ cơ sở dữ liệu và hệ thống cân bằng tải. Tính sẵn sàng có
thể được đo bằng các yếu tố:
+ Thời gian cung cấp dịch vụ (Uptime);
+ Thời gian ngừng cung cấp dịch vụ (Downtime);
+ Tỷ lệ phục vụ: A = (Uptime)/(Uptime + Downtime);
+ Thời gian trung bình giữa các sự cố;
+ Thời gian trung bình ngừng để sửa chữa;
+ Thời gian khơi phục sau sự cố.
Với các yêu cầu về an toàn cơ sở dữ liệu nêu trên, chúng ta dễ dàng nhận
thấy các mối đe dọa cho cơ sở dữ liệu như sau:
- Sự thất thốt thơng tin khơng hợp lý, điều này đe dọa tính bí mật của dữ
liệu.
- Thay đổi dữ liệu khơng hợp lý, điều này đe dọa tính tồn vẹn của dữ liệu.
- Từ chối dịch vụ, điều này đe dọa tính sẵn sàng của dữ liệu.
1.2.2. Các yếu tố liên quan đến an toàn cơ sở dữ liệu
An toàn cơ sở dữ liệu liên quan đến ba yếu tố: Con người (People), Phần

mềm (Software) và Dữ liệu (Data).

Hình 1.1. Bảo mật cơ sở dữ liệu và các yếu tố liên quan
3


Đồng thời, các nhân tố liên quan đến bảo mật cơ sở dữ liệu trong mơ hình
này bao gồm: Các mối đe dọa (Threats), Các rủi ro (Ricks) và Các lỗ hổng
(Vulnerabilities).

Hình 1.2. Các mối đe doạ bảo mật cơ sở dữ liệu
Các mối đe dọa đối với bảo mật cơ sở dữ liệu như minh họa của Hình 1.2
bao gồm 4 loại: các đe dọa đến từ con người (People), từ mã độc (Malicious code),
từ các thảm họa công nghệ (Technological disasters) và thảm hoạ thiên nhiên
(Natural diasters). Trong số các mối de dọa nêu trên, các mối đe dọa đến từ người
dùng ác tính, như tin tặc và mã độc có mức nguy hiểm cao nhất. Điều này cũng
đúng với thống kê Top 10 mối đe dọa đối với bảo mật cơ sở dữ liệu theo hãng
Imperva thực hiện năm 2015:
1. Excessive and Unused Privileges (Đặc quyền quá mức hoặc không sử
dụng)
2. Privilege Abuse (Lạm dụng đặc quyền)
3. Input Injection (Chèn mã đầu vào)
4. Malware (Mã độc)
5. Weak Audit Trail (Log kiểm tốn yếu)
6. Storage Media Exposure (Rị rỉ dữ liệu từ phương tiện lưu trữ)
7. Exploitation of Vulnerabilities and Misconfigured Databases (Khai thác
lỗi hổng và cấu hình cơ sở dữ liệu sai)
4



8. Unmanaged Sensitive Data (Các dữ liệu nhạy cảm không được quản lý)
9. Denial of Service (Tấn công từ chối dịch vụ)
10. Limited Security Expertise and Education (Kiến thức chuyên gia và đào
tạo về bảo mật hạn chế)

Hình 1.3. Các rủi ro bảo mật cơ sở dữ liệu
Hình 1.3 cung cấp 4 nguồn rủi ro đối với bảo mật cơ sở dữ liệu, bao gồm
các rủi ro đến từ con người (People), từ dữ liệu (Data), từ phần cứng (Hardware)
và từ sự tín nhiệm (Confidence).

Hình 1.4. Các lỗ hổng bảo mật cơ sở dữ liệu
Hình 1.4 nêu 4 loại lỗ hổng bảo mật cơ sở dữ liệu, bao gồm lỗ hổng do
người dùng (User mistakes), lỗ hổng do thiết kế và lập trình (Design and
5


implementation), lỗ hổng phần mềm (Software) và lỗ hổng do cài đặt và cấu hình
(Installation and configuration). Trong có loại lỗ hổng kể trên, các lỗ hổng do
người dùng và lỗ hổng do cài đặt và cấu hình là các loại thường xuyên xảy ra và
có mức rủi ro cao nhất.
Mơ hình bảo mật cơ sở dữ liệu tổng qt:

Hình 1.5. Mơ hình bảo mật cơ sở dữ liệu tổng quát
Trên nguyên tắc giảm thiểu các yếu tố có thể truy nhập trực tiếp đến dữ liệu
và bề mặt tấn cơng cơ sở dữ liệu, Hình 1.5 mơ tả mơ hình bảo mật cơ sở dữ liệu
tổng qt. Theo đó, mơ hình bảo mật cơ sở dữ liệu gồm 7 lớp: lớp con người
(People), lớp ứng dụng (Applications), lớp mạng (Network), lớp hệ điều hành
(Operating System), lớp hệ quản trị cơ sở dữ liệu (DBMS), lớp file dữ liệu (Data
Files) và lớp dữ liệu (Data).


Hình 1.6. Phương pháp thực hiện bảo mật cơ sở dữ liệu
6


Dựa trên mơ hình bảo mật cơ sở dữ liệu tổng qt, Hình 1.6 mơ tả phương
pháp thực hiện bảo mật cơ sở dữ liệu. Theo đó, các khâu thực hiện bảo mật cơ sở
dữ liệu được đưa ra tương ứng với các khâu trong quy trình phát triển phần mềm.
Các khâu thực hiện bảo mật cơ sở dữ liệu gồm: Identification (Nhận dạng rủi ro),
Assessment (Đánh giá rủi ro), Design (Thiết kế các kiểm soát), Implementation
(Áp dụng các kiểm soát), Evaluation (Đánh giá hiệu quả áp dụng) và Auditing
(Kiểm toán). Kết quả khâu kiểm toán được sử dụng làm phản hồi để thực hiện các
điều chỉnh phù hợp với các khâu trước đó.
1.2.3. Các cơ chế để bảo vệ tính an tồn của cơ sở dữ liệu
Dữ liệu và cơ sở dữ liệu có thể được đảm bảo an tồn thơng qua việc đảm
bảo an tồn cho ứng dụng truy nhập cơ sở dữ liệu. Có nhiều kỹ thuật và cơ chế để
bảo vệ tính an tồn của cơ sở dữ liệu. Các kỹ thuật mã hố có thể được sử dụng
để bảo vệ dữ liệu trong cơ sở dữ liệu cũng như để bảo vệ cả cơ sở dữ liệu. Hai
phương pháp phổ biến thường được sử dụng là mã hố (Encryption) và băm
(Hashing). Trong đó:
- Mã hố (Encrypted): Sử dụng các giải thuật mã hoá với khoá (Key) để
bảo vệ dữ liệu. Thông thường các giải thuật mã hoá khối đối xứng được sử dụng.
Các giải thuật mã hố thơng dụng: DES, 3DES, AES, RC2, RC4,…
- Băm (Hashing): Sử dụng các giải thuật băm để chuyển đổi dữ liệu có độ
dài bất kỳ thành chuỗi có độ dài cố định. Với hàm băm một chiều thì khơng giải
mã được. Các giải thuật băm thông dụng: MD4, MD5, MD6, SHA1, SHA2,
SHA3,… Băm thường được dùng để mã hoá mật khẩu.
Với dữ liệu lưu trữ trong cơ sở dữ liệu có thể sử dụng mã hố hệ thống tập
tin, hoặc mã hoá dữ liệu kiểu trong suốt (TDE). Dữ liệu lưu giữ trong các bảng có
thể được mã hố theo 2 hướng:
- Sử dụng các hàm mã hoá và giải mã trong cơ sở dữ liệu để mã hoá và giải

mã khi thực hiện các thao tác ghi, đọc. Các hệ quản trị cơ sở dữ liệu cũ thường
không hỗ trợ các hàm mã hoá và giải mã. Các hệ quản trị cơ sở dữ liệu mới hỗ trợ
7


các hàm mã hoá và giải mã ở mức hạn chế. Dữ liệu trong các bảng và cả dữ liệu
quản lý các bảng có thể được mã hố nhờ các công nghệ đặc biệt thực hiện trực
tiếp trên máy chủ cơ sở dữ liệu: dữ liệu được mã hoá khi nó được ghi vào cơ sở
dữ liệu và dữ liệu được giải mã sau khi được đọc từ cơ sở dữ liệu và nạp vào bộ
nhớ. Trong đó, cơng nghệ Transparent Data Encryption (TDE) cho phép mã hoá
từng khối dữ liệu khi nó được ghi vào cơ sở dữ liệu và giải mã khối được đọc ra
từ cơ sở dữ liệu. Công nghệ TDE được hỗ trợ bởi nhiều hệ quản trị cơ sở dữ liệu:
MS-SQL, Oracle, IBM DB2,…
- Mã hoá và giải mã dữ liệu tại lớp ứng dụng: Thư viện API của ứng dụng
hỗ trợ các hàm mã hoá và giải mã mạnh. Nên sử dụng các cơ chế mã hoá ở mức
ứng dụng.
Khi dữ liệu trong bảng được mã hố sẽ gây khó khăn cho việc lập chỉ số và
tìm kiếm. Do vậy, chúng ta cần cân nhắc các dữ liệu cần mã hoá và chọn phương
pháp mã hoá phù hợp. Với các trường dữ liệu cần lập chỉ số và tìm kiếm (thường
xuyên, đặc biệt là các trường khố) thì khơng nên thực hiện mã hố.
Ngồi ra, mã hoá là trong suốt với người sử dụng nhưng sẽ làm tăng tải
máy chủ cơ sở dữ liệu hoặc máy chủ ứng dụng. Do vậy, chúng ta cần lựa chọn
phương pháp mã hoá và phần dữ liệu cần mã hoá phù hợp.
Cơ sở dữ liệu sử dụng trên các thiết bị di động cũng có các cơ chế và kỹ
thuật để đảm bảo an toàn trên. Cơ sở dữ liệu SQLite có thể tích hợp các cơng cụ
mã hố như SQLCipher để đảm bảo an tồn cho dữ liệu lưu trữ trên cơ sở dữ liệu
này.
1.3.

Tổng quan về hệ quản trị cơ sở dữ liệu SQLite


1.3.1. Giới thiệu chung về hệ quản trị cơ sở dữ liệu SQLite
1.3.1.1.

Khái niệm

SQLite là mã nguồn mở, là cơ sở dữ liệu nhúng. SQLite được phát hành
năm 2000 là thư viện điều khiển thực thi độc lập, khơng cấu hình. Mã nguồn của
SQLite được cơng khai và sử dụng miễn phí cho bất kỳ mục đích sử dụng nào, kể
8


cả thương mại và riêng tư và được tích hợp sẵn trên Android. Nó được thiết kế để
cung cấp những phương pháp thích hợp cho ứng dụng để quản lý dữ liệu mà khơng
cần chi phí quản lý thường thấy ở những hệ thống quản trị cơ sở dữ liệu quan hệ
chuyên dụng.

Hình 1.7. Logo của hệ quản trị cơ sở dữ liệu SQLite
1.3.1.2.

Khả năng nhúng

SQLite là một kiểu cơ sở dữ liệu nhúng, được nhúng vào ứng dụng và đảm
nhiệm ln vai trị làm máy chủ quản lý dữ liệu. Mã của SQLite được nhúng cùng
mã của chương trình, và mã đó sẽ được biên dịch cùng với các đoạn mã khác của
chương trình. SQLite thực thi mà khơng phụ thuộc vào các yếu tố như cấu hình
cơ sở dữ liệu, kết nối mạng, yêu cầu tên người dùng hay mật khẩu nên SQLite rất
dễ dàng được sử dụng như một chương trình hỗ trợ lưu dữ liệu trong ứng dụng.
Khi chương trình được cài lên thiết bị, nếu thiết bị khơng có kết nối mạng thì việc
kết nối dữ liệu cũng khơng bị ảnh hưởng, chương trình vẫn có thể hoạt động tốt.

Ngồi ra, tập tin cơ sở dữ liệu SQLite chỉ là một tập tin duy nhất, nhỏ gọn được
nhúng bên trong ứng dụng. Tất cả dữ liệu của ứng dụng được lưu trữ trong tập tin
này và các thao tác với dữ liệu như chèn, sửa, xóa, tìm kiếm đều có thể được thực
hiện thơng qua các chức năng của ứng dụng. Cả ứng dụng và máy chủ đều chạy
với nhau trong cùng một quá trình nên làm giảm chi phí liên quan như kết nối
mạng, đơn giản hóa việc quản lý cơ sở dữ liệu và dễ dàng hơn cho việc triển khai
ứng dụng.

9


Thông thường, những ứng dụng chạy trên thiết bị di động, cơ sở dữ liệu sẽ
được nhúng trong ứng dụng. Đầu ra của các chương trình đó là một ứng dụng bao
gồm chức năng và cơ sở dữ liệu được nhúng trong nó. Những ứng dụng này
thường được bán trên chợ công nghệ như Google Play, App Store, Windows Store
và nhà phát triển thường có xu hướng là bán ứng dụng mà khơng muốn mất nhiều
chi phí bảo trì và quản lý dữ liệu. Do đó các nhà phát triển thường chọn theo
hướng đóng gói chương trình đã chứa cơ sở dữ liệu.
1.3.1.3.

SQLite là cơ sở dữ liệu của nhà phát triển

Đối với các nhà phát triển ứng dụng, SQLite là hệ quản trị cơ sở dữ liệu
linh hoạt. SQLite được biết đến như là một cơ sở dữ liệu, là thư viện lập trình và
là cơng cụ dịng lệnh rất dễ sử dụng. Có nhiều cách sử dụng SQLite như: môi
trường nhúng, website, dịch vụ hoạt động hệ thống, các tập lệnh và ứng dụng.
Ngoài ra, với một số lý do như: khơng có hệ quản trị cơ sở dữ liệu bên ngồi hoặc
khơng cấu hình mạng hoặc khơng cần tên người dùng và mật khẩu nên SQLite là
cơ sở dữ liệu tốt cho việc phát triển và kiểm thử.
Bên cạnh chức năng nổi trội nhất là lưu trữ dữ liệu, SQLite cịn cung cấp

các cơng cụ chức năng để phục vụ cho việc xử lý dữ liệu chung. Tùy thuộc vào
kích thước và độ phức tạp, SQLite có thể dễ dàng biểu diễn một số cấu trúc dữ
liệu ứng dụng như một bảng hoặc nhiều bảng trong cơ sở dữ liệu. Người dùng vẫn
có thể thực hiện các truy vấn với dữ liệu như các cơ sở dữ liệu khác.
Với các lập trình viên lập trình ứng dụng cho điện thoại di động cài hệ điều
hành Android, việc sử dụng SQLite cũng đơn giản trong việc tạo ra cơ sở dữ liệu,
nhúng cơ sở dữ liệu vào ứng dụng và việc xử lý dữ liệu chung. Để tạo ra cơ sở dữ
liệu, nhà phát triển ứng dụng có thể dùng cơng cụ SQLite Manager hoặc cơng cụ
dịng lệnh. Những công cụ trên rất dễ dàng cài đặt, không quá phức tạp, ví dụ như
SQLite Manager được tích hợp sẵn trong Firefox.
1.3.2. Đặc trưng của hệ quản trị cơ sở dữ liệu SQLite
- Khơng cần cấu hình:
10


SQLite được thiết kế để có thể khơng cần quản trị viên của hệ thống. Việc
cấu hình và quản lý SQLite rất đơn giản, nó đã bao gồm đầy đủ các chức năng
được cấu hình trong hệ thống, người dùng khơng cần can thiệp vào bên trong mà
vẫn có thể dùng như một hệ thống hồn chỉnh.
- Tính di động, khả chuyển:
SQLite được thiết kế đặc biệt với khả năng di động của nó. SQLite có thể
biên dịch và chạy trên nhiều hệ điều hành như Windows, Linux, BSD, OS X, hệ
điều hành Unix như Solaris, HPUX và AIX, cũng như nhiều nền tảng nhúng như
QNX, VxWorks, Symbian, Palm OS và Window CE. Nó cịn có thể hoạt động tốt
trên các kiến trúc bản 16, 32 và 64 bit với các thứ tự byte lớn nhỏ. Tính di động
khơng chỉ dừng lại với phần mềm mà các tập tin cơ sở dữ liệu SQLite cũng có
khả năng di động. Các định dạng tập tin cơ sở dữ liệu là định dạng nhị phân, chúng
tương thích trên tất cả các hệ điêu hành, kiến trúc phần cứng và thứ tự byte mà
SQLite có thể hoạt động được. Người dùng có thể tạo cơ sở dữ liệu SQLite trên
rất nhiều công cụ và sử dụng các hệ điều hành hay thiết bị, ngay cả trên điện thoại

di động mà không cần bất kỳ sử chuyển đổi hay sửa đổi nào. Hơn nữa, cơ sở dữ
liệu SQLite có thể chứa tới 2 terabyte dữ liệu và hỗ trợ 2 kiểu mã hóa UTF-8 và
UTF-16.
- Bộ thư viện quản lý rất nhỏ, gọn:
Dưới 500 KB cho bản đầy đủ tính năng, và có thể ít hơn nếu loại bớt một
số đặc tính. Cụ thể, kích thước phiên bản SQLite 3.7.17 ít hơn 350 KB trên hệ
điều hành 32 bit và ít hơn 409 KB trên các hệ thống 64 bit.
- Tính đơn giản:
Như một thư viện lập trình, API của SQLite là một trong những giao diện
lập trình ứng dụng đơn giản và dễ sử dụng. API được thiết kế giúp người dùng có
thể tùy chọn SQLite bằng nhiều cách, chẳng hạn như thực hiện các chức năng do
người dùng mở rộng bằng ngôn ngữ C. Hơn thế nữa, có nhiều thư viện giao diện
và nhiều ngơn ngữ có thể sử dụng được cơ sở dữ liệu SQLite Perl, Python, Ruby,
11


Tcl/Tk, Java, PHP, Visual Basic, Objective C,… Việc thiết kế các thư viện giao
diện cho phép SQLite có đầy đủ các chức năng và mở rộng khi mà mã nguồn của
chúng không phức tạp và vẫn đơn giản. Mỗi khối của hệ thống chuyên xử lý một
nhiệm vụ cụ thể. Những khối này giúp cho SQLite có thể dễ dàng phát triển và gỡ
lỗi mà không phụ thuộc vào hệ thống. Kết quả của những cơng việc đó giúp
SQLite có thể tách biệt rõ ràng giữa front-end (trình biên dịch SQL) và back-end
(hệ thống lưu trữ) cho phép 2 thành phần này độc lập nhau. Tóm lại, việc thiết kế
API rõ ràng trong cả tài liệu giao diện, việc phân chia các khối và thành phần
riêng biệt, khơng có sự ràng buộc giữa các khối và thành phần đó đã giúp việc sử
dụng SQLite đơn giản và dễ dàng hơn.
- Tính linh hoạt:
SQLite là cơ sở dữ liệu nhúng, nó cung cấp những điều kiện tốt nhất như
sức mạnh và tính linh hoạt của một cơ sở dữ liệu có hệ thống front-end và đơn
giản, nhỏ gọn như hệ thống back-end. Hệ thống font-end bao gồm trình biên dịch

SQL bên trong hệ thống cơ sở dữ liệu, có nhiệm vụ thực thi và xử lý các câu lệnh
truy vấn. Còn hệ thống back-end đảm nhiệm chức năng lưu trữ dữ liệu cho SQLite.
Theo đó, khơng cần cấu hình máy chủ, không cần kết nối mạng hoặc không phải
lo lắng về việc kết nối cơ sở dữ liệu và khơng có giới hạn nền tảng, khơng phải
tìm hiểu kiến trúc API và miễn phí về bản quyền. Thay vào đó, nếu muốn sử dụng
cơ sở dữ liệu SQLite, chỉ cần đưa SQLite vào ứng dụng.
- Cấp phép tự do:
Tất cả mã nguồn của SQLite được chia sẻ mà không cần giấy phép. Ai cũng
có thể sử dụng bất kỳ phần nào của SQLite mà không phải bồi thường bản quyền
tác giả. SQLite khơng giới hạn pháp lý về cách bạn có thể sử dụng mã nguồn dưới
mọi hình thức như chỉnh sửa, kết hợp, phân phối, bán và sử dụng cho bất kỳ mục
đích thương mại mà khơng có phí bản quyền hay bị hạn chế. Tóm lại SQLite là
hệ quản trị cơ sở dữ liệu miễn phí.
- Tính tin cậy:
12


Mã nguồn của SQLite khơng chỉ miễn phí mà SQLite cịn cho phép viết
trong đó. Mã nguồn của SQLite bao gồm 70.000 dịng chuẩn được viết bằng ngơn
ngữ C, mã nguồn rõ ràng, được chú thích tốt. Mã nguồn cịn được thiết kế giúp
người sử dụng tiếp cận, dễ dàng hiểu và dễ dàng chính sửa và dễ dàng truy cập.
Với lập trình viên thạo ngơn ngữ C thì có thể theo dõi mọi phần của mã nguồn
SQLite hoặc với mã nguồn đó thì họ có thể đủ thời gian để tìm hiểu.
Thêm nữa, mã nguồn của SQLite cung cấp API đầy đủ tính năng đặc biệt
cho việc tùy chọn và mở rộng SQLite thông qua việc bổ sung các hàm do người
dùng định nghĩa, tập hợp và đối chiếu tuần tự cùng với hỗ trọ cho các hoạt động
bảo mật.
- Tính tiện lợi:
Ngồi những tính năng giống như các hệ quản trị cơ sở dữ liệu khác, thì
SQLite cịn có một số các chức năng duy nhất mà chỉ SQLite mới có. Nó bao gồm

các tính năng như: gán kiểu động, giải quyết xung đột và khả năng đính kèm nhiều
cơ sở dữ liệu cho một phiên làm việc đơn lẻ.
Tính năng gán kiểu động của SQLite gần giống với ngôn ngữ kịch bản. Đặc
biệt, kiểu của biến được xác định bằng chính giá trị của nó, mà khơng phải cần
định nghĩa trước như các ngôn ngữ khác như C và Java. Hầu hết các hệ thống cơ
sở dữ liệu giới hạn giá trị các trường khi định nghĩa một kiểu trong cột tương ứng.
Nhưng trong SQLite thì các cột có thể có những kiểu được định nghĩa và các
trường không bị giới hạn giá trị, và các biến trong ngơn ngữ kịch bản có thể được
gán giá trị với các kiểu khác nhau.
Thêm nữa, chức năng giải quyết xung đột trong SQLite cũng là một tính
năng tiện lợi khác. Chẳng hạn khi thực hiện câu lệnh UPDATE thì có thể gặp lỗi
xung đột kiểu của biến. SQLite có câu lệnh UPSET hoặc MERGE để giải quyết
vấn đề xung đột đó.
Cuối cùng là tính năng đính kèm tập tin cơ sở dữ liệu bên ngoài vào phiên
bản làm việc hiện tại. Tính năng này được dùng khi đang kết nối và làm việc với
13


một cơ sở dữ liệu, ta lại muốn làm việc với một cơ sở dữ liệu khác cùng một thời
điểm, ra có thể dùng câu lệnh ATTACH để thực hiện mục đích này.
Tóm lại, với việc cung cấp một số tính năng đặc biệt thì SQLite giúp người
dùng sử dụng và thao tác với hệ quản trị SQLite dễ dàng và tiện lợi hơn.
1.3.3. Hiệu suất hoạt động và hạn chế của SQLite
1.3.3.1.

Hiệu suất hoạt động

SQLite là cơ sở dữ liệu có tốc độ cao. Tuy nhiên, theo đánh giá chung thì
có một số chức năng SQLite có thể làm nhanh hơn các hệ quản trị cơ sở dữ liệu
khác. Và một số chức năng khác thì khơng thể làm tốt như cơ sở dữ liệu khác. Đối

với các câu lệnh đơn giản như SELECT, INSERT, UPDATE, so với các cơ sở dữ
liệu khác thì SQLite thực hiện nhanh hơn. Có 2 lý do chính, lý do thứ nhất là các
câu lệnh đó thường được thực thi trên bộ nhớ RAM hoặc ổ đĩa. Lý do thứ hai là
SQLite tốn kém ít dung lượng cho việc bắt đầu một giao dịch hoặc tạo ra một kế
hoạch truy vấn và SQLite khơng phải chịu chi phí để thực hiện việc kết nối đến
máy chủ hay không phải đàm phán xác thực các quyền. Do đó, SQLite thực hiện
các truy vấn đơn giản nhanh hơn.
1.3.3.2.

Hạn chế

Ngoài các ưu điểm trên, nếu so sánh SQLite với các cơ sở dữ liệu mạnh
khác như Oracle Databse, SQL Server,... thì SQLite sẽ bộc lộ một số điểm yếu
sau:
- Tính đồng thời: SQLite sử dụng cơ chế khóa coarse-gained locking có thể
hỗ trợ nhiều người đọc dữ liệu, nhưng chỉ có 1 người có thể ghi dữ liệu một lúc.
- Kết nối: Mặc dù SQLite có thể được chia sẻ qua hệ thống tập tin mạng,
tuy nhiên độ trễ giữa các hệ thống tập tin này sẽ ảnh hưởng nghiêm trọng tới hiệu
suất thực hiện của SQLite. Tệ hơn nữa là, các lỗ hỏng trong việc triển khai hệ
thống tập tin trong mơi trường mạng có thể xảy ra nhiều lỗi do các tập tin có thể
bị mở và điều chỉnh từ xa.
14


- Phù hợp với các ứng dụng có quy mơ dữ liệu nhỏ: Trong thời đại bùng nổ
thông tin như hiện nay, SQLite không phải lựa chọn lý tưởng để đáp ứng nhu cầu
xử lý trên 1 khối lượng dữ liệu lớn, phát sinh liên tục.
Hầu hết các hạn chế được nêu trên là “cố ý”, là kết quả của việc thiết kết
SQLite. Ví dụ như hạn chế hỗ trợ ghi đồng thời, nếu SQLite có khả năng ghi đồng
thời thì làm cho cơ sở dữ liệu này trở nên phức tạp và điều này đi ngược với sự

đơn giản trong thiết kế của SQLite. SQLite là cơ sở dữ liệu nhúng, khơng hỗ trợ
kết nối mạng. Với mục đích ban đầu SQLite được thiết kế để hoạt động như một
khối đơn giản, nhỏ gọn và dễ sử dụng, được nhúng vào bên trong ứng dụng. Do
đó, hạn chế của SQLite khơng cản trở nhiều trong việc các mục đích của nó.
1.4.

Cơ chế hoạt động của SQLite trên mơi trường Android
SQLite cung cấp hỗ trợ cơ sở dữ liệu riêng và là một phần của các thư viện

hỗ trợ khung ứng dụng cùng với các thư viện như SSL, OpenGL ES, Webkit,…
Các thư viện này được viết bằng C/C++ chạy trên nhân Linux và cùng Android
Runtime, tạo thành xương sống của ứng dụng.
Trước khi bắt đầu khám phá SQLite trong ứng dụng Android, hãy xem các
phương án lưu trữ thay thế trong Android.
1.4.1. Lưu trữ dữ liệu
Android cung cấp một số tùy chọn để lưu trữ dữ liệu ứng dụng. Giải pháp
được chọn tùy thuộc vào nhu cầu cụ thể trong từng tình huống, ví dụ như dung
lượng lưu trữ là bao nhiêu, loại dữ liệu cần lưu trữ và dữ liệu có chế độ riêng tư
đối với người dùng hay không. Một số tùy chọn lưu trữ dữ liệu khác nhau có sẵn
trên Android là:
- Lưu trữ dữ liệu nội bộ (Internal Storage): Lưu trữ tệp riêng tư của ứng
dụng (app-private files) trên hệ thống tệp của thiết bị.
- Lưu trữ tệp bên ngoài (External Storage): Lưu trữ tệp trên hệ thống tệp
được chia sẻ bên ngoài. Dữ liệu này thường được người dùng chia sẻ, chẳng hạn
như hình ảnh, video…
15


- Shared preferences: Lưu trữ dữ liệu riêng tư trong các cặp key-value.
- Database: Lưu trữ dữ liệu có cấu trúc trong dữ liệu riêng tư.

1.4.1.1.

Lưu trữ dữ liệu nội bộ

Lưu trữ dữ liệu nội bộ (Internal Storage) là nơi lưu trữ dữ liệu cá nhân của
từng ứng dụng, các dữ liệu được tạo ra và lưu trữ này sẽ được sử dụng riêng cho
từng ứng dụng đó và các ứng dụng khác sẽ không thể truy cập vào được. Khi ứng
dụng đó được gỡ bỏ khỏi thiết bị Android thì các tâp tin dữ liệu được lưu tại bộ
nhớ trong này sẽ bị xóa bỏ theo. Khi chúng ta làm việc với các tập tin dữ liệu ở
bộ nhớ trong thì chỉ có thể làm việc với tên tập tin đơn giản mà không thể làm
việc với tên tập tin có đường dẫn.
1.4.1.2.

Lưu trữ dữ liệu bên ngồi

Lưu trữ dữ liệu bên ngoài (External Storage) là nơi lưu trữ dữ liệu bên ngoài
của Android, các tập tin dữ liệu lưu trữ mà bạn lưu trữ tại đây không được hệ
thống áp dụng bảo mật.
Thơng thường có 2 loại lưu trữ ngoài là lưu trữ tại ổ cứng điện thoại và lưu
trữ tại ổ cứng lưu động như thẻ nhớ (SD card). Dữ liệu được tạo ra sẽ không bị
ràng buộc bởi ứng dụng, khi ta xóa ứng dụng tạo ra dữ liệu tại bộ nhớ ngồi thì
dữ liệu đó không mất đi.
1.4.1.3.

Shared preferences

Shared preferences là một lớp cho phép lưu trữ và nhận dữ liệu theo keyvalue với các kiểu dữ liệu nguyên thủy như integer, string, boolean, float, long.
Nếu không cần lưu trữ nhiều dữ liệu và không yêu cầu cấu trúc, nên sử dụng
Shared preferences. Các cặp key-value được ghi vào tệp XML được chứa bên
trong thư mục của ứng dụng. Những cặp key-value này sẽ tồn tại và sẵn sàng cho

việc sử dụng trong suốt phiên bản làm việc của ứng dụng và được chia sẻ trong
các thành phần của ứng dụng (như activity, service, fragment,…). Các giá trị
Shared preferences này không thể truy xuất và được sử dụng từ những ứng dụng
16


khác.

Dữ

liệu

của

ứng

dụng

được

lưu

trong

mục

/data/data/PACKAGE_NAME/shared_prefs/FILE_NAME
Trong đó:
PACKAGE_NAME: Tên package của ứng dụng
FILE_NAME: Tên tập tin Shared preferences

Ví dụ: Ứng dụng có tên package là dev.example.shareprefs_demo và tập
tin Shared preferences có tên example.xml thì vị trí lưu tệp sẽ là:
data/data/dev.example.shareprefs_demo/shared_prefs/example.xml
1.4.1.4.

Database (SQLite)

Android cung cấp hỗ trợ đầy đủ cho cơ sở dữ liệu SQLite. Sử dụng một cơ
sở dữ liệu SQLite trong Android không yêu cầu thủ tục thiết lập hoặc quản lý cơ
sở dữ liệu. Chỉ phải xác định các lệnh SQL để tạo và cập nhật cơ sở dữ liệu. Sau
đó các cơ sở dữ liệu được quản lý tự động bởi các nền tảng Android. Truy cập vào
một cơ sở dữ liệu SQLite liên quan đến việc truy cập vào hệ thống tập tin, điều
này có thể làm chậm q trình truy cập dữ liệu. Vì vậy nó được khuyến khích để
thực hiện các hoạt động cơ sở dữ liệu không đồng bộ. Nếu ứng dụng tạo ra một
cơ sở dữ liệu, cơ sở dữ liệu này mặc định được lưu trữ trong thư mục
/data/data/PACKAGE_NAME/databases/DATABASE_NAME. Trong đó:
-

PACKAGE_NAME:



tên

package

của

ứng


dụng

như

com.example.sqlitedemo
- DATABASE_NAME: Là tên tập tin cơ sở dữ liệu SQLite
1.4.2. Sử dụng SQLite trong Android
Hệ điều hành Android cung cấp hệ quản trị cơ sở dữ liệu quan hệ đầy đủ
thông qua thư viện SQLite, mà không có bất kỳ hạn chế nào. Sử dụng SQLite, có
thể tạo độc lập, cơ sở dữ liệu quan hệ cho mỗi ứng dụng. Sử dụng chúng để lưu
trữ và quản lý cấu trúc dữ liệu phức tạp của ứng dụng. Tất cả cơ sở dữ liệu của
17


Android được lưu trữ trong thư mục /data/data/<tên package>/databases trong
thiết bị hoặc máy ảo.
Gói android.database chứa tất cả các lớp cần thiết để làm việc với cơ sở dữ
liệu. Gói android.database.sqlite chứa các lớp cụ thể của Android SQLite API
cung cấp nhiều API khác nhau để cho phép tạo, truy cập, sửa đổi và xóa cơ sở dữ
liệu. Một số thành phần quan trọng sẽ được giới thiệu dưới đây:
1.4.2.1.

SQLiteOpenHelper

Lớp SQLiteOpenHelper là lớp đầu tiên và quan trọng nhất của Android để
làm việc với cơ sở dữ liệu SQLite, nó nằm trong package android.database.sqlite
SQLiteOpenHelper là một lớp để triển khai thực hiện các tác vụ và hành
động được cho là quan trọng khi tạo, mở và sử dụng cơ sở dữ liệu SQLite và giúp
quản lý phiên bản cơ sở dữ liệu. SQLiteOpenHelper có phương thức khởi tạo sau:
SQLiteOpenHelper (Context context, String name,

SQLiteDatabase.CursorFactory factory, int version)

Trong đó:
- Context context là một lớp trừu tượng của hệ thống, chứa thông tin mơi
trường ứng dụng, cung cấp các phương thức để có thể tương tác với hệ điều hành,
giúp chúng ta dễ dàng truy cập và tương tác tới các tài nguyên của hệ thống…
- String name là tên tệp cơ sở dữ liệu trong bộ nhớ Android.
- SQLiteDatabase.CursorFactory factory là một lớp tạo ra các đối tượng
con trỏ hoạt động như bộ đầu ra cho tất cả các truy vấn áp dụng với SQLite trong
Android.
- int version là tham số phiên bản.
Khi khởi tạo một đối tượng của lớp này, ta phải ghi đè hai phương
thức:

18


- onCreate(): Phương thức này được gọi bởi framework, nếu có yêu cầu
truy cập cơ sở dữ liệu mà lại chưa khởi tạo cơ sở dữ liệu, phải viết code khởi tạo
cơ sở dữ liệu, cụ thể là khởi tạo bảng (chú ý: khi khởi tạo bảng, ta phải đặt tên
khóa chính là _id).
- onUpgrade(): Phương thức này được dùng khi ứng dụng có nhiều phiên
bản cơ sở dữ liệu được thêm vào. Nó sẽ cập nhật cơ sở dữ liệu hiện có hoặc khởi
tạo lại thơng qua onCreate().
Lớp này có 2 phương thức: getReadableDatabase() (chỉ đọc) và
getWriteableDatabase() (cho phép đọc ghi). Thơng qua 2 phương thức này, ta có
thể tạo ra một đối tượng SQLiteDatabase.
1.4.2.2.

SQLiteDatabase


Để khởi tạo ra một cơ sở dữ liệu, chỉ cần gọi phương thức
openOrCreateDatabase này với tên cơ sở dữ liệu của ta và chế độ như một tham
số. Nó trả về một thể hiện của cơ sở dữ liệu SQLite mà ta phải nhận được trong
cú pháp object và được đưa ra dưới đây:
SQLiteDatabse mydatabase = openOrCreateDatabase("your database
name",MODE_PRIVATE,null);

Một số hàm có sẵn trong gói cơ sở dữ liệu:
- openDatabase (String path, SQLiteDatabase.CursorFactory factory, int
flags, DatabaseErrorHandler): Phương thức này chỉ mở thêm cơ sở dữ liệu hiện
có với các chế độ cờ thích hợp. Các chế độ cờ phổ biến có thể là
OPEN_READWRITE OPEN_READONLY.
- openDatabase (String path, SQLiteDatabase.CursorFactory factory, int
flags): Phương thức này tương tự như phương thức trên vì nó cũng mở ra các cơ
sở dữ liệu hiện có, nhưng nó khơng định nghĩa bất kỳ xử lý để xử lý các lỗi cơ sở
dữ liệu.

19


×