Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QSqlQuery与SQLite数据库:prepare+;bindValue不更新表_Qt - Fatal编程技术网

Qt QSqlQuery与SQLite数据库:prepare+;bindValue不更新表

Qt QSqlQuery与SQLite数据库:prepare+;bindValue不更新表,qt,Qt,我在使用QSqlQuery时遇到问题:它没有更新我的SQLite数据库 我像这样初始化数据库(工作正常): 我尝试使用for循环更新数据库,如下所示: QSqlQuery qPreset(myDB); qPreset.prepare("UPDATE presets SET path=':path' WHERE id=':id';"); for (int i=0; i<10; i++){ qPreset.bindValue(":path", presets[i]); qPre

我在使用QSqlQuery时遇到问题:它没有更新我的SQLite数据库

我像这样初始化数据库(工作正常):

我尝试使用for循环更新数据库,如下所示:

QSqlQuery qPreset(myDB);
qPreset.prepare("UPDATE presets SET path=':path' WHERE id=':id';");
for (int i=0; i<10; i++){
    qPreset.bindValue(":path", presets[i]);
    qPreset.bindValue(":id", i+1);
    qPreset.exec();
}
QSqlQuery-qPreset(myDB);
prepare(“更新预设设置路径=':path'其中id=':id';”;

对于(int i=0;i基于@Nejat的问题,我已经找到了答案:我必须删除所有单引号。我没有注意到QSqlQuery::bindValue()负责所有必要的引号

工作代码段:

qPreset.prepare("UPDATE presets SET path=:path WHERE id=:id;");

谢谢你的提示。

根据@Nejat的问题,我找到了答案:我必须删除所有单引号。我没有注意到QSqlQuery::bindValue()处理了所有必要的引号

工作代码段:

qPreset.prepare("UPDATE presets SET path=:path WHERE id=:id;");

谢谢你的提示。

如果你手动操作,它能工作吗?@agilob:是的,它能工作。我已经手动运行了。另请看我的编辑,直接从myDB.exec命令运行相同的查询工作正常。为什么你要将id放在单引号中?@Nejat:确实,我为什么要这样做?删除所有单引号解决了问题,正如bindValue()所示正在处理所有的引号。谢谢。如果您手动操作,它会工作吗?@agilob:是的,它会工作。我已经手动运行了。另请参见我的编辑,直接从myDB.exec命令运行相同的查询,工作正常。为什么要将id放在单引号中?@Nejat:确实,我为什么要这样做?删除所有单引号解决了问题,正如bindValue()所示正在处理所有的报价。谢谢。你应该把你自己的答案标记为解决方案。它也帮助了我。你应该把你自己的答案标记为解决方案。它也帮助了我。
for (int i=0; i<10; i++)
    myDB.exec("UPDATE presets SET path='" + presets[i] + "' WHERE id='" + QString::number(i+1) + "';");
qPreset.prepare("UPDATE presets SET path=:path WHERE id=:id;");