2010-04-01 18 views
6

En algunos libros en línea y veo estos métodos que se efectúen llamadas después de crear una base de datos :base de datos SQLite Android local, bloqueo, y la versión

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

¿Por qué se hace esto? Por lo que puedo decir, después de crear una nueva base de datos, el sistema agrega una tabla llamada android_metadata con un campo llamado localidad y esa tabla tiene una fila con el campo de configuración regional establecido en "en_US". Ahora supongo que la columna tiene ese valor porque estoy usando un teléfono EE. UU. , y si estaba usando un teléfono de una región diferente, entonces el campo de configuración regional se establecerá correctamente. ¿Alguien puede confirmar esto? Supongo que el método setLocale solo sería útil en el caso que instale una base de datos preconstruida en un teléfono y luego desee para cambiar la configuración regional para que coincida con la configuración regional del teléfono. ¿Suena bien?

La documentación para setLockingEnabled dice que su valor predeterminado es true para que no haya necesidad de hacer esa llamada, ¿verdad?

Por último, ¿qué pasa con la llamada a setVersion? No puedo encontrar una tabla que contenga esta información, así que he estado asumiendo que el archivo de base de datos almacena el número de versión en alguna parte. Así que cuando creo una base de datos , que requiere que ya haya especificado el número de la versión en la llamada al constructor SQLiteOpenHelper, no hay un punto al llamar a setVersion. De nuevo, quizás este método existe para el caso de instalar una base de datos preconstruida en un dispositivo y luego desea para cambiar la versión de la base de datos (aunque no puedo pensar al hacer esto tendría sentido).

¡Gracias por cualquier idea!

Respuesta

3

Utiliza setLocale() cuando tiene cierto contenido en diferentes idiomas y desea hacer un pedido personalizado por. Android SDK le permite llamar a orden usando

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

aquí se hace hincapié en COLLATE LOCALIZED. Esto ordenará la columna con el alfabeto regional.

+1

Obtengo cómo funciona la configuración regional. Simplemente no entiendo por qué sigo viendo esas líneas en libros y artículos en línea que analizan el uso de una base de datos SQLite en Android. ¡Es como si todos los autores estuvieran haciendo el mismo código de ejemplo de cortar y pegar sin saber si realmente es necesario o no! Hasta donde puedo decir que el código no es necesario y solo quería verificar eso. – gdoten

+0

Supongamos que tiene una base de datos que contiene texto acentuado, seguro que necesita el orden correcto para obtener los resultados correctos, por ejemplo: 'como, állat, dig, egg, éden, marfil, trabajo'; de lo contrario, termina con esas cosas acentuadas al final – Pentium10

+0

Sí. Pero una base de datos recién creada ya tiene configurada la configuración regional, entonces, ¿por qué ir y hacer una llamada para configurar la configuración regional a lo que ya está configurado? Lo mismo ocurre con las llamadas de bloqueo y versión: la base de datos ya las ha configurado, por lo que no tiene sentido hacer esas llamadas. – gdoten

Cuestiones relacionadas