说明:
本文软件操作环境win10+Qt 5.6.0+Mysql5.7.18
一、介绍
在我们日常的开发过程中,项目离不开操作数据库(像Oracle、Mysql、SQLserver、SQLite、以及一些国产数据库像达梦数据库,人大金仓等)。
Qt的开发环境为我们提供了丰富的操作类。比如:
QSqlDriverCreatorBase------------SQL驱动的父类
QSqlDriverCreator-------------------用于指定驱动类型的模板库
QSqlDatabase------------------------用于连接数据库的类
QSqlDriver-----------------------------用于访问特定SQL数据库的抽象类
QSqlError------------------------------告知数据库发生的错误信息的类
QSqlField------------------------------数据库表格和视图中调整字段的类
QSqlIndex------------------------------运行数据库索引的类
QSqlQuery-----------------------------用于运行SQL语句的类
QSqlRecord---------------------------隐藏数据库记录的类
QSqlResult----------------------------为访问特定数据库的数据而抽象化的接口类
QSqlQueryModel --------------------为SQL结果和数据模型而仅支持只读模式的类
QSqlRelationalTableModel--------使用外键在单一数据表修改数据类型的类
QSqlTableModel---------------------在单一数据库表修改数据模型的类
Qt提供的数据库模块,可以大致分为三种:
- 驱动层(用来为具体 的数据库和SQL接口层之间提供底层的桥梁),比如:QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlResult、QSqlDriverPlugin。
- SQL接口层(提供对数据库的访问),比如:QSqlDatabase、QSqlQuery、QSqlError、QSqlField、QSqlIndex、QSqlRecord。
- 用户接口层(提供将数据库中的数据链接到Qt的窗口部件上),比如:QSqlTableModel、QSqlQueryModel、QSqlRelationalTableModel。
二、连接到数据库
1、在pro文件中添加sql模块,格式:
**QT += sql**
因为qmake会读取Qt本身的设置,在默认情况下,Qt包含了core和gui模块,当我们需要数据库模块或者网络模块的操作时候,需要添加sql和network(QT += network)。
2、SQL数据库驱动
Qt默认支持一些驱动,如:“QSQLITE”, “QMYSQL”, “QMYSQL3”, “QPSQL”, “QPSQL7”,你可以通过代码查看:
QStringList sDrivers = QSqlDatabase::drivers();
qDebug()<<"Qt drivers:"<<sDrivers;
你也可以添加其他的驱动。
3、连接数据库
使用代码连接数据库(参考Qt文档的代码):
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1");
db.setUserName("root"); //登陆MYSQL的用户名
db.setPassword("feng"); //你自己登陆的密码
db.setDatabaseName("stu_project"); // //登陆数据库的名称
db.open();
if(true == db.open()){
qDebug()<<"mysql is open!:"<<db.open();
}else{
qDebug()<<"mysql is not open!:"<<db.open();
}
但是,在使用Qt连接Mysql的时候,会报错:QMYSQL driver not loaded。
这里需要自己编译的时候,链接静态库。把libmysql.dll文件拷贝到Qt的bin目录中(操作步骤:需要把Mysql安装目录bin文件夹下面的libmysql.dll文件拷贝到QT\5.6\mingw492_32\bin)。我再拷贝libmysql.dll文件时还是报错,又重新下载了一个Mysql5.7版本的libmysql.dll,如果你需要你可以到这里下载:Qt链接mysql5.7所需的libmysql.dll和libmysql.lib文件)。
然后就可以了。
4、使用数据库查询
例如:
QSqlQuery query;
query.exec("SELECT * from stu_project.products");
5、数据库语句
你需要知道数据库的增、删、改、查语句:
例如:
创建一张表:create table 表名(内容 类型);
在表中插入:insert into 表名 values(表中的内容);
从表中删除信息:delete from 表名 where 列名 = 条件;
最常见的就是从表中查询信息:select 列名 from 表名 where 列名 = 条件;
......
你可以百度或者查阅资料,推荐一本Mysql超级好用的一本书《Mysql必知必会》。下载链接:Mysql必知必会-超清版pdf