Sqlite trong android (Bài 3)
Thông qua bài Sqlite trong android chúng tôi muốn giới thiệu SQLite là một cơ sở dữ liệu mã nguồn mở được sử dụng để lưu trữ dữ liệu dạng văn bản (text) trên thiết bị di động.
SQLite hỗ trợ tất cả các tính năng của cơ sở dữ liệu quan hệ. Để truy cập cơ sở dữ liệu SQLite, bạn không cần phải thiết lập bất kỳ một loại kết nối đến SQLite như JDBC, ODBC, …
SQLite là hệ quản trị cơ sở dữ liệu cho nền tảng mobile như Android, IOS, Windows Phone. SQLite được sử dụng để quản lý thông tin bao gồm các chức năng như lưu trữ và truy xuất thông tin.
SQLite trong android – Các bước thực hiện
Bước 1: Tạo một lớp kế thừa lớp SQLiteOpenHelper dùng để thao tác với cơ sở dữ liệu. Trong đó ClassName là tên lớp.
public class ClassName extends SQLiteOpenHelper { //Tạo phương thức khởi tạo //Override phương thức onCreate public void onCreate(SQLiteDatabase db) { String sql = "câu lệnh tạo bảng"; db.execSQL(sql); } /*Các phương thức: thêm dữ liệu, cập nhật dữ liệu, xóa dữ liệu và truy vấn dữ liệu*/ }
Xây dựng phương thức thêm dữ liệu
public void methodName([parameter]) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(columnName1, value); cv.put(columnName2, value); ... db.insert(tableName, null, cv); }
Xây dựng phương thức cập nhật dữ liệu
public void methodName([parameter]) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues cv = new ContentValues(); cv.put(columnName1, value); cv.put(columnName2, value); … String whereClause = "columnName1 = ? …"; String whereArgs[] = {value1,…}; db.update(tableName, cv, whereClause, whereArgs); }
Xây dựng phương thức xoá dữ liệu
public void methodName([parameter]) { SQLiteDatabase db = this.getWritableDatabase(); String whereClause = "columnName1 = ? …"; String whereArgs[] = {value1,…}; db.delete(tableName, whereClause, whereArgs); }
Xây dựng phương thức truy vấn dữ liệu không có điều kiện
public void methodName([parameter]) { String sql = "select * [or column1,…] from tableName"; SQLiteDatabase db = this.getReadableDatabase(); Cursor c = db.rawQuery(sql, null); if(c != null){ c.moveToFirst(); //Về đầu danh sách do { Truy vấn dữ liệu sử dụng c.getString(columnIndex); }while(c.moveToNext()); } }
Xây dựng phương thức truy vấn dữ liệu có điều kiện
public void methodName([parameter]) { SQLiteDatabase db = this.getReadableDatabase(); String[] columns = {"column1", "colum2",…}; String selection = "column1 = ? …"; String []selectionArgs = {value1,…}; String groupBy = null; String having = null; String orderBy = null; Cursor c = db.query(tableName, columns, selection, selectionArgs, groupBy, having, orderBy); if(c!=null){ c.moveToFirst(); //Về đầu danh sách do { Truy vấn dữ liệu sử dụng c.getString(columnIndex); }while(c.moveToNext()); } }
Bước 2: Sử dụng lớp đã tạo ở bước 1 trong activity
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_qlsv); //Khai báo đối tượng ClassName objectName = new ClassName(); }
Trong đó:
- ClassName là tên lớp đã xây dựng ở bước 1
- objectName là tên đối tượng. Sử dụng đối tượng này để truy xuất các phương thức thêm, cập nhật, xoá hoặc truy vấn dữ liệu
SQLite trong android – Ví dụ mẫu xây dựng ứng dụng quản lý danh sách khách hàng
Màn hình thêm mới khi người dùng chạm vào “Add New”
Khi người dùng chạm vào “SAVE CONTACT“, quay về màn hình chính
Để chỉnh sửa hoặc xoá thông tin khách hàng, người dùng chạm vào khách hàng sau đó chọn thao tác Edit Contact hoặc Delete Contact từ menu
SQLite trong android – Các bước thực hiện
Bước 1: Tạo java class tên DBHelper. Code đầy đủ của DBHelper
Bước 2: Tạo activity DisplayContactActivity
Thiết kế layout
Thiết kế menu display_contact: Chuột phải menu -> chọn New -> chọn Menu resource file
Bổ sung đoạn code sau vào display_contact.xml
<item android:id="@+id/Edit_Contact" android:orderInCategory="100" android:title="@string/edit"/> <item android:id="@+id/Delete_Contact" android:orderInCategory="100" android:title="@string/delete"/>
Thiết kế menu menu_sqlite_sample: Chuột phải menu -> chọn New -> chọn Menu resource file. Bổ sung đoạn code sau vào menu_sqlite_sample.xml
<item android:id="@+id/item1" android:title="@string/Add_New" > </item>
Bổ sung đoạn code sau vào string.xml
<string name="Add_New">Thêm</string> <string name="edit">Cập nhật Contact</string> <string name="delete">Xoá Contact</string> <string name="title_activity_display_contact">DisplayContact</string> <string name="name">Name</string> <string name="phone">Phone</string> <string name="email">Email</string> <string name="street">Street</string> <string name="country">City/State/Zip</string> <string name="save">Lưu Contact</string> <string name="deleteContact">Bạn có chắc không?</string> <string name="yes">Đồng ý</string> <string name="no">Không</string>
Viết xử lý cho DisplayContactActivity. Code đầy đủ của DisplayContactActivity
Bước 3: Tạo activity SqliteSampleActivity
Thiết kế layout
Viết xử lý cho SqliteSampleActivity. Code đầy đủ của SqliteSampleActivity
Sqlite trong android – Bài tập thực hành
Xây dựng ứng dụng ToDoList (Danh sách công việc cần thực hiện)
- Tên cơ sở dữ liệu là todolistdb
- Tên bảng dữ liệu todolisttbl, có cấu trúc như sau
FieldName | Type | Description |
id | Integer | Khóa chính (Primary Key), kiểu số nguyên tự tăng (AutoIncrement) |
job | Text | Nội dung công việc cần nhớ |
date | Text | Thời gian công việc cần phải thực hiện |
Thiết kế giao diện cho ứng
Khi chọn nút lệnh “Thêm”, chuyển sang màn hình cho phép nhập nội dung và thời gian thực hiện công việc (Hình 2). Khi người dùng chọn nút lệnh “Lưu và trở về”, thực hiện lưu nội dung công việc vào cơ sở dữ liệu, quay về màn hình 1 và hiển thị tất cả nội dung công việc đã tạo.
Trường hợp muốn xóa 1 công việc dự định trong danh sách hay tất cả công việc trong danh sách, người dùng chọn và giữ trên mục công việc để hiện lên context menu và chọn chức năng cần thiết. Lưu ý, bổ sung thêm chức năng cho phép người dùng cập nhật lại nội dung và thời gian thực hiện trong context menu.