QT的QsqlQuery使用prepare()和exec()用法上的误区

本文详细介绍了在QT中使用QSqlQuery进行数据库操作的方法,包括通配符查询和直接执行SQL语句。通过实例展示了如何绑定参数、执行查询以及获取查询结果。同时,指出了在实际使用中混淆通配符和标准SQL语句可能导致的错误,强调了正确使用方法的重要性。
摘要由CSDN通过智能技术生成

QT在使用sql语句时常用QSqlQuery query(m_db)通过通配符和sql语句的方法来实现
1、通配符的方法一:


    QSqlQuery query(m_db);
    query.prepare( "SELECT * from function_sheilding WHERE sheildType = :type" );
    QString str = "TOF";
    query.bindValue(":type", str);
        if ( !query.exec() ) {
        qDebug() << Q_FUNC_INFO << query.lastError().text() << query.lastQuery();
    }
    int index = 0;
    if( query.next() )  {
        index = query.value("isSheild").toInt();
    }

2、通配符的方法二:

    QSqlQuery query(m_db);
    query.prepare( "SELECT * from function_sheilding WHERE sheildType = ?" );
    QString str = "TOF";
    query.bindValue(0, str);
        if ( !query.exec() ) {
        qDebug() << Q_FUNC_INFO << query.lastError().text() << query.lastQuery();
    }
    int index = 0;
    if( query.next() )  {
        index = query.value("isSheild").toInt();
    }

3、sql语句exec()方法:

    QString  sql = QStringLiteral("SELECT * from well_pos");
    QSqlQuery query(m_db);
    if ( !query.exec(sql) ) {
        qDebug() << Q_FUNC_INFO << query.lastError().text();
        return false;
    }

    while( query.next() ) {
        QSqlRecord record = query.record();
        int well_x           = record.value("well_x").toInt();
        float tip_h      = record.value("tip_h").toFloat();
        }

错误的用法(本人自己写的问题):混淆了通配符和标准sql语句的用法

    QSqlQuery query(m_db);
    QString  sql = ( "SELECT * from function_sheilding WHERE sheildType = :type" );
    QString str = "TOF";
    query.bindValue(":type", str);
        if ( !query.exec(sql ) ) {
        qDebug() << Q_FUNC_INFO << query.lastError().text() << query.lastQuery();
    }
    int index = 0;
    if( query.next() )  {
        index = query.value("isSheild").toInt();
    }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值