qt 数据库操作

一、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"

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值