qt数据库编程实例(qt操作数据库的能力)
一、Qt SQL模块简介
1、Qt SQL模块简介
QT通过Qt SQL模块提供了对SQL数据库qt数据库编程实例的支持qt数据库编程实例,Qt SQL模块中的API分为三层qt数据库编程实例:驱动层、SQL接口层、用户接口层。
如果要使用Qt SQL模块中的类,需要在工程文件(.pro文件)中添加QT += sql代码。
2、驱动层
驱动层为具体的数据库和SQL接口层之间提供了底层的桥梁,主要类包括Qt SQL模块中的QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin和QSqlResult。
3、SQL接口层
SQL接口层提供了对数据库的访问,主要类包括Qt SQL模块中的QSqlDatabase、QSqlQuery、QSqlError、QSqlField、QSqlIndex和QSqlRecord。QSqlDatabase类用于创建数据库连接,QSqlQuery用于使用SQL语句实现与数据库交互。
4、用户接口层
用户接口层主要包括Qt SQL模块中的QSqlQueryModel、QSqlTableModel、QSqlRelationalTableModel。用户接口层的类实现了将数据库中的数据链接到窗口部件上,是使用模型/视图框架实现的,是更高层次的抽象,即便不熟悉SQL也可以操作数据库。需要注意的是,在使用用户接口层的类之前必须先实例化QCoreApplication对象。
二、数据库驱动
Qt SQL模块使用数据库驱动插件和不同的数据库接口进行通信。由于Qt的SQL模块的接口是独立于数据库的,所以所有具体数据库的代码包含在了这些驱动中。QT本身提供了多种数据库驱动,并且可以添加其他数据库驱动。QT提供的数据库驱动源码可以作为编写自定义驱动的模型。
QT5.7版本支持的数据库驱动如下qt数据库编程实例:
数据库驱动
备注
QDB2
IBM DB2 7.1及以上版本
QIBASE
Borland InterBase
QMYSQL
Mysql
QOCI
Oracle Call Interface Driver
QODBC
ODBC
QPSQL
PostgreSQL 7.3及以上版本
QSQLITE2
SQLite 2版本
QSQLITE
SQLite 3版本
QTDS
Sybase Adaptive Server,QT 4.7开始废弃
QT5.7版本支持的数据库驱动如下qt数据库编程实例:
由于GPL许可证的兼容性问题,并不是列出的所有驱动插件都提供给了Qt的开源版本。实际QT中安装的驱动可以根据如下代码显示:
#include <QCoreApplication>#include <QSqlDatabase>#include <QDebug>#include <QStringList>int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); qDebug() << "Available drivers:"; QStringList drivers = QSqlDatabase::drivers(); foreach(QString driver, drivers) qDebug() << driver; return a.exec();}三、数据库连接
1、连接MySQL数据库
//使用MySQL数据库驱动建立一个数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("IP");//设置主机
db.setDatabaseName("dbname"); //设置数据库名称
db.setUserName("user"); //设置用户名
db.setPassword("password"); //设置密码
bool ok = db.open(); //连接数据库
2、连接Acess数据库
//使用ODBC驱动连接数据库
QSqlDatabase ldb = QSqlDatabase::addDatabase("QODBC");
ldb.setDatabaseName("DRIVER={Microsoft Access Driver (*.mdb)};FIL={MS Access};DBQ=db.mdb;UID=user;PWD=passwor");
bool ok = ldb.open();
3、连接SQL Server数据库
QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
db.setDatabaseName(QString("DRIVER={SQL SERVER}; SERVER=%1; DATABASE=%2; UID=%3; PWD=%4;").arg("IP").arg("dbname").arg("user").arg("password"));
bool ok = db.open();
4、连接SQLite数据库
//使用SQLite数据库驱动建立一个数据库连接
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setHostName("IP");//设置主机
db.setDatabaseName("dbname"); //设置数据库名称
db.setUserName("user"); //设置用户名
db.setPassword("password"); //设置密码
bool ok = db.open(); //连接数据库