- (我是Android开发新手)*
比如说android应用程序-1通过roo
创建了一个数据库hello
。
那么android app-2能否在同一部手机上创建一个数据库hello
?
我的猜测是肯定的,因为房间使用sqlite,每个应用程序可能会启动一个新的sqlite示例,并可能会存储其数据在私人空间,否则太容易产生冲突。但我不确定。
- 问题是:**
- 两个应用程序会共享同一个sqlite示例吗?还是每个应用程序都将启动一个新的sqlite?
- 数据库的名称是否为应用程序范围?
- 我猜数据库的数据也是应用程序私有的?
- (我搜索了一下,没有得到确认。)*
2条答案
按热度按时间vddsk6oq1#
默认情况下,Room数据库存储在internal storage中,每个应用程序都有自己的内部存储。您可以有两个名为
hello
的数据库,每个应用程序一个,没有问题。h43kikqp2#
实际上SQLite是一组文件处理例程(比简单的读写更复杂)。
Android设备内置了例程(尽管SQLite的版本不同,通常向后兼容)。
Room是SQLite周围的 Package 器,因此例程和程序适合于面向对象的方法来访问数据(文件)。
不像,例如,MySQL,SQLite,它不是一个服务器,管理事务从外部来源,所以SQLite不是一个运行示例后台应用程序/服务.(命令行界面将是虽然)
一个设备可以有许多应用程序使用例程访问和更新底层文件(如果使用默认WAL,则为3个文件(预写日志、核心数据库文件、wal文件和第三个文件shm文件WAL的WAL文件),(如果使用日志模式,则为2个文件)。
如果需要的话,一个应用程序可以自己访问多个数据库。SQLite甚至可以通过将数据库
ATTACH
到另一个数据库来访问多个数据库。默认情况下,数据库存储在应用程序的受保护数据存储区域中,因此对于应用程序是唯一的。默认情况下,您不能在一个应用程序中使用两个相同的数据库名称
data/data/the_package/databases/hello
和data/data/myotherdatabasesfolder/hello
因此,App 1和App 2可以具有相同的hello数据库,因为文件将位于不同的应用程序特定位置(默认为
data/data/the_apps_package_name/databases
)。