Kết nối và thao tác cơ sở dữ liệu SQLite trong ứng dụng Android

Tạo lớp mô hình người dùng

Đầu tiên, cần định nghĩa một lớp User để biểu diễn dữ liệu người dùng trong hệ thống. Lớp này chứa các thuộc tính như ID, tên và mật khẩu, đồng thời cung cấp các phương thức truy cập và cập nhật giá trị.

package com.example.myapp;

public class User {
    private int id;
    private String username;
    private String passkey;

    public User(String username, String passkey) {
        this.username = username;
        this.passkey = passkey;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public String getPasskey() {
        return passkey;
    }

    public void setPasskey(String passkey) {
        this.passkey = passkey;
    }

    @Override
    public String toString() {
        return "User{id=" + id + ", username='" + username + "', passkey='" + passkey + "'}";
    }
}

Thiết lập lớp quản lý cơ sở dữ liệu SQLite

Tiếp theo, tạo lớp kế thừa từ SQLiteOpenHelper để quản lý việc khởi tạo và nâng cấp cơ sở dữ liệu. Lớp này sẽ xử lý việc tạo bảng, chèn dữ liệu và truy xuất danh sách người dùng.

package com.example.myapp;

import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;

import java.util.ArrayList;

public class DatabaseHelper extends SQLiteOpenHelper {
    private SQLiteDatabase database;

    public DatabaseHelper(Context context) {
        super(context, "user_database", null, 1);
        database = getReadableDatabase();
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        String createTableQuery = "CREATE TABLE IF NOT EXISTS user (" +
                "_id INTEGER PRIMARY KEY AUTOINCREMENT, " +
                "name TEXT, " +
                "password TEXT)";
        db.execSQL(createTableQuery);
    }

    @Override
    public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
        db.execSQL("DROP TABLE IF EXISTS user");
        onCreate(db);
    }

    public void insertUser(String name, String password) {
        String insertQuery = "INSERT INTO user (name, password) VALUES (?, ?)";
        database.execSQL(insertQuery, new Object[]{name, password});
    }

    public ArrayList<User> fetchAllUsers() {
        ArrayList<User> userList = new ArrayList<>;
        Cursor cursor = database.query("user", null, null, null, null, null, "name DESC");

        if (cursor != null && cursor.moveToFirst()) {
            do {
                String name = cursor.getString(cursor.getColumnIndexOrThrow("name"));
                String password = cursor.getString(cursor.getColumnIndexOrThrow("password"));
                userList.add(new User(name, password));
            } while (cursor.moveToNext());
            cursor.close();
        }
        return userList;
    }
}

Trong hàm khởi tạo của SQLiteOpenHelper, tham số đầu tiên là tên cơ sở dữ liệu ("user_database"), tham số cuối cùng là phiên bản cơ sở dữ liệu (bắt đầu từ 1). Khi gọi onCreate(), hệ thống sẽ thực thi câu lệnh SQL để tạo bảng nếu chưa tồn tại. Phương thức insertUser() sử dụng câu lệnh SQL có tham số để tránh lỗi bảo mật. Hàm fetchAllUsers() trả về danh sách toàn bộ người dùng được sắp xếp theo tên giảm dần.

Thẻ: Android SQLite Java DatabaseHelper User Model

Đăng vào ngày 15 tháng 6 lúc 21:00