一、QT操作数据库的基本步骤
QT提供了基本数据库的驱动,通过不同的数据库驱动可以实现访问不同的数据库操作。总体来说,QT访问数据库的基本步骤如下:
//1.添加数据库驱动
QSqlDataBase db = QSqlDataBase::addDataBase("QSQLITE","Connection_Name");
//2.创建数据库连接(有设置数据库名 IP等等,根据访问不同的数据库来确定)
//该实例以sqlite为参考
db.setDataBaseName("user.db");
//3.打开数据库
if(db.open())
{
//do something...
}else
{
//do something...
}
//4.增删查改等操作 创建query语句
QSqlQuery query(db);
query.exec(数据库语句);
二、QT编译数据库驱动
上面提到QT虽然提供了一些数据库驱动,可以使用QSqlDatabase::drivers()来查询QT提供的数据库驱动。但是,遇到QT没有提供的驱动,就需要自己去编译驱动了。下面以MySQL为例,使用QT编译MySQL驱动。
2.1 首先下载mysql,可以到官网下载最新的MySQL安装包。(这里就不提供了,大家可以自己百度一下,不过提醒一下,可以直接复制一下下载链接到迅雷,这样就能解决下载速度慢的问题。)
2.2 下载完后,进行安装,这里默认安装到了C盘中。
2.3 安装完成后,找到MySQL的安装目录,复制bin所在的目录,然后在环境变量中的path直接添加。
2.4 打开cmd,跳转到MySQL安装目录后,输入 mysql -u root -p:
2.5 再到MySQL的安装目录,lib文件夹下,拷贝libmysql.dll和libmysql.lib两个文件到QT的bin目录下
2.6 打开mysql.pro文件(C:\Qt\5.15.2\Src\qtbase\src\plugins\sqldrivers\mysql)
2.7编辑mysql.pro文件,做出以下四处修改:
1.注释QMAKE_USE += mysql;
2.添加mysql安装目录下的Include文件夹
INCLUDEPATH += "C:/Program Files/MySQL/MySQL Server 8.0/include"
3.添mysql安装目录下的lib文件夹下的libmysql.lib文件
LIBS += "C:/Program Files/MySQL/MySQL Server 8.0/lib/libmysql.lib"
4.设置编译好的qmysql.dll放置目录
DESTDIR = ../mysql/mysqlDll
注意:INCLUDEPATH和LIBS的引入要加双引号"",不然编译不过。当然,这是我遇到的问题,如果,你在编译过程中不过的话,还是需要认真看看其他的文章。
2.8 打开复制目录,这里时mysqlDll文件夹,复制里面全部的内容
复制到 C:\Qt\5.15.2\msvc2019_64\plugins\sqldrivers中
到这里,MySQL的驱动就编译完成了,接下来在QT中验证,键入代码:
QSqlDatabase::drivers();
结果如下:
("QSQLITE", "QMARIADB", "QMYSQL", "QMYSQL3", "QODBC", "QODBC3", "QPSQL", "QPSQL7")
三、QT连接MySql
安装mysql后,可以下载附带的管理工具MySQL Workbench 8.0 CE。在其中创建名为“qt_db"的数据库。里面添加一些数据。下面进行具体的QT访问mysql代码:
QSqlDataBase db = QSqlDataBase::setDataBase("QMYSQL");
//设置访问mysql的基本数据
db.setHostName("127.0.0.1");
db.setPort(3306);
db.setDatabaseName("qt_db");
db.setUserName("root");
db.setPassWord("1234");
//打开数据库
if(db.open())
{
...
}else
{
...
}
QSqlQuery query(db);
query.exec("select * form user");
while(query.next())
{
qDebug() << query.value("username").toString();
}
结果如下:
"July"
"Lulu"
"Acy"