我的开发平台是 win
工具是QT Creator
版本是Qt Core 5.15.2
我程式是要把数据库的所有id拿出来去别的地方捞资料
资料捞回来之后要处理一下然后再更新回数据库
Infos 只是一个一堆QString字段的struct
虽然只有一笔资料要query但我还是用prepare-addBindValue的原因是偷懒
因为这样就不用管如果字串里有任何有可能会需要escape的字符
void MainWorker::updateGalleryInfo(Infos info){
QString queryString{"SELECT tags FROM gallerys WHERE id = ?;"};
mQuery->prepare(queryString);
mQuery->addBindValue(info.id);
if (!mQuery->execBatch()){
qDebug() << __LINE__ << mQuery->lastError().text();
}else if (!mQuery->first()){
qDebug() << __LINE__ << mQuery->lastError().text();
}else{
//如果有tag的话就做一些处理,再准备更新进去,其实不重要
QStringList oldTags = mQuery->value(1).toString().split(",",
Qt::SkipEmptyParts);
foreach (QString tag, oldTags) {
if (!info.tags.contains(tag)){
info.tags << tag;
}
}
}
QString updateString{"UPDATE gallerys SET "
"titleEN = ?, "
"titleJP = ?, "
"nameEN = ?, "
"nameJP = ?, "
"category = ?, "
"publishDate = ?, "
"parent = ?, "
"tags = ?, "
"isUpdated = 'yes' WHERE id = ?;"};
mQuery->prepare(updateString);
mQuery->addBindValue(info.titleEN);
mQuery->addBindValue(info.titleJP);
mQuery->addBindValue(info.nameEN);
mQuery->addBindValue(info.nameJP);
mQuery->addBindValue(info.category);
mQuery->addBindValue(info.publishDate);
mQuery->addBindValue(info.parent);
mQuery->addBindValue(info.tags.join(","));
mQuery->addBindValue(info.id);
if (!mQuery->execBatch()){
qDebug() << __LINE__ << mQuery->lastError().text();
}
}
执行至此,没有跳出错误讯息,但也没有写入,因为isUpdated仍是no
而我把最后面这个update的query测试,确实是可以update进去的
但不知道为什么我的程式却无法更新进去
卡了好久,求救...
感谢阅读