Qt本地数据库开发

2017-06-05 13:38孔翔鸣
电脑知识与技术 2017年10期
关键词:数据库

孔翔鸣

摘要:Qt因其易用、易扩展、跨平台等特性,日渐成为流行的开发框架,该文通过实例介绍了在Qt开发中对于本地数据库sqlite编程的方法。

关键词:Qt;数据库;sqlite

中图分类号:TP3

文献标识码:A

文章编号:1009-3044(2017)10-0004-02

Qt是1991年由奇趣科技开发的跨平台C++图形用户界面应用程序开发框架,经过20多年的发展完善,以其易用性、易扩展性以及跨平台等特点,日渐成为流行的GUI开发框架,其完善的架构和丰富的组件可以使得程序员主要关注于业务逻辑,而不必过多的将精力和时间耗费在繁琐复杂的界面开发上。在实际开发中,大多数应用都需要用到数据库技术以管理各种信息,Ot为此也提供了相应的模块和组件,使得对数据库的开发也变得非常简单。

根据数据规模以及网络架构,数据库大体上分为本地数据库和网络数据库两种,本文主要介绍本地数据库sqlite的开发方法。在Qt中,通过QtSql模块提供与平台以及数据库种类无关的数据库接口,该接口通过模型腻图结构将数据库和用户界面集成在一起。对于不同的数据库,Qt使用不同的驱动程序与数据库API进行通信,从而为程序员提供统一的开发接口。在进行本地数据库开发时,使用的是SQLite,对应的驱动程序为QSQLITE。

第一行通过addDatabase("QSQLITE")设置使用sqlite本地数据库,第二行设置数据库名为"test.db",如果这个数据库文件不存在则新建,如果存在则打开。这里的数据库文件名可以通过相对路径或绝对路径来指定。如果是使用网络数据库,则需要額外设置数据库主机名、用户名、密码等。

在打开数据库后,主角QSqlQuery便要登场了,这是我们使用频率最多的一个类,它提供了直接执行任意SQL语句并处理其结果的功能,常规数据库管理的增、删、改、查都可以通过该类完成。下面是一个完整例子:

如果我们只需要在代码中对数据库进行操作并且熟悉SQL语言,那么QsqlQuery就可以基本满足所有需求了;如果需要进一步将数据和用户界面进行互动,比如在表格中显式查询结果,有两种方式可以完成这个需求:1.通过代码将数据填入QTableView控件并进行相关管理;2.利用QSqlQueryModel或QSqlTableModel类。QsqlQueryModel/QSqlTableModel类是Qt所提供的一个高级界面接口,让我们直接使用用户界面来执行SQL语句所完成的功能,这可以使得数据管理操作更为简洁,两个类的区别在于:QSqlQueryModel类是只读的,QSqlT-ableModel类是可以修改表数据的。同时,QSqlQueryModel/QSqlTableModel类可以作为QTableView或者QListView的数据源,我们可以根据需要来选择合适的界面组件。下面是一个完整的例子:

例2:

通过这个例子我们可以看到,QSqlTableModel模型非常强大也非常易用,无须静态sQL语句,就算你不怎么熟悉数据库,也可以利用它进行大部分常用的操作。这个模型提供了缓冲区,可以将所有修改先保存到model中,只有当我们执行提交修改后,才会真正写入数据库。

QsqlrrableModel类尽管功能强大,但是有一个“单表”的限制,如果我们的数据库多表之间存在逻辑关系,QSqITableModel就有点力不从心了,针对这类需求,Qt提供了QSqlRelationalT-ableModel,这个类实际上是QsqlTableM0del的扩展,提供了外键的支持,利用这个特性,我们对数据库的处理便不再局限与单个表,任何复杂的逻辑关系都可以游刃有余地处理了。限于篇幅,不再列举具体的实例,读者可参考上例和Qt的联机文档学习使用。

以上通过实例介绍了Qt本地数据库的基本用法,掌握了这项技能,我们在具体开发中遇到数据库管理的需求时,便无须烦恼于数据库的安装、配置等等麻烦琐事,直接利用这些组件关注于业务逻辑即可。当然,Qt所提供的数据库功能并不限于以上的介绍,诸如并发、事务、网络等大型数据库系统所拥有的特性,Qt数据库也完全提供,它值得每一个c++开发者将其放入自己的开发工具箱。

猜你喜欢
数据库
超星数据库录入证
本刊加入数据库的声明
两种新的非确定数据库上的Top-K查询
国外数据库高被引论文排行TOP10
国内主要期刊数据库