Flutter Sqflite Database.execute(String sql, [List<Object?>?arguments]) 不替换参数

问题描述 投票:0回答:1

我在 flutter 应用程序中添加了 sqflite 数据库的数据库迁移逻辑。它包括以下sql命令:

db.execute("ALTER TABLE notes ADD COLUMN time TEXT DEFAULT ? NOT NULL", [currentTime])

这里 db 是数据库类型,currentTime 是字符串类型。
当我在 Android 设备中运行该应用程序时,我得到以下执行:

error DatabaseException(near "?": syntax error (code 1 SQLITE_ERROR): , while compiling: ALTER TABLE notes ADD COLUMN time TEXT DEFAULT ? NOT NULL) sql 'ALTER TABLE notes ADD COLUMN time TEXT DEFAULT ? NOT NULL' args [2024-04-13 15:18:38.424054Z] during open, closing...

为什么 sqflite 不替换我提供的参数以及 sql 参数。有没有安全的方法来使用执行功能?

flutter sqlite sqflite
1个回答
0
投票

不要使用可选参数:

尝试将您的查询设为一个:

db.execute("ALTER TABLE notes ADD COLUMN time TEXT DEFAULT 'DummyDate' NOT NULL");

您还可以尝试使用 Transaction 属性:

await database.transaction((txn) async {
 
  await txn.execute("ALTER TABLE notes ADD COLUMN time TEXT DEFAULT 'DummyDate' NOT NULL");
  
});

希望对您有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.