Trong Android, cơ sở dữ liệu chính được sử dụng để lưu trữ và quản lý dữ liệu là SQLite. SQLite là một cơ sở dữ liệu quan hệ nhỏ gọn, có dung lượng nhẹ, không cần máy chủ (server-less), và hoàn toàn nhúng vào trong ứng dụng. Ngoài SQLite, Android còn hỗ trợ các giải pháp khác như Room Persistence Library – một lớp trừu tượng trên SQLite, giúp việc quản lý cơ sở dữ liệu trở nên dễ dàng và hiệu quả hơn.
SQLite là một hệ quản trị cơ sở dữ liệu quan hệ nhẹ, không cần máy chủ, và được nhúng trực tiếp trong ứng dụng Android. Nó hỗ trợ chuẩn SQL (Structured Query Language) cho các thao tác tạo, đọc, cập nhật và xóa (CRUD) dữ liệu. SQLite thường được sử dụng trong các ứng dụng Android để lưu trữ dữ liệu cục bộ (local data), như thông tin người dùng, dữ liệu ứng dụng, và các thông tin cấu hình.
Bạn có thể làm việc với SQLite bằng cách sử dụng lớp SQLiteOpenHelper để quản lý việc tạo và cập nhật cơ sở dữ liệu.
Ví dụ về SQLite trong Android:
public class MyDatabaseHelper extends SQLiteOpenHelper { // Phiên bản và tên của cơ sở dữ liệu private static final String DATABASE_NAME = "MyDatabase.db"; private static final int DATABASE_VERSION = 1; // Bảng và cột public static final String TABLE_NAME = "Users"; public static final String COLUMN_ID = "id"; public static final String COLUMN_NAME = "name"; public static final String COLUMN_EMAIL = "email"; // Tạo cơ sở dữ liệu public MyDatabaseHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } // Tạo bảng trong cơ sở dữ liệu @Override public void onCreate(SQLiteDatabase db) { String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + "(" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT," + COLUMN_NAME + " TEXT," + COLUMN_EMAIL + " TEXT" + ")"; db.execSQL(CREATE_TABLE); } // Nâng cấp cơ sở dữ liệu (nếu có thay đổi phiên bản) @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME); onCreate(db); } // Thêm người dùng vào cơ sở dữ liệu public void addUser(String name, String email) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, name); values.put(COLUMN_EMAIL, email); db.insert(TABLE_NAME, null, values); db.close(); } }
Trong ví dụ này, MyDatabaseHelper
là lớp trợ giúp để quản lý cơ sở dữ liệu SQLite, tạo bảng, thêm người dùng mới và xử lý các thao tác cơ bản khác.
Room là một thư viện thuộc Jetpack của Android, cung cấp một cách tiếp cận cao cấp và dễ dàng hơn khi làm việc với SQLite. Nó giúp khắc phục nhược điểm của SQLite bằng cách đưa ra các API mạnh mẽ và an toàn hơn. Room sử dụng Entity, DAO (Data Access Object), và Database để quản lý cơ sở dữ liệu theo cách dễ hiểu và linh hoạt hơn.
@Entity
, @Dao
, @Query
, và @Database
để định nghĩa cấu trúc và hoạt động của cơ sở dữ liệu.@Entity(tableName = "users") public class User { @PrimaryKey(autoGenerate = true) public int id; public String name; public String email; } @Dao public interface UserDao { @Insert void insert(User user); @Query("SELECT * FROM users WHERE id = :userId") User getUserById(int userId); } @Database(entities = {User.class}, version = 1) public abstract class AppDatabase extends RoomDatabase { public abstract UserDao userDao(); }
Ngoài SQLite và Room, còn có các tùy chọn cơ sở dữ liệu khác mà bạn có thể sử dụng trong Android tùy vào yêu cầu của ứng dụng, ví dụ:
Việc lựa chọn giải pháp cơ sở dữ liệu phù hợp phụ thuộc vào yêu cầu của ứng dụng như quy mô dữ liệu, tính năng cần thiết và mức độ phức tạp của hệ thống.