Язык базы данных Android SQLite, блокировка и версия - PullRequest
7 голосов
/ 01 апреля 2010

В некоторых книгах и в Интернете я вижу, как эти вызовы методов делаются после база данных создана:

db.setLocale(Locale.getDefault());
db.setLockingEnabled(true);
db.setVersion(DB_VERSION);

Почему это сделано? Насколько я могу сказать, после создания новой базы данных, система добавляет таблицу с именем android_metadata с одним полем с именем локаль и эта таблица имеет одну строку с полем локали, установленным в "En_US". Теперь я предполагаю, что столбец имеет это значение, потому что я использую Телефон США, и если бы я пользовался телефоном из другого региона, поле locale будет установлено соответствующим образом. Кто-нибудь может это подтвердить? Я предполагаю, что метод setLocale будет полезен только в в случае, если вы устанавливаете предварительно собранную базу данных на телефон, а затем хотите изменить локаль в соответствии с локалью телефона. Звук верно?

В документации для setLockingEnabled сказано, что по умолчанию установлено значение true, поэтому нет необходимости делать этот звонок, верно?

Наконец, что с вызовом setVersion? Я не могу найти стол, который содержит эту информацию, поэтому я предполагал, что файл базы данных Сам хранит номер версии где-то. Поэтому, когда я создаю база данных, которая требует, чтобы вы уже указали версию номер в вызове конструктора SQLiteOpenHelper, нет точка в вызове setVersion. Опять же, возможно, этот метод существует для случай установки предварительно собранной базы данных на устройство, и вы хотите изменить версию базы данных (хотя я не могу думать, когда делаю это имело бы смысл).

Спасибо за понимание!

1 Ответ

3 голосов
/ 01 апреля 2010

Вы используете setLocale (), когда у вас есть определенный контент на разных языках, и вы хотите сделать заказ по.Android SDK позволяет вам звонить по порядку, используя

select........ order by display_name COLLATE LOCALIZED ASC

, акцент здесь делается на COLLATE LOCALIZEDЭто упорядочит столбец с алфавитом локали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...