SQLite将参数绑定到通配符

时间:2013-04-16 11:22:48

标签: c++ sql sqlite

我创建了一个查询,如果符合某些条件,我会从表中删除行。

sqlite3_prepare(sqlite->db, "DELETE FROM test WHERE field1=? AND field2=? AND field3=? AND field4=? AND field5=?", -1, &sqlite->deleteSymbol, 0);

然后我将它们绑定到NULL终止字符串。但是,如果我的函数调用者传递的任何字符串都是NULL,那么这意味着给定列的任何值都应匹配。

即如果field1field3field5为NULL,则查询将等效于

DELETE FROM test WHERE field2=? AND field4=?

这可以在重用sqlite3_prepare的输出时实现,而不为每个NULL /非NULL字符串组合创建单独的查询吗?

1 个答案:

答案 0 :(得分:1)

参数始终替换一个特定值,或NULL。 你想要做的是改变=运算符的语义,但是通过改变它的一个操作数值是不可能的。

准备一个新的DELETE命令。 准备这样一个简单的陈述没有太大的开销。