5. QSqlQuery的基本用法

本文介绍了在QT中如何使用QSqlQuery类进行数据库操作,包括执行增删改查的各种SQL语句。QSqlQuery提供了如prepare()、bindValue()和exec()等方法来设置和执行带参数或不带参数的SQL命令。此外,还详细讲解了如何遍历查询结果、检查执行状态以及获取记录信息等。
摘要由CSDN通过智能技术生成

1. 说明:

在QT连接数据库进行一些数据的增删改查时,使用到的类基本上都和 QSqlQuery 这个类的方法相关,它可以执行任意 SQL 语句,如 select,insert,update,delete等。

2. 常用函数介绍

bool prepare(QString &query)  //设置准备执行的 SQL 语句,一般用于带参数的 SQL 语句
void bindValue(QString &placeholder,QVariant &val)  //设置 SQL 语句中的参数值,以占位置表示参数
void exec()  //执行由prepare()和bindValue()设置的SQL语句
void exec(QString &query)  //直接执行一个不带参数的SQL语句
bool isActive()  //如果成功执行了exec()函数,就返回true
bool isSelect()  //如果执行的SQL语句是SELECT语句,就返回true
QSqlRecord record()  //返回当前记录
QVariant value(QString &name) //返回当前记录名称为name的字段的值
bool isNull(QString &name)  //判断一个字段是否为空,当query非活动、未定位在有效记录、无此字段或字段为空时都返回true
int size() //对于SELECT语句,返回查询到的记录条数,其它语句返回 -1
int numRowsAffected() //返回SQL语句影响的记录条数,对于select语句无定义
bool first() //定位到第一条记录,isActive和isSelect都为true时才有效
bool previous() //定位到上一条记录,isActive和isSelect都为true时才有效
bool next() //定位到下一条激励,isActive和isSelect都为true时才有效
bool last() //定位到最后一条记录,isActive和isSelect都为true时才有效
bool seek(int index) //定位到指定序号的记录
int at() //返回当前记录的序号

2.1 执行不带参SQL语句

QSqlQuery query;
query.exec("select * from 表名");
query.exec("update 表名  set 字段名 = 值 where [筛选条件]");

2.2 执行带参SQL语句

方式一:使用“冒号+参数名”

QSqlQuery query;
query.prepare("select * from employee where EmpNo = :ID");
query.bindValue(":ID",2003);
query.exec();

方式二:使用“占位符”

QSqlQuery query;
query.prepare("update employee set Name = ?,Gender = ?,Height = ? where EmpNo = ?");
query.bindValue(0,"小张");
query.bindValue(1,"男");
query.bindValue(2,1.78);
query.bindValue(3,2010);
query.exec();

持续更新中,请大家多多关注…

Qt是一个跨平台的C++应用程序开发框架,它提供了丰富的功能和工具来简化应用程序的开发过程。在Qt中,可以使用QSqlQuery类来创建和操作数据库。 QSqlQuery类是Qt提供的用于执行SQL语句的类,它可以执行查询、插入、更新和删除等操作。下面是使用QSqlQuery类创建数据库的一般步骤: 1. 首先,需要在Qt项目中添加数据库模块的支持。可以在项目文件(.pro)中添加如下代码: ``` QT += sql ``` 2. 在代码中包含QSqlQuery头文件: ``` #include <QSqlQuery> ``` 3. 创建数据库连接: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("database.db"); // 设置数据库名称 if (!db.open()) { // 处理数据库连接失败的情况 } ``` 4. 执行SQL语句: ``` QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS students (id INT PRIMARY KEY, name TEXT, age INT)"); ``` 上述代码创建了一个名为"students"的表,包含id、name和age三个字段。 5. 可以通过QSqlQuery的其他方法来执行不同的SQL操作,例如插入数据、查询数据等。例如,插入一条数据: ``` query.prepare("INSERT INTO students (id, name, age) VALUES (:id, :name, :age)"); query.bindValue(":id", 1); query.bindValue(":name", "John"); query.bindValue(":age", 20); query.exec(); ``` 上述代码将一条id为1、name为"John"、age为20的记录插入到"students"表中。 6. 最后,记得在不需要使用数据库时关闭数据库连接: ``` db.close(); ``` 以上是使用QSqlQuery类创建数据库基本步骤。你可以根据具体需求使用QSqlQuery的其他方法来执行更复杂的数据库操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山间点烟雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值