关于 Qt中数据库简单学习教程

移动开发
OT数据库是本文要介绍的内容,主要是来了解QT中的数据库的学习,Qt中使用QtSql模块实现了对数据库的完美支持,具体内容的实现来看本文详解,

OT 数据库是本文要介绍的内容,主要是来了解QT中的数据库的学习。Qt中使用QtSql模块实现了对数据库的***支持,这个模块是一组类的集合,使用这个模块我们需要加入头文件#include <QtSql>,而在工程文件中需要加入一行代码:

  1. QT += sql 

QSqlDatabase 数据库

QSqlQuery 执行sql相关语句事务是数据库的一个重要功能,所谓事务是用户定义的一个数据库操作序列,这些操作要么全做要么全不做,是一个不可分割的工作单位。在Qt中用transaction()开始一个事务操作,用commit()

函数或rollback()函数进行结束。commit()表示提交,即提交事务的所有操作。具体地说就是将事务中所有对数据库的更新写回到数据库,事务正常结束rollback()表示回滚,即在事务运行的过程中发生了某种故障,事务不能继续进行,系统将事务中对数据库的所有已完成的操作全部撤销,回滚到事务开始时的状态。

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

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

要想使其可读写,需要自己的类继承自QSqlQueryModel,并且重写setData() 和 flags() 两个函数。如果我们要改变数据的显示,就要重写data() 函数。

QSqlTableModel,该类提供了一个可读写单张SQL表的可编辑数据模型。可修改,插入,删除,查询,和排序。

这个模型可以将所有修改先保存到model中,只有当我们执行提交修改后,才会真正写入数据库。当然这也是因为我们在最开始设置了它的保存策略:

  1. model->setEditStrategy(QSqlTableModel::OnManualSubmit); 

OnManualSubmit表明我们要提交修改才能使其生效。

QSqlRelationalTableModel,该类为单张的数据库表提供了一个可编辑的数据模型,它支持外键。

在Qt中的QSqlRelationalDelegate委托类就能实现修改相关表。我们只需添加加一行代码:

  1. ui->tableView->setItemDelegate(new QSqlRelationalDelegate(ui->tableView));  
  2. QT += xml  

QtXml Module它们主要是服务于两种操作XML文档的方法:DOM和SAX。Dom(Document Object Model,即文档对象模型)把XML文档转换成应用程序可以遍历的树形结构,这样便可以随机访问其中的节点。它的缺点是需要将整个XML文档读入内存,消耗内存较多。

在QDom中,是将整个XML文件读到内存中的doc对象中的。然后使用节点(QDomNode )操作doc对象,像XML说明,元素,属性,文本等等都被看做是节点,这样就使得操作XML文档变得很简单,我们只需通过转换函数将节点转换成相应的类型,如

  1. QDomElement e = n.toElement(); 

如果你只想读取并显示整个XML文档,那么SAX是很好的选择,因为它提供了比DOM更简单的接口,并且它不需要将整个XML文档一次性读入内存,这样便可以用来读取较大的文件。

在Qt的QtXml模块中提供了一个QXmlSimpleReader的类,它便是基于SAX的XML解析器。这个解析器是基于事件的,但这些事件由它自身进行关联,我们并不需要进行设置。我们只需知道,当解析器解析一个XML的元素时,就会执行相应的事件,我们只需要重写这些事件处理函数,就能让它按照我们想法进行解析。

小结:关于 Qt 数据库简单学习教程的内容介绍完了,希望通过本文的学习能对你有所帮助!

责任编辑:zhaolei 来源: CSDN博客
相关推荐

2011-08-30 13:33:29

Qt数据库

2011-08-30 14:15:34

QTSQLite数据库

2011-06-27 12:56:28

2011-08-30 15:32:08

QtQuickQML

2011-07-01 10:03:52

QT 数据库

2011-08-30 14:59:34

Qt数据库

2011-08-23 16:37:05

Lua数学库

2011-08-30 15:49:03

QtQuick

2011-07-05 18:11:13

Qt 数据库

2009-06-02 14:36:28

HibernateMySQLEclipse

2011-08-30 14:25:06

QT数据库

2011-07-01 13:42:24

QT 数据库

2011-07-05 14:46:34

2011-09-01 15:39:43

QT数据库

2011-08-05 16:31:47

iPhone 数据库

2011-08-30 13:49:57

Qt数据库QTableView

2018-01-03 14:32:32

2011-07-04 11:21:59

QT Designer

2011-06-23 18:37:02

Qt 数据库

2011-06-21 15:31:04

Qt 数据库 SQL
点赞
收藏

51CTO技术栈公众号