Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách sử dụng unicode() trong SQLite Android

Giới thiệu

Hàm unicode(X) trong SQLite trả về mã điểm Unicode (code point) số nguyên của ký tự đầu tiên trong chuỗi X. Ví dụ này demo việc lấy mã Unicode của cột name.

Bước 1 & 2: Tạo dự án và Giao diện

Giao diện SQLite chuẩn: EditText tên, lương, nút CRUD, ListView.

Bước 3: MainActivity.java

Code tương tự, khởi tạo DatabaseHelper.

Bước 4: DatabaseHelper.java - Sử dụng unicode()

package com.example.andy.myapplication;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import java.util.ArrayList;

class DatabaseHelper extends SQLiteOpenHelper {
    public static final String DATABASE_NAME = "salaryDatabase9";
    public static final String CONTACTS_TABLE_NAME = "SalaryDetails";

    public DatabaseHelper(Context context) {
        super(context, DATABASE_NAME, null, 2);
    }

    @Override
    public void onCreate(SQLiteDatabase db) {
        db.execSQL("CREATE TABLE " + CONTACTS_TABLE_NAME + 
            "(id INTEGER PRIMARY KEY, name TEXT, salary REAL, datetime DEFAULT CURRENT_TIMESTAMP)");
    }

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

    public boolean insert(String name, String salary) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        cv.put("salary", salary);
        db.replace(CONTACTS_TABLE_NAME, null, cv);
        return true;
    }

    // QUAN TRỌNG: Lấy mã Unicode của ký tự đầu tiên trong name
    public ArrayList<String> getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList<String> array_list = new ArrayList<>();
        Cursor res = db.rawQuery("SELECT unicode(name) AS fullname FROM " + CONTACTS_TABLE_NAME, null);
        res.moveToFirst();
        while (!res.isAfterLast()) {
            if (res != null && res.getCount() > 0) {
                array_list.add(res.getString(res.getColumnIndex("fullname")));
            }
            res.moveToNext();
        }
        res.close();
        return array_list;
    }

    public boolean update(String name, String salary) {
        SQLiteDatabase db = getWritableDatabase();
        ContentValues cv = new ContentValues();
        cv.put("name", name);
        cv.put("salary", salary);
        return db.update(CONTACTS_TABLE_NAME, cv, "name = ?", new String[]{name}) > 0;
    }

    public boolean delete() {
        getWritableDatabase().execSQL("DELETE FROM " + CONTACTS_TABLE_NAME);
        return true;
    }
}

Giải thích unicode()

  • unicode('A') → 65 (U+0041)
  • unicode('a') → 97 (U+0061)
  • unicode('α') → 945 (U+03B1)
  • unicode('😀') → 128512 (U+1F600)
  • Chỉ lấy ký tự đầu tiên của chuỗi.
  • Trả về NULL nếu chuỗi rỗng.

Ứng dụng thực tế

  • Kiểm tra ký tự đặc biệt/emoji trong dữ liệu.
  • Sắp xếp theo thứ tự Unicode.
  • Phát hiện ký tự không phải ASCII (code point > 127).

Chạy ứng dụng

Cách sử dụng unicode() trong SQLite Android

Hiển thị mã Unicode số nguyên của ký tự đầu tiên tên mỗi nhân viên.