在过去的4个小时里,我一直在与空间作斗争,以便在我的预打包数据库中加载,我读了一些帖子,告诉我尝试找到_Impl.java文件,并检查那里生成的模式,所以我做了,并将我的数据库移动到该模式中,运行SQL查询以将数据加载到该DB中,再次导入它,然后...
再次被相同的吐司消息击中(还有,为什么是toast而不仅仅是日志?),对于可再生的例子,我试着只加载一个db实体,但这没有改变任何东西,我也没有什么想法了
创建项目的查询示例:
INSERT INTO products (title, image, price, description, category, rating, numberOfRatings) VALUES ("Retro Cat-Eye Sunglasses", "https://uploads-ssl.webflow.com/5b105a0c66f2f636c7884a17/64063dbcad97bd421b437096_chatgpt.jpg", 29.95, "Retro-inspired cat-eye sunglasses for a vintage look.", "Accessories", 4.4, 148);
字符串
数据库表创建查询(由房间生成):
CREATE TABLE IF NOT EXISTS `products` (`id` INTEGER NOT NULL, `title` TEXT NOT NULL, `price` REAL NOT NULL, `description` TEXT NOT NULL, `image` TEXT NOT NULL, `category` TEXT NOT NULL, `rating` REAL NOT NULL, `numberOfRatings` INTEGER NOT NULL, PRIMARY KEY(`id`))
型
我使用的实体:
@Entity(tableName = "products")
data class ProductEntity(
@PrimaryKey val id: Int,
val title: String,
val price: Double,
val description: String,
val image: String,
val category: String,
val rating: Double,
val numberOfRatings: Int
)
型
我按照文档,所以我相信房间是能够找到正确的资产(见图)
任何想法都会受到赞赏,因为我的理智已经消失了
1条答案
按热度按时间kuhbmx9i1#
好吧,我让它工作...方法如下:
1.找到YourDatabaseName_Impl文件(如果您看到相同的错误,则通常会生成该文件,请尝试按两次shift并从Entity类中搜索字段名称)
1.在文件中找到
createAllTables
函数,并复制包含表名(通常是第一个)的SQL查询1.(编辑:在此步骤之前擦除模拟器数据可能是值得的)现在打开创建DB的地方(在我的情况下:a hilt module)添加类似于:
字符串
在顶端
然后将
.addCallback(rdc)
添加到数据库构建器中,如下所示:型
这将(希望)创建数据库和表+向表中添加一个项
(Test App在这里)
如果一切顺利:在android studio中找到设备资源管理器工具,选择正确的模拟器(在顶部),然后导航到:data -> data ->(在这里搜索您的包名,或者一个应用程序名,以找到匹配名称的目录)-> databases x1c 0d1x
然后右键单击.db文件并按“另存为”并将其保存在某个地方
你将有一个工作数据库,一个表,有正确的模式和一个示例项,现在你 * 应该 * 能够插入其他项目到表中(通常通过查询完成),之后你可以把数据库文件,移动到资产(在我的情况下,它是一个名为数据库的资产文件夹),并做:
型
但在此之前:擦除设备上的数据(只是为了确保)
应该能成功希望如此