我正在尝试使用KMM,但是我在使用SQLDelight时遇到了一个问题。下面是AppDatabase.sq
文件的代码示例。
CREATE TABLE Data (
id INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT,
content TEXT NOT NULL
);
-- ====>> Add this new table <<==== (QUESTION 1)
CREATE TABLE Settings (
version TEXT NOT NULL
);
insertItem:
INSERT INTO Data(id, content) VALUES(?,?);
removeAll:
DELETE FROM Data;
selectById:
SELECT * FROM Data WHERE id = ?;
updateById:
UPDATE Data SET content = ? WHERE id = ?;
-- ====>> I want this to be run on DB creation <<==== (QUESTION 2)
INSERT INTO Settings(version) VALUES ('1.0.0');
getVersion:
SELECT version FROM Settings;
当我运行应用程序时,我收到:android.database.sqlite.SQLiteException: no such table: Settings (code 1 SQLITE_ERROR): , while compiling: SELECT version FROM Settings
.
如果我使用Android Studio的App Inspection打开应用创建的数据库,似乎只存在Data
表和其他与我的表无关的自动生成的表。
我的两个问题(请参阅SQL代码中的注解以获取编号参考)是:
1.如何从.sq
文件创建此表(Settings
)?
1.如何在不调用实际代码中任何函数的情况下将新值插入到表中?
如果你需要整个项目是here,但在以前的版本,因为我想实现的变化是不工作!
1条答案
按热度按时间u5rb5r591#
我已经克隆了你的Github项目,添加了你在这里提供的代码,它工作得很好。两个表都被创建了,设置表有“1.0.0”版本行。
您是否卸载了手机上的应用程序并重新安装了它?可能您仍在使用旧版本的数据库,因为您没有为SQLDelight提供任何迁移。