首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

SQLite 儲存字串陣列:以特殊分隔符序列化與反序列化

     編輯:程式設計綜合問答

SQLite 無原生陣列型別,常見做法是將字串陣列以特殊分隔符(如 |、,、|||)串接成單一字串存入 TEXT 欄位,讀取時再 split 還原。

序列化(寫入)

String[] tags = {"android", "java", "sqlite"};
String joined = String.join("|||", tags); // "android|||java|||sqlite"
// 執行 INSERT/UPDATE 將 joined 存入資料庫

反序列化(讀取)

String joined = cursor.getString(cursor.getColumnIndex("tags"));
String[] tags = joined.split("\\|\\|\\|"); // 正則轉義管道符
// tags 即為原始陣列

選擇分隔符的原則

  • 不出現在資料內容中(如資料含逗號則不可用逗號)。
  • 多字元分隔符(|||、###)較單字元安全。
  • 若資料極度複雜,考慮 JSON 序列化:new JSONArray(tags).toString() 存入,new JSONArray(jsonStr).toList() 還原。

效能與查詢考量

此法適合純儲存與整體讀取場景。若需 SQL 層面搜尋陣列元素(如 WHERE tags LIKE '%java%'),效能差且易誤判;建議改用關聯表(item_tags(item_id, tag))正規化設計。

簡單場景用 join/split,複雜查詢用關聯表,是 SQLite 處理陣列資料的兩大範式。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved