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