Sqlite trong android (Bài 3)

Sqlite trong android (Bài 3)

sqlite-trong-android-1
Phát triển app android

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

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

sqlite trong android 2

Màn hình thêm mới khi người dùng chạm vào “Add New”

sqlite trong android

Khi người dùng chạm vào “SAVE CONTACT“, quay về màn hình chính

sqlite trong android

Để 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

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

sqlite trong android

Thiết kế menu display_contact: Chuột phải menu -> chọn New -> chọn Menu resource file

sqlite trong android

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

sqlite trong android
<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

sqlite trong android

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
FieldNameTypeDescription
idIntegerKhóa chính (Primary Key), kiểu số nguyên tự tăng (AutoIncrement)
jobTextNội dung công việc cần nhớ
dateTextThời gian công việc cần phải thực hiện

Thiết kế giao diện cho ứng

sqlite trong android
Hình 1

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.

sqlite trong android
Hình 2

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.

sqlite trong android
Alert: You are not allowed to copy content or view source !!