博客
关于我
QT数据库(三):QSqlQuery使用
阅读量:796 次
发布时间:2023-03-03

本文共 1789 字,大约阅读时间需要 5 分钟。

QSqlQuery 简介

QSqlQuery 是一个功能强大的类,能够执行任何 SQL 语句,包括 SELECT、INSERT、UPDATE、DELETE 等。它是进行数据库操作的多功能工具,能够通过运行 SQL 语句实现数据表的创建、修改以及批量数据操作。对于 SELECT 语句,QSqlQuery 可以返回查询结果的数据集,但不能作为模型或视图结构中的数据模型。与 QSqlTableModel 和 QSqlQueryModel 相比,QSqlQuery 更适合执行基于记录的操作,如数据浏览和修改,而它通过运行 SQL 语句实现了对数据的批量修改。

创建QSqlQuery对象

QSqlQuery 提供了多种构造函数,允许在创建对象时传递 SQL 语句和数据库连接参数:

  • QSqlQuery(const QSqlDatabase &db)

    使用默认数据库连接,不设置 SQL 语句。

  • QSqlQuery(const QString &query = QString(), const QSqlDatabase &db = QSqlDatabase())

    可以传递 SQL 语句和数据库连接。如果不传递任何参数,则使用默认 SQL 语句和数据库连接。

  • SQL 语句的设置和运行

    1. 直接使用 exec(QString) 接口函数

    可以直接通过 exec() 方法运行 SQL 语句:

    QSqlQuery query;
    query.exec("SELECT * FROM employee");
    // 更新数据
    query.exec("UPDATE employee SET Salary=6000 where Gender='女'");

    2. 使用带参数的 SQL 语句

    对于动态生成的 SQL 语句,可以使用 prepare() 方法设置带参数的 SQL 语句,然后通过 bindValue() 方法设置参数值,再调用 exec() 运行语句。bindValue() 提供了两种形式:

    • 第一种形式:通过占位符名称设置参数值:

      QSqlQuery query;
      query.prepare("SELECT empNo, Name, Gender, Salary FROM employee WHERE Gender =:sex AND Salary >:=salary");
      query.bindValue(":sex", "男");
      query.bindValue(":salary", 5000);
      query.exec();
    • 第二种形式:通过参数位置序号设置值:

      QSqlQuery query;
      query.prepare("UPDATE employee SET Department=?, Salary=? WHERE EmpNo =?");
      query.bindValue(0, "技术部");
      query.bindValue(1, 6000);
      query.bindValue(2, 1007);
      query.exec();

    另外,还可以使用 addBindValue() 方法按顺序添加参数值,无需指定位置序号:

    QSqlQuery query;
    query.prepare("UPDATE employee SET Department=?, Salary=? WHERE EmpNo =?");
    query.addBindValue("技术部");
    query.addBindValue(6000);
    query.addBindValue(1007);
    query.exec();

    3. 记录移动

    如果 QSqlQuery 运行的是 SELECT 语句,会返回一个数据集,并提供当前行的操作接口。可以通过 first()previous()next()last() 等方法移动当前行位置。record() 方法可以获取当前记录的数据:

    QSqlRecord record = query.record();

    seek() 方法可以定位到指定序号的记录:

    bool result = query.seek(5, false); // 绝对位置移动到第 5 行

    relative 参数表示移动方向(false 为绝对位置,true 为相对位置)。

    转载地址:http://lcxfk.baihongyu.com/

    你可能感兴趣的文章
    php获取json里面内容
    查看>>
    R2的版本由来
    查看>>
    PHP获取图片宽度高度、大小尺寸、图片类型、用于布局的img属性
    查看>>
    PHP获取当前时间、时间戳的各种格式写法汇总
    查看>>
    PHP获取当前页面的完整URL
    查看>>
    php获取文件夹中文件的两种方法
    查看>>
    PHP获取日期的一些方法总结
    查看>>
    R2学习记录
    查看>>
    php解析ipa包,获取logo
    查看>>
    php设计模式 萨莱 pdf,PHP设计模式 建造者模式
    查看>>
    php设计模式之装饰器模式
    查看>>
    R&Python Data Science系列:数据处理(5)--字符串函数基于R(一)
    查看>>
    PHP设计模式:观察者模式
    查看>>
    php详细学习1
    查看>>
    php语言优劣
    查看>>
    PHP语言最优雅的支付SDK扩展包
    查看>>
    PHP请求https域名发生segment fault段错误
    查看>>
    PHP读写XML文件
    查看>>
    PHP读写XML文件
    查看>>
    R&Python Data Science 系列:数据处理(3)
    查看>>