2016-02-29 108 views
0

我想用prepare一个SQL语句使用QT的内置Sqlite引擎。QT Sqlite UPDATE语句准备错误

下面的语句:

UPDATE collections SET collection_type=:v1 WHERE 
(collections.collection_name = 'asfg') 

未能在QSqlQueryprepare声明(prepare回报false)。

QSqlError err = db.lastError();没有给出错误信息......

但是如果我执行同一语句(经用数字替换:v1)在sqlite的提示成功为止。

我在做什么错了?

编辑:

我在做什么错误是不是已经检查了数据库结构。桌子丢失了。太糟糕了,我不能downvote我自己的岗位:(

回答

2

?更换:v1然后用

query.addBindValue(v1); 

v1是包含变量值。

+0

冒号,而不是一个问号是一个有效的占位符在SQLite中,并且在QSqlQuery中似乎也是有效的,但是这不会导致准备语句失败。 – Murphy

+0

并且''v1'不是[有效的占位符](http://www.sqlite.org/lang_expr.html# varparam) –

+0

@Murphy请不要对我的帖子作任何更改,您的修改无效。 – Evgeny