在實現客戶端間好友添加功能時,我通過以下函數想實現數據庫對好友信息的保存
bool OpeDB::handleAddFriend_repound(const char *pername, const char *name)
{
? ? // pername 被添加方 ?name 申請添加方
? ? qDebug() << pername << " " << name;
? ? if (pername == NULL || name == NULL)
? ? {
? ? ? ? return false;
? ? }
? ? // 先找到對應名字的ID
? ? QString data = QString("select id from usrInfo where name='%1' or name='%2'").arg(pername).arg(name);
? ? qDebug() << data;
? ? QSqlQuery query;
? ? query.exec(data);
? ? query.next();
? ? // 再在friend表格中添加好友關系
? ? qDebug() << query.value(0).toInt() << " " << query.value(1).toInt();
? ? data = QString("insert into friend(id, friendId) values('%1', '%2')").arg(query.value(0).toInt()).arg(query.value(1).toInt());
? ? query.exec(data);
? ? return true;
}
?
但是我遇到一個問題,代碼 qDebug()<<query.value(0).toInt()<<" "<<query.value(1).toInt();訪問不到兩個數據,讓我卡了很久。
后面通過使用GPT才發現,原來是我對.value()的理解是錯誤的
它里面的數字是訪問query所在的那行數據的元素
文字表達有點晦澀,上圖:
通過value函數是沒辦法訪問到rose.id的
?所以,要么讀取先讀取jack的id后query.next(),再讀取rose的id,要么修改select語句讓其直接讀取兩個用戶id
讀取兩個用戶id的語句如下
QString data = QString("select u1.id, u2.id from usrInfo u1, usrInfo u2 where u1.name='%1' and u2.name='%2'").arg(pername).arg(name);
?