云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > QT数据库操作

QT数据库操作

  • 62 次阅读
  • 3 次下载
  • 2026/4/23 13:38:15

}

int id = ui->spinBox->value(); //从界面获取id的值 query.addBindValue(id); //将id值进行绑定 query.exec();

query.next(); //指向第一条记录

qDebug() << query.value(0).toString();

运行程序,效果如下:

我们改变spinBox的数值大小,然后按下“查询”按钮,可以看到对应的结果就出来了。 三,批处理操作。

当要进行多条记录的操作时,我们就可以利用绑定进行批处理。看下面的例子。 void Widget::on_pushButton_clicked() {

QSqlQuery q;

q.prepare(\ QVariantList ints;

ints << 10 << 11 << 12 << 13; q.addBindValue(ints);

QVariantList names;

names << \QVariant(QVariant::String);

//最后一个是空字符串,应与前面的格式相同 q.addBindValue(names);

if (!q.execBatch()) //进行批处理,如果出错就输出错误 qDebug() << q.lastError(); //下面输出整张表

}

QSqlQuery query;

query.exec(\ while(query.next()) {

int id = query.value(0).toInt();

QString name = query.value(1).toString(); qDebug() << id << name; }

然后在widget.cpp文件中添加头文件 #include

我们在程序中利用列表存储了同一属性的多个值,然后进行了值绑定。最后执行

execBatch()函数进行批处理。注意程序中利用QVariant(QVariant::String)来输入空值NULL,因为前面都是QString类型的,所以这里要使用QVariant::String 使格式一致化。 运行效果如下:

四,事务操作。

事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在Qt中用transaction()开始一个事务操作,用commit()函数或rollback()函数进行结束。commit()表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到数据库,事务正常结束。rollback()表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。 如下面的例子:

void Widget::on_pushButton_clicked() {

if(QSqlDatabase::database().driver()->hasFeature(QSqlDriver::Transactions))

{ //先判断该数据库是否支持事务操作

QSqlQuery query;

if(QSqlDatabase::database().transaction()) //启动事务操作 {

//

//下面执行各种数据库操作

query.exec(\ query.exec(\ //

if(!QSqlDatabase::database().commit()) {

qDebug() << QSqlDatabase::database().lastError(); //提交

if(!QSqlDatabase::database().rollback()) qDebug() << QSqlDatabase::database().lastError(); //回滚 } }

//输出整张表

query.exec(\ while(query.next())

qDebug() << query.value(0).toInt() << query.value(1).toString(); } }

然后在widget.cpp文件中添加头文件 #include

QSqlDatabase::database()返回程序前面所生成的连接的QSqlDatabase对象。hasFeature()函数可以查看一个数据库是否支持事务。 运行结果如下:

可以看到结果是正确的。

对SQL语句我们就介绍这么多,其实Qt中提供了更为简单的不需要SQL语句就可以操作数据库的方法,我们在下一节讲述这些内容。

二十五、Qt数据库(五)QSqlQueryModel(原创) 2010-03-22 21:11

声明:本文原创于yafeilinux的百度博客,http://hi.http://m.njliaohua.com//yafeilinux 转载请注明出处。

在上一篇的最后我们说到,Qt中使用了自己的机制来避免使用SQL语句,它为我们提供了更简单的数据库操作和数据显示模型。它们分别是只读的QSqlQueryModel,操作单表的QSqlTableModel和以及可以支持外键的QSqlRelationalTableModel。这次我们先讲解QSqlQueryModel。

QSqlQueryModel类为SQL的结果集提供了一个只读的数据模型,下面我们先利用这个类进行一个最简单的操作。

我们新建Qt4 Gui Application工程,我这里工程名为queryModel ,然后选中QtSql模块,Base class选QWidget。工程建好后,添加C++ Header File ,命名为database.h,更改其内容如下: #ifndef DATABASE_H #define DATABASE_H #include #include

static bool createConnection() {

QSqlDatabase db = QSqlDatabase::addDatabase(\ db.setDatabaseName(\ if(!db.open()) return false; QSqlQuery query;

query.exec(\vchar)\

query.exec(\ query.exec(\ query.exec(\ return true; }

#endif // DATABASE_H

这里我们使用了db.setDatabaseName(\ ,我们没有再使用以前的内存数据库,而是使用了真实的文件,这样后面对数据库进行的操作就能保存下来了。

然后进入main.cpp,将其内容更改如下:

搜索更多关于: QT数据库操作 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

} int id = ui->spinBox->value(); //从界面获取id的值 query.addBindValue(id); //将id值进行绑定 query.exec(); query.next(); //指向第一条记录 qDebug() << query.value(0).toString(); 运行程序,效果如下: 我们改变spinBox的数值大小,然后按下“查询”按钮,可以看到对应的结果就出来了。 三,批处理操作。 当要进行多条记录的操作时,我们就可以利用绑定进行批处理。看下面的例子。 void Widget::on_pushButton_clicked() { QSqlQuery q;

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com