如何设置房间数据库的文本编码?



我希望能够估计给定 Room 数据库中每一行可能采用的 NVM 大小;这些值都是 Java 中的字符串,所以我需要知道 Room 将用于底层 SQLite 数据库的编码格式 - 我如何告诉 Room 使用哪种编码(例如 UTF-8(或以编程方式检查它用于文本的编码? 假设编码不可配置,那么硬编码为什么?

我期待类似的东西

@Database(entities = {TestEntity.class}, version = 1, encoding = "UTF-8")
public abstract class AppDatabase extends RoomDatabase 

工作,但无法识别编码参数。

在房间数据库构建器中添加创建回调,然后执行PRAGMA encoding='UTF-8';

Room.databaseBuilder(context, AppDatabase.class, DB_NAME)
.addCallback(new Callback() {
@Override
public void onCreate(@NonNull SupportSQLiteDatabase db) {
super.onCreate(db);
// add this code
db.execSQL("PRAGMA encoding='UTF-8';");            
}
}).allowMainThreadQueries().build();

最新更新