gpt4 book ai didi

java - 为什么以及在哪里调用 setLocale

转载 作者:行者123 更新时间:2023-11-30 11:38:10 24 4
gpt4 key购买 nike

我需要为我的应用程序创建一个 SQLite 数据库。我需要用几种欧洲语言存储文本,因此会有大量重音字符和其他奇怪的标记。我正在扩展 SQLiteOpenHelper

检查 .db 文件时,我注意到有一个名为 android_metadata 的额外表。有一个名为 locale 的列,在我的模拟器中默认设置为“en_US”。

我已经阅读了开发人员指南中的 SQLite 部分,以及 SQLiteOpenHelperSQLiteDatabase 的 javadoc,在 SO 和 Google 中搜索,但无处可寻将区域设置设置为数据库的正确位置是什么,或者是否确实需要。猜测它应该在数据库创建时完成,我尝试在助手的 onCreate 方法中调用 db.setLocale,但我得到了这个异常:

BEGIN TRANSACTION failed setting locale
FATAL EXCEPTION: Thread-9
android.database.sqlite.SQLiteException: cannot start a transaction within a transaction
at android.database.sqlite.SQLiteDatabase.native_setLocale(Native Method)
at android.database.sqlite.SQLiteDatabase.setLocale(SQLiteDatabase.java:1950)

我的方法是这样的:

public class MyOpenHelper extends SQLiteOpenHelper {

@Override
public void onCreate(SQLiteDatabase db) {
db.setLocale(new Locale("en","EN"));
...
}

...
}

这是我的问题:

  1. 我真的需要为数据库设置语言环境吗?我真的不需要开箱即用地对查询进行排序,因为我以后总是可以自己对结果进行排序。
  2. 我应该在哪里调用 setLocale

最佳答案

  1. 仅当您打算使用 LOCALIZED 归类算法时才需要设置区域设置,这取决于系统区域设置,
  2. 如您的回答所述,在 onConfigure() 上调用 setLocale() .

关于java - 为什么以及在哪里调用 setLocale,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13720092/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com