Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Android

วิธีใช้ TINYTEXT ใน Android SQLite

บทนำ: TINYTEXT ใน SQLite

TINYTEXT เป็นคีย์เวิร์ดที่ SQLite รับเพื่อความเข้ากันได้กับ MySQL แมปไปที่ TEXT Affinity ขนาดสูงสุดใน MySQL คือ 255 ตัวอักษร

ตัวอย่าง: ใช้ TINYTEXT สำหรับคอลัมน์ name

ขั้นตอนที่ 1-3: โปรเจกต์, Layout, MainActivity

โครงสร้างเดียวกับตัวอย่าง SQLite ก่อนหน้า

ขั้นตอนที่ 4: DatabaseHelper.java - ใช้ TINYTEXT

@Override
public void onCreate(SQLiteDatabase db) {
    try {
        db.execSQL("CREATE TABLE " + CONTACTS_TABLE_NAME +
            "(id INTEGER PRIMARY KEY, name TINYTEXT, salary BIGINT(8), datetime DEFAULT CURRENT_TIMESTAMP)");
    } catch (SQLiteException e) {
        try { throw new IOException(e); } 
        catch (IOException e1) { e1.printStackTrace(); }
    }
}

TINYTEXT ใน SQLite vs MySQL

คุณสมบัติMySQLSQLite
ขนาดสูงสุด255 ตัวอักษร (255 bytes)ไม่มีข้อจำกัด (TEXT Affinity)
AffinityTEXTTEXT
PerformanceOptimized สำหรับข้อความสั้นเหมือน TEXT ทุกประการ

SQLite ไม่บังคับขนาด

  • ใน MySQL: TINYTEXT จำกัด 255 ตัวอักษร จะ Error หากเกิน
  • ใน SQLite: TINYTEXT = TEXT = MEDIUMTEXT = LONGTEXT (Affinity เดียวกัน)
  • สามารถเก็บข้อความยาวได้ไม่จำกัด (ในขอบเขต RAM/Storage)

เมื่อไหร่ควรใช้ TINYTEXT?

  • Porting จาก MySQL Schema ที่ใช้ TINYTEXT
  • เอกสาร Schema: บอกว่า "คอลัมน์นี้ควรสั้น (< 255 chars)"
  • ใน SQLite ใช้ TEXT ธรรมดาก็ได้

Best Practice: ใช้ CHECK Constraint จำกัดขนาด

หากต้องการจำกัดขนาดจริงใน SQLite:

db.execSQL("CREATE TABLE " + CONTACTS_TABLE_NAME + "(" +
    "id INTEGER PRIMARY KEY, " +
    "name TEXT CHECK(LENGTH(name) <= 255), " +  // จำกัด 255 ตัวอักษร
    "salary BIGINT(8), " +
    "datetime DEFAULT CURRENT_TIMESTAMP)");

ข้อแนะนำ

  1. ใช้ TEXT แทน TINYTEXT/MEDIUMTEXT/LONGTEXT ใน SQLite Native
  2. ใช้ CHECK(LENGTH(column) <= N) หากต้องการ Validate ขนาด
  3. Index บน TEXT: ใช้ CREATE INDEX idx_name ON table(name) แต่ควรจำกัดความยาว

ผลลัพธ์

ListView แสดงข้อมูล TINYTEXT ได้ปกติ เหมือน TEXT ทุกประการ