SQLite3 C ++列值不会递增1

时间:2015-05-22 19:04:04

标签: c++ sqlite

我的一个表中有一列我试图通过C ++中的sqlite3中的UPDATE查询进行更新。 使用v3.8.10.2 合并sqlite3。

我可以将此值设置为我想要的任何值,但是我不能增加它。 该值从0开始。一旦我递增它,它递增到1。之后,如果我再次尝试递增它,它不会递增并且它保持为1。 如果我用8这样的值替换值1也是如此。它保持在8,不会更高(即使它应该变为16)。

char* query = "UPDATE THETABLE SET ATTEMPTS = ATTEMPTS + 1 WHERE TESTFIELD = 'Hello';"
int error = sqlite3_exec(db, query.c_str(), NULL, 0, &errMsg);

if(error != SQLITE_OK){
    //This doesn't happen, error is = to SQLITE_OK
    cout << "SQL Error: " << error << " message: " << errMsg << endl;
    sqlite3_close(db);
    return;
}

cout << "Updated value!" << endl;

我在Windows中通过命令提示符控制台使用完全相同的查询,它可以工作,它会递增。在C ++中,它保持为1.为什么?

修改 我也试过这个问题:

  

&#34;更新可用的设置ATTEMPTS = +1在哪里TESTFIELD =&#39;你好&#39;;&#34;

同样的,它被困在1.不会再高了。

编辑2: 以下是该列的架构:

  

&#34; ATTEMPTS INTEGER DEFAULT 0,&#34;

这是sqlite3 C ++实现中的错误吗?

1 个答案:

答案 0 :(得分:1)

问题是当我最初添加一行时,我正在做:

  

插入或替换

我没有设置该字段的值,我原以为它不会被触及但是确实如此,它被设置为默认值0。

我把它改为:

  

INSERT或IGNORE

现在有效。