c++ - SQLite3 C++ 列值不会递增 1

标签 c++ sqlite

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

我可以将此值设置为我想要的任何值,但是我不能增加它。 该值从 0 开始。一旦我递增它,它递增到 1。之后,如果我尝试再次递增它,它不会递增并保持在 1。 如果我将值 1 替换为 8 之类的值,情况也是如此。它保持在 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。为什么?

编辑: 我也试过这个查询:

"UPDATE THETABLE SET ATTEMPTS = +1 WHERE TESTFIELD = 'Hello';"

同样的事情,它停留在 1。不再更高。

编辑 2: 这是该列的架构:

"ATTEMPTS INTEGER DEFAULT 0,"

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

最佳答案

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

INSERT OR REPLACE

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

我把它改成了:

INSERT OR IGNORE

现在可以使用了。

关于c++ - SQLite3 C++ 列值不会递增 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30404122/

相关文章:

c++ - 初始空的 unordered_map 使用多少内存?

c++ - 如何在 Qt3D 中绘制一条简单的线?

c++ - 从位图中提取像素数据时出现问题

php - 测试sqlite表中是否存在值的最佳方法是什么?

ios - db executeUpdate... 在 FMDB block 中并且没有结束,没有错误

c++ - C++处理文本文件——从文本文件中提取某个字符串

c++ - 模板方法上的 gcc 链接错误

mysql - 为什么我的 Rails 函数在 SQLite 中有效,但在 MySQL 中无效?

java - 覆盖仅在 Android 中的前 2 个 GPS 点之间画线

iPhone 存储图像的最佳方式