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

Cách sử dụng kiểu dữ liệu LONGTEXT trong Android SQLite

Giới thiệu

SQLite chấp nhận tên kiểu LONGTEXT (tương tự MySQL) và xử lý như TEXT. Demo lưu chuỗi rất dài vào cột name.

Các bước

Bước 1 & 2: Project & Layout

Giao diện CRUD chuẩn.

Bước 3: MainActivity.java

Code nhập/xuất dữ liệu.

Bước 4: DatabaseHelper.java - Dùng LONGTEXT

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 {
    static final String DB_NAME = "salaryDatabase5";
    static final String TABLE = "SalaryDetails";

    DatabaseHelper(Context ctx) { super(ctx, DB_NAME, null, 1); }

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

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

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

    ArrayList getAllContacts() {
        SQLiteDatabase db = getReadableDatabase();
        ArrayList list = new ArrayList<>();
        Cursor res = db.rawQuery(
            "SELECT (id || ' : ' || name || ' : ' || salary || ' : ' || datetime) AS fullname FROM " + TABLE, null);
        while (res.moveToNext()) {
            list.add(res.getString(res.getColumnIndex("fullname")));
        }
        return list;
    }

    boolean update(String n, String s) {
        getWritableDatabase().execSQL("UPDATE " + TABLE + " SET name='" + n + "', salary='" + s + "'");
        return true;
    }

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

Giải thích

  • LONGTEXT trong SQLite chỉ là alias của TEXT, cho phép lưu chuỗi lên đến ~1GB.
  • Phù hợp lưu JSON, log, văn bản dài.

Kết quả

Cách sử dụng kiểu dữ liệu LONGTEXT trong Android SQLite

Nhập văn bản dài vào ô Tên, lưu và làm mới → ListView hiển thị đầy đủ.