[Android Cơ Bản] Sử dụng Sqlite với SQLiteOpenHelper – Phần 1

Bài trước : http://www.dotplays.com/android-co-ban-sqlite-trong-android/\

Link gốc :  https://developer.android.com/training/data-storage/sqlite

Lời nói đầu : Hi Các em để tiếp tục bài hôm trước, trong bài viết này, Thầy giới thiệu đến các em các sử dụng Sqlite trong lập trình Android sử dụng SQLiteOpenHelper

Trong bài này, các em sẽ được hướng dẫn làm các chức năng sau :

  1. Tạo bảng sử dụng SQLiteOpenHelper
  2. Thêm dữ liệu vào bảng
  3. Cập nhập dữ liệu vào bảng
  4. Xóa dữ liệu vào bảng
  5. Lấy danh sách dữ liệu trong bảng

Giả sử, chúng ta có 1 bài toán như sau : Tạo 1 chương trình quản lý Sinh Viên với các chức năng thêm sửa xóa Sinh viên, Lưu ý : Sinh Viên sẽ có các thuộc tính : ID, NAME, PHONE, ADDRESS

Như vậy ta có bảng như sau :

Table Student

Để bắt đầu chúng ta tạo lần lượt các class với nội dung như sau :

Student.java


import android.provider.BaseColumns;

public class Student {

    public static final String SQL_CREATE_STUDENTS =
            "CREATE TABLE " + StudentTable.TABLE_NAME + " (" +
                    StudentTable._ID + " INTEGER PRIMARY KEY," +
                    StudentTable.COLUMN_NAME + " TEXT," +
                    StudentTable.COLUMN_ADDRESS + " TEXT," +
                    StudentTable.COLUMN_PHONE + " TEXT)";

    public static final String SQL_DELETE_STUDENTS =
            "DROP TABLE IF EXISTS " + StudentTable.TABLE_NAME;

    public static class StudentTable implements BaseColumns {

        public static final String TABLE_NAME = "Student";
        public static final String COLUMN_NAME = "name";
        public static final String COLUMN_ADDRESS = "address";
        public static final String COLUMN_PHONE = "phone";

    }
}
StudentReaderDbHelper.java
public class StudentReaderDbHelper extends SQLiteOpenHelper {

// If you change the database schema, you must increment the database version.
public static final int DATABASE_VERSION = 1;
public static final String DATABASE_NAME = "Students.db";

public StudentReaderDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}

public void onCreate(SQLiteDatabase db) {
db.execSQL(SQL_CREATE_STUDENTS);
}

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// This database is only a cache for online data, so its upgrade policy is
// to simply to discard the data and start over
db.execSQL(SQL_DELETE_STUDENTS);
onCreate(db);
}

public void onDowngrade(SQLiteDatabase db, int oldVersion, int newVersion) {
onUpgrade(db, oldVersion, newVersion);
}
}

Sau đó chúng ta bổ sung các phương thức cho class StudentReaderDbHelper như sau :

Thêm dữ liệu vào cơ sở dữ liệu

Cập nhật dữ liệu vào cơ sở dữ liệu

Xóa dữ liệu

Truy vấn dữ liệu có trên cơ sở dữ liệu

Cách sử dụng trên Activity

Các em lưu ý khi chúng ta sử dụng câu lệnh getWritableDatabasegetReadableDatabase hệ thống sẽ mở 1 kết nối với cơ sở dữ liệu và trong suốt quá trình Activity còn tồn tại thì chúng ta ko nên đóng kết nối này mà cần đóng kết nối tại phương thức onDestroy.
Tuy nhiên, tùy theo hoàn cảnh, tình huống sử dụng chúng ta có thể lựa chọn đóng kết nối ko bắt buộc phải viết trong onDestroy