アプリケーション用に SQLite DB を作成する必要があります。いくつかのヨーロッパ言語でテキストを保存する必要があるため、アクセント付きの文字やその他の奇妙なマークがたくさんあります。延長していSQLiteOpenHelper
ます。
.db ファイルを調べると、 という名前の余分なテーブルがあることに気付きましたandroid_metadata
。という名前の単一の列がありlocale
、シミュレーターではデフォルトで「en_US」に設定されています。
SQLiteOpenHelper
開発者ガイドの SQLite セクションと、およびの Javadoc を読んだSQLiteDatabase
ことがありますが、SO と Google で検索しましたが、ロケールを DB に設定する正しい場所がどこにあるか、または本当に必要な場合はどこにも見つかりませんでした. DBの作成時に行うべきだと推測してdb.setLocale
、ヘルパーのonCreate
メソッドを呼び出してみましたが、次の例外が発生しています:
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"));
...
}
...
}
そして、ここに私の質問があります:
- ロケールを DB に設定する必要は本当にありますか? 後でいつでも自分で結果を並べ替えることができるので、クエリをすぐに並べ替える必要はありません。
- どこに電話すればいい
setLocale
ですか?