Android cung cấp hệ quản trị cơ sở dữ liệu SQLite để quản lý cơ sở dữ liệu quan hệ của ứng dụng. Cơ sở dữ liệu quan hệ SQLite tạo ra cho của ứng dụng này thì chỉ được truy cập bởi chính nó mà không cho phép ứng dụng khác truy cập vào, cơ sở dữ liệu này được lưu trữ trong thư mục /data/data/<package_name>/databases của hệ thống (Sử dụng Device File Explorer, vào thư mục trên sẽ thấy file cơ sở dữ liệu của ứng dụng).
Định nghĩa lược đồ cơ sở dữ liệu
Vấn đề chính của cơ sở dữ liệu là định nghĩa đồ cơ sở dữ liệu. Lược đồ cơ sở dữ liệu là khai báo cách tổ chức cơ sở dữ liệu. Lược đồ cơ sở dữ liệu được khai báo thông qua lớp chứa định nghĩa các thành phần của cơ sở dữ liệu.
Trong đó: định nghĩa các thành phần trong lược đồ cơ sở dữ liệu thông qua lớp FeedReaderContract. Lớp FeedReaderContract định nghĩa tên bảng cùng với tên cột của các bảng trong cơ sở dữ liệu. Trong lớp FeedReaderContract tạo mỗi lớp con cho mỗi bảng tương ứng, trong mỗi lớp con sẽ khai báo tên các cột của bảng.
Tạo cơ sở dữ liệu sử dụng SQL Helper
Cơ sở dữ liệu ứng dụng Android tạo ra được lưu vào bộ nhớ trong do thiết bị cấp phát riêng cho ứng dụng và không được phép truy cập từ ứng dụng khác.
Tạo và duy trì cơ sở dữ liệu sử dụng các thành phần được khai báo trong lược đồ cơ sở dữ liệu ở trên, qua các bước sau:
- Khai báo các câu lệnh SQL để tạo và xóa các bảng trong cơ sở dữ liệu
- Tạo và duy trì cơ sở dữ liệu sử dụng tập API của lớp SQLiteOpenHelper bằng cách: tạo ra 1 lớp java kế thừa từ lớp SQLiteOpenHelper, override các phương thức onCreate(), onUpgrade(), onOpen() do SQLiteOpenHelper cung cấp.
Tạo đối tượng FeedReaderDBHelper để truy xuất tới cơ sở dữ liệu đã tạo:
Ghi dữ liệu vào trong cơ sở dữ liệu
- Sử dụng phương thức insert() của đối tượng SQLiteDatabase để ghi dữ liệu vào cơ sở dữ liệu.
Phương thức insert() có 3 tham số : - Tham số thứ nhất c tên bảng.
- Tham số thứ 2 là tên của của cột trong bảng mà giá trị ứng với cột này có thể nhận giá trị NULL trong trường hợp đối tượng ContentValues trống. Nếu truyền giá trị cho tham số thứ 2 này là “null” thì dòng dữ liệu mới không được thêm vào.
- Tham số thứ 3 là đối tượng ContentValues tương ứng với 1 dòng dữ liệu trong bảng.
Đọc dữ liệu từ cơ sở dữ liệu
Sử dụng phương thức query() của đối tượng SQLiteDatabase để đọc dữ liệu từ cơ sở dữ liệu. Phương thức này có tham số truyền vào là tên bảng, mảng các tên cột mà bạn cần lấy dữ liệu, điều kiện. Giá trị trả về của phương thức này là đối tượng Cursor.
Đối tượng Cursor do phương thức query() trả về chứa các dữ liệu được yêu cầu. Sử dụng phương thức moveToFirst() của đối tượng Cursor để đặc vị trị đọc dữ liệu ở phần tử đầu tiên trong kết quả. Tại mỗi dòng, đọc giá trị từng phần tử của dòng tương ứng với các cột trong bảng dữ liệu, bằng cách gọi phương thức get của Cursor, ví dụ: getString() để lấy về giá trị của phần tử có kiểu String, getLong() để lấy về giá trị của phần tử có kiểu Long….Với mỗi lần gọi phương thức get cần truyền vào tham số là chỉ số cột trong bảng.
Chỉ số cột của bảng có được bằng cách gọi phương thức getColumnIndex() hoặc getColumnIndexOrThrow().
Xóa dữ liệu trong cơ sở dữ liệu
Sử dụng phương thức delete() của đối tượng SQLiteDatabase để xóa các dòng dữ liệu từ một bảng trong cơ sở dữ liệu. Phương thức delete() có 3 tham số :
- Tham số thứ nhất là tên bảng. - Tham số thứ 2 là điều kiện xóa.
Cập nhật dữ liệu trong cơ sở dữ liệu
Sử dụng phương thức update() của đối tượng SQLiteDatabase để cập nhật dữ liệu đã có trong cơ sở dữ liệu. Phương thức update() có 3 tham số :
- Tham số thứ nhất là tên bảng.
- Tham số thứ 2 là giá trị mới muốn cập nhật. - Tham số thứ 3 là điều kiện cập nhật.
- Tham số thứ 4 là chỉ số dòng cần cập nhật (rowId).
CÂU HỎI CHƯƠNG 2
1. Xây dựng ứng dụng theo dõi các trạng thái trong vòng đời ứng dụng Android và đưa ra thông báo tương ứng khi mỗi trạng thái được gọi.
2. Sử dụng các đối tượng giao diện của Android để xây dựng ứng dụng máy
tính.
3. Xây dựng ứng dụng To-do list quản lý các công việc của người dùng
điện thoại theo 3 cách: 1/ Lưu trữ dữ liệu dạng key-value; 2/Lưu trữ dữ liệu dưới dạng file trong bộ nhớ thiết bị; 3/ Lưu trữ dữ liệu trong cơ sở dữ liệu quan hệ SQLite.
4. Xây dựng ứng dụng thư viện hiển thị ảnh sử dụng các View như: