QSqlQuery执行UPDATE名称成功但是实际数据没有更改是怎么回事?

使用QT5+sqlite数据库。且create table和select是成功执行的。insert还未测试。
但是我是用如下代码做update时(我是用一个dialog显示QTableView中选中行的数据,点击确定时执行以下方法中代码:

QSqlQuery sqlQuery(m_sqliteDatabase);
sqlQuery.prepare("update jwords set c1=:c1,c2=:c2,c3=:c3,type=:type,tag=:tag,word=:word,kana=:kana,paraphrase=:paraphrase,note=:note where id=:id;");
sqlQuery.bindValue(":c1", cardStruct.m_c1);
sqlQuery.bindValue(":c2", cardStruct.m_c2);
sqlQuery.bindValue(":c3", cardStruct.m_c3);
sqlQuery.bindValue(":type", cardStruct.m_type);
sqlQuery.bindValue(":tag", cardStruct.m_tag);
sqlQuery.bindValue(":word", cardStruct.m_word);
sqlQuery.bindValue(":kana", cardStruct.m_kana);
sqlQuery.bindValue(":paraphrase", cardStruct.m_paraphrase);
sqlQuery.bindValue(":note", cardStruct.m_note);
sqlQuery.bindValue(":id", id);
bool r = sqlQuery.exec();
qDebug() << sqlQuery.lastError();
qDebug() << sqlQUery.numRowsAffected();
return r;
  1. sqlQuery.lastError()lastError("","",""),也就是空的。
  2. sqlQuery.exec返回结果是true,执行后的sqlQUery.numRowsAffected()1
  3. 数据中除了id列外都是text数据类型。

补充:经过试验发现,出问题的数据是因为我填入的都是数据都是数字。我将其改为非数字数据就正常了。但是这是一个bug,因为我这里有部分数据实际使用时是会出现数字的,我要怎么办?

阅读 2k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题