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

时间:2018-06-14 22:09:21

标签: android android-sqlite android-room

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

我期待像

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

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

1 个答案:

答案 0 :(得分:0)

在您的会议室数据库构建器中添加create回调,然后执行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();