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

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

Giới thiệu

SQLite không có kiểu MEDIUMTEXT như MySQL, nhưng chấp nhận tên kiểu này và xử lý như TEXT (lưu chuỗi dài). Demo tạo cột name MEDIUMTEXT.

Các bước

Bước 1 & 2: Project & Layout

Giao diện CRUD chuẩn.

Bước 3: MainActivity.java

Code xử lý nhập/xuất tương tự.

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

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) {
        // MEDIUMTEXT được SQLite chấp nhận như TEXT
        db.execSQL("CREATE TABLE " + TABLE +
                "(id INTEGER PRIMARY KEY, name MEDIUMTEXT, 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

  • SQLite sử dụng dynamic typing: kiểu dữ liệu chỉ là gợi ý (type affinity). MEDIUMTEXT có affinity TEXT.
  • BIGINT affinity NUMERIC.
  • Có thể lưu chuỗi rất dài (giới hạn ~1GB) trong cột MEDIUMTEXT.

Kết quả

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

Nhập tên dài, nhấn Lưu → Làm mới → ListView hiển thị bình thường.