繁体   English   中英

Android SQLite数据库区域设置,锁定和版本

[英]Android SQLite database locale, locking, and version

在一些书籍和在线中,我看到在创建数据库之后进行的这些方法调用:

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

为什么这样做? 据我所知,在创建一个新数据库之后,系统会添加一个名为android_metadata的表,其中一个字段名为locale,该表有一行,其中locale字段设置为“en_US”。 现在我假设该列具有该值,因为我使用的是美国手机,如果我使用的是来自其他地区的手机,那么将适当地设置区域设置字段。 谁能证实这一点? 我猜测setLocale方法仅在您将预先构建的数据库安装到手机上然后想要更改区域设置以匹配手机的区域设置时才有用。 听起来不对?

setLockingEnabled的文档说它默认为true所以不需要进行那次调用,对吧?

最后,调用setVersion是什么? 我找不到包含此信息的表,因此我一直假设数据库文件本身存储了某个版本号。 因此,当我创建一个数据库时,要求您已经在调用SQLiteOpenHelper构造函数时指定了版本号,那么调用setVersion是没有意义的。 同样,也许这种方法适用于将预先构建的数据库安装到设备的情况,然后您希望更改数据库的版本(尽管我无法想到何时这样做有意义)。

感谢您的任何见解!

当您拥有不同语言的某些内容并且希望按自定义顺序执行时,可以使用setLocale()。 Android SDK允许您通过使用来调用订单

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

这里的重点是COLLATE LOCALIZED 这将使用区域设置字母对该列进行排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM