[英]In android room, is the database's name app scoped?
(我是 android 开发新手)
假设 android app- 1通过roo
创建了一个数据库hello
。
那么 android app- 2可以在同一部手机上创建一个数据库hello
吗?
我的猜测是肯定的,由于房间使用sqlite,每个应用程序可能会启动一个新的sqlite实例,并且可能将其数据存储在私有空间中,否则太容易发生冲突。 但我不确定。
问题是:
(我已经搜索过这个,没有得到确认。)
默认情况下,Room 数据库存储在内部存储中,每个应用程序都有自己的内部存储。 您可以有两个名为hello
的数据库,每个应用一个,没有问题。
真的 SQLite 是一组文件处理例程(虽然比简单的写入和读取更复杂)。
Android 设备带有内置的例程(尽管 SQLite 的不同版本通常向后兼容)。
Room 是 SQLite 的包装器,因此例程和迎合面向 object 的方法来访问数据(文件)。
例如,与 MySQL、SQLite 不同,它不是管理来自外部源的事务的服务器,因此 SQLite 不是正在运行的实例后台应用程序/服务。 (虽然命令行界面是)
一个设备可以有许多应用程序使用例程来访问和更新底层文件(如果使用默认 WAL 则为 3 个文件(预写日志、核心数据库文件、wal 文件和第三个文件 shm 文件一个 WAL 文件) WAL),(如果使用 JOURNAL 模式,则为 2 个文件)。
如果需要,一个应用程序本身可以访问多个数据库。 ATTACH
甚至可以通过将数据库连接到另一个来满足访问多个数据库的需求。
默认情况下,数据库存储在应用程序的受保护数据存储区域中,因此对应用程序是唯一的。 默认情况下,您不能做的是在一个应用程序中使用相同的数据库名称两次
data/data/the_package/databases/hello
和data/data/myotherdatabasesfolder/hello
因此 App1 和 App2 可以具有相同的hello数据库,因为文件将位于不同的 App 特定位置(默认情况下为data/data/the_apps_package_name/databases
)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.