Sử Dụng SQLite Database Trong ứng Dụng Android - Viblo
Có thể bạn quan tâm
- SQLite là một cơ sở dữ liệu SQL mã nguồn mở, nó lưu trữ dữ liệu vào một tập tin văn bản trên một thiết bị. Nó mặc định đã được tích hợp trên thiết bị Android. Để truy cập dữ liệu này, bạn không cần phải thiết lập bất kỳ loại kết nối nào cho nó như JDBC, ODBC, ... SQLite được Richard Hipp viết dưới dạng thư viện bằng ngôn ngữ lập trình C.
- SQLite có các ưu điểm sau:
- Tin cậy: các hoạt động transaction (chuyển giao) nội trong cơ sở dữ liệu được thực hiện trọn vẹn, không gây lỗi khi xảy ra sự cố phần cứng
- Tuân theo chuẩn SQL92 (chỉ có một vài đặc điểm không hỗ trợ)
- Không cần cài đặt cấu hình
- Kích thước chương trình gọn nhẹ, với cấu hình đầy đủ chỉ không đầy 300 kB
- Thực hiện các thao tác đơn giản nhanh hơn các hệ thống cơ sở dữ liệu khách/chủ khác
- Không cần phần mềm phụ trợ
- Phần mềm tự do với mã nguồn mở, được chú thích rõ ràng
Trong phần này, tôi sẽ hướng dẫn các bạn về cách tạo ra một database trong SQLite và các class để xử lý tất cả các thao tác đối với SQLite.
Sau đây, tôi sẽ lấy một ví dụ về việc lưu trữ thông tin của các sinh viên vào trong cơ sở dữ liệu SQLite.
Cấu trúc bảng Students
Tạo Student class
Trước hết, ta sẽ viết Student class với các phương thức khởi tạo, getter, setter:
# Student.java package com.framgia.androidsqlite; public class Student { int id; String name; String address; String phone_number; public Student(int id, String name, String address, String phone_number) { super(); this.id = id; this.name = name; this.address = address; this.phone_number = phone_number; } public Student(String name, String address, String phone_number) { super(); this.name = name; this.address = address; this.phone_number = phone_number; } public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAddress() { return address; } public void setAddress(String address) { this.address = address; } public String getPhone_number() { return phone_number; } public void setPhone_number(String phone_number) { this.phone_number = phone_number; } }Tạo SQLite Database Handler class
Tiếp theo, ta sẽ tạo class để xử lý các thao tác CRUD(create, read, update, delete) đối với database.
- Đầu tiên, tạo một Android project (File => New Android Project)
- Tạo một class DatabaseHandler.java (src/package => New => Class)
- Class DatabaseHandler sẽ kế thừa class SQLiteOpenHelper (Đây là một class mà Android cho phép bạn xử lý các thao tác đối với database của SQLite, vì vậy bạn có thể tạo một class khác thừa kế nó và tùy chỉnh việc điều khiển database theo ý mình):
- Sau khi kế thừa từ class SQLiteOpenHelper, việc chúng ta cần làm tiếp theo đó là override lại 2 phương thức onCreate() và onUpgrade
- onCreate(): Đây là nơi để chúng ta viết những câu lệnh tạo bảng. Nó được gọi khi database đã được tạo.
- onUpgrade(): Nó được gọi khi database được nâng cấp, ví dụ như chỉnh sửa cấu trúc các bảng, thêm những thay đổi cho database,..
Tiếp theo, chúng ta sẽ viết những phương thức để xử lý việc đọc, ghi đối với database.
Thêm một record mới
Chúng ta sẽ tạo một phương thức là addStudent nhận một object Student như là một tham số. ContentValues được sử dụng để lưu các giá trị tương ứng với các trường trong bảng. SQLiteDatabase có chứa các phương thức tạo, xóa, thực thi các lệnh SQL, nó sẽ được sử dụng để insert các giá trị từ object Student vào các trường trong bảng students.
public void addStudent(Student student) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(KEY_NAME, student.getName()); values.put(KEY_ADDRESS, student.getAddress()); values.put(KEY_PHONE_NUMBER, student.getPhone_number()); db.insert(TABLE_NAME, null, values); db.close(); }Truy vấn dữ liệu trong bảng
- Ta sẽ dùng Cursor để lưu giá trị trả về của các hàm sau đây:
- Phương thức getStudent() sẽ đọc một record student trong bảng, nhận student id là tham số.
- db.query sẽ trả về một Cursor, lúc này Cursor đầu đọc chưa trỏ tới dòng dữ liệu nào cả, do đó, ta phải gọi lệnh .moveToFirst() để Cursor có thể trỏ tới dòng đầu tiên.
- Phương thức getAllStudents() sẽ trả về tất cả student có trong bảng dưới dạng một array list của Student.
Cập nhật dữ liệu trong bảng
Chúng ta sử dụng hàm update của SQLiteDatabase để cập nhật dữ liệu trong bảng theo một điều kiện bất kỳ nào đó.
public int update(String table, ContentValues values, String whereClause, String[] whereArgs)- Đối số 1: tên bảng
- Đối số 2: đối tượng muốn chỉnh sửa (với giá trị mới)
- Đối số 3: tập các điều kiện lọc (dùng dấu ? để tạo điều kiện lọc)
- Đối số 4: tập các giá trị ủa điều kiện lọc (lấy theo đúng thứ tự)
Xóa một record
Chúng ta sử dụng hàm delete của SQLiteDatabase để xóa dữ liệu của một hoặc một số record trong bảng theo một điều kiện bất kỳ nào đó
public int delete(String table, String whereClause, String[] whereArgs)- Đối số 1: tên bảng
- Đối số 2: tập điều kiện lọc
- Đối số 3: tập các giá trị của điều kiện lọc
Trên đây, tôi đã giới thiệu qua về SQLite và cách sử dụng nó trong Android, hi vọng nó sẽ giúp ích cho bạn đọc (yeah)
Từ khóa » Cách Sử Dụng Sqlite Trong Android Studio
-
Sử Dụng SQLite Trong Android (phần 1)
-
Bài Tập 31: Cách Sử Dụng SQLite Trong Android
-
Hướng Dẫn Lập Trình Android Với Database SQLite - Openplanning
-
1. SQLite Database - Lập Trình Android Cơ Bản
-
Sử Dụng SQLite Trong Android - Team Việt Dev
-
Lưu Dữ Liệu Bằng SQLite | Android Developers
-
[Android Cơ Bản] Sử Dụng Sqlite Với SQLiteOpenHelper – Phần 1
-
SQLite Trong Android - Làm Sao để Sử Dụng Hiệu Quả Nhất
-
Lưu Trữ Dữ Liệu Với SQLite (Thực Hành) | How Kteam
-
Lưu Trữ Dữ Liệu Với SQLite Trong Android - STDIO
-
SQLite Trong Lập Trình Android - Diên Lợi
-
[Android] Cách Tìm Database Trên Android Và Sử Dụng ... - YouTube
-
Lập Trình Cơ Sở Dữ Liệu SQLite Trong Android - YouTube
-
Sqlite Trong Android (Bài 3) - Gia Sư Tin Học