gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 06:15:36 25 4
gpt4 key购买 nike

我的一个表中有一列,我正尝试通过 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com