使用QT-QSqlQuery::value()遇到的问题

在实现客户端间好友添加功能时,我通过以下函数想实现数据库对好友信息的保存

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);
 

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值