2016-02-29 125 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