Qt 提供了 QtSql 模块来提供平台独立的基于 SQL 的数据库操作。这里我们所说的“平台

独立”,既包括操作系统平台,也包括各个数据库平台,Qt支持以下几种数据库:

 

  • QT自带SQLITE数据库,不需要再安装
  • QTDS在Qt4.7起已经被移除

 

1.QtSql

要使用QtSql 模块的话,需要在.pro文件中添加这么一句:

QT += sql 

 

2.QSqlDatabase

QSqlDatabase类提供了一个接口,用于通过连接访问数据。QSqlDatabase的一个实例表示连接。该连接通过受支持的数据库驱动程序之一提供对数据库的访问,该驱动程序派生自QSqlDriver。

2.1 创建一个数据库示例如下

复制代码
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("scooters.dat");     //如果本目录下没有该文件,则会在本目录下生成,否则连接该文件 if (!db.open()) {                              QMessageBox::warning(0, QObject::tr("Database Error"),                              db.lastError().text());         return false;  }
复制代码

编译运行后,可以看到已经创建了该文件:

 

创建成功后,该文件默认为空的,然后就可以使用QSqlQuery类来操作该数据库, QSqlQuery类使用的是SQL语句,如果只需要使用高层次的数据
库接口(不关心 SQL 语法),我们可以选择 QSqlTableModel 和
QSqlRelationalTableModel(在后续章节介绍)。本章我们介绍 QSqlQuery 类,来如何使用SQL语法.

 

3.QSqlQuery类介绍

通过exec()成员函数来执行DML(数据操作语言)语句,如SELECT、INSERT、UPDATE和DELETE,以及DDL(数据定义语言)语句等.

比如:

QSqlQuery query; query.exec("DROP TABLE students");    //删除名为students的表

4.接下来,我们讲讲如何导入数据

创建表:

复制代码
query.exec("CREATE TABLE students ("                   "id INTEGER PRIMARY KEY AUTOINCREMENT, "                   "name VARCHAR(40) NOT NULL, "                   " score INTEGER NOT NULL, "                   &qu