アプリケーション用に 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ですか?