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).
MEDIUMTEXTcó affinityTEXT. BIGINTaffinityNUMERIC.- Có thể lưu chuỗi rất dài (giới hạn ~1GB) trong cột MEDIUMTEXT.
Kết quả

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