【问题标题】:Android Studio add a DatabaseAndroid Studio 添加数据库
【发布时间】:2022-11-18 02:22:27
【问题描述】:
我有一个数据库作为 sql 文件,我不知道如何将它添加到 android Studio 本地,我的意思是使用 ROOM。我看的所有教程都没有展示如何在 JAVA 中制作它。当您安装应用程序时,我想在手机上安装本地数据库。并且数据库已经存在并且是一个 .sql 文件,因为我没有建立将它转换为 .db 文件
谢谢你的帮助。
我什么都试过了:(
【问题讨论】:
标签:
java
android
sql
database
android-room
【解决方案1】:
首先要做的是根据数据库的模式创建 @Entity 注释类。也就是说,每个@Entity都反映了一个表。
当您拥有这些类时,然后在 @Database 注释的实体参数的实体列表中创建带有所有 @Entity 注释类的 @Database 注释类。然后您编译(成功)并且 java(生成的)将有一个与 @Database 注释类名称相同但后缀为 _Impl 的类。在这个类中将有一个名为createAllTables 的方法。这将包含精确的用于创建表的 SQL。数据库模式与此 SQL 匹配很重要(否则你会得到一个异常,说明模式与详细说明 Room 预期的内容和实际发现的内容的消息不匹配)。
如果存在差异,那么您需要相应地转换数据库(建议您使用生成的 SQL 创建新表,使用原始表中的数据加载新表,然后重命名(或者如果有信心删除它们)原始表然后将新表重命名为原始名称)。然后,您将拥有一个包含符合 Room 预期的架构的数据库。
然后您可以在项目中创建一个资产文件夹/目录并将数据库复制到该文件夹中,然后将createFromAsset方法添加到@Database。 Room 将通过此方法从 assets 文件夹中复制数据库。
但是,在运行之前,您可能希望使用适合您的项目的方法创建一些带有 @Dao 注释的接口(或抽象类,其优点是允许带有主体的方法很有用)。
您可能会发现这有帮助:-