QT+MySQL数据库操作

1 篇文章 0 订阅

经过两天的努力终于在我的笔记本上面把一个用QT+Mysql的东西做完了,此处主要是想记录一下我这两天遇到的几个很坑的地方,用一个小demo来进行演示,首先说一下我的配置,我电脑里面用的QT Creator 4.8.2,QT5.12.2的MSVC2017_64的kit编译,首先我想强调的第一个坑就是版本要搞对,首先安装mysql的时候要注意自己数据库的版本是多少,是否与qt的版本是对应的。然后就是要注意QT中的sqldriver文件夹中驱动dll是不是存在,如果不存在就需要重新编译生成一下dll文件,还有就是跟网上很多教程说的一样将mysql安装目录下的libmysql的dll文件和lib文件放到qt对应的编译器bin文件夹下,然后用windeployqt打包生成的exe,这样就最终完成了一个连接数据库的软件雏形,现在做完之后细细想来感觉其实也没有什么东西,就是一点小坑的地方需要记录下来,怕自己以后还会遇到同样的场景这样就避免了重蹈覆辙。

我先将大致步骤进行划分:

(1).安装QT(省略不谈)

(2).安装mySQL数据库,此前一直都是直接只安装mysql数据库然后连接的,用它自带的那个图形化数据库界面,由于本人比较菜,所以说用的非常难受,然后就换成了Navicat图形化界面,使用起来非常爽,我之后也会上传到我资源里面,有兴趣的可以去下载,具体的Mysql和Navicat的安装这里我不做过多的叙述,有问题的可以私聊我。

(3).QT和MYSQL数据库连接,安装完QT和MYSQL之后我们接下来就是进入正题,此处我用了两种方法来进行连接,一种是万金油ODBC数据源连接方式,还一种就是MYSQL driver进行连接,本人是不推荐使用ODBC方式来做,如果实在MYSQL驱动没有搞好那就用ODBC方式。

   一.使用ODBC数据源连接方式。首先用qt创建一个demo工程,然后在Navicat界面中连接好MYSQL数据库并且新建一个数据库,命名为firstdatabase数据库

新建好数据库之后我们就先把qt工程里面的测试代码写好,

  QSqlDatabase db=QSqlDatabase::addDatabase("QODBC");
        db.setHostName("localhost");   //主机名称,如localhost
        db.setPort(3306);              //数据库端口号
        db.setDatabaseName("firstdatabase");    //数据库名称
        db.setUserName("root");        //用户名称
        db.setPassword("123456");      //用户密码
        db.open();
    if(db.isOpen())
    {
       QMessageBox::information(NULL, "Ok", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
    else
    {
       QMessageBox::information(NULL, "false", "No", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
     QSqlQuery query(db);
     query.exec("create table hello3(id bigint not null auto_increment,name varchar(255),age bigint,primary key (id))");
     query.exec("insert into hello3(name, age) values('xiaoxi', 18)");
     query.exec("insert into hello3(name, age) values('xiaonan', 19)");
     query.exec("insert into hello3(name, age) values('xiaobei', 20)");
     query.exec("insert into hello3(name, age) values('xiaodong', 21)");

这样的话QT工程里面的代码和MYSQL数据那边就全部弄好了,现在我们打开到控制面板

进入系统与安全之后然后滑到最下面选择管理工具

然后就可以看到ODBC数据源,根据自己需求选择32位或者64位

然后就可以进行系统DSN里面将MYSQL driver添加成功

配置的时候填一些信息,记住两个红框中的信息最好一致,填完之后点击test成功了就好了,这时候就可以运行demo程序通过了

运行QT工程之后的最终结果截图如下

不过这种万金油方法确实挺麻烦而且通用性不强,还是不推荐使用。

二.通过mysql driver方式进行连接数据库,这个方式特别需要注意的是别忘记把libmysql.dll和libmysql.lib这两个文件放置到对应编译器的bin文件夹以及自己qt的sqldriver下面是否有作为桥梁的dll驱动文件

这两个位置检查无误之后将代码中的连接方式改为QMYSQL就可以运行了,测试代码如下粘贴

 QSqlDatabase db=QSqlDatabase::addDatabase("QMYSQL");
        db.setHostName("localhost");   //主机名称,如localhost
        db.setPort(3306);              //数据库端口号
        db.setDatabaseName("firstdatabase");    //数据库名称
        db.setUserName("root");        //用户名称
        db.setPassword("123456");      //用户密码
        db.open();
    if(db.isOpen())
    {
       QMessageBox::information(NULL, "Ok", "Content", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
    else
    {
       QMessageBox::information(NULL, "false", "No", QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes);
    }
     QSqlQuery query(db);
     query.exec("create table hello5(id bigint not null auto_increment,name varchar(255),age bigint,primary key (id))");
     query.exec("insert into hello5(name, age) values('xiaoxi', 18)");
     query.exec("insert into hello5(name, age) values('xiaonan', 19)");
     query.exec("insert into hello5(name, age) values('xiaobei', 20)");
     query.exec("insert into hello5(name, age) values('xiaodong', 21)");

最终测试运行结果粘贴如下,

至此数据库就连接完全成功并且也测试了添加表,并且修改表内容,基本上后续再根据实际需求进行添加功能即可。

相对于之前用的sqlSever来说,MYSQL确实太方便不过了,SQLSEVER太笨重了,我目前能够接触到的东西完全可以就用Mysql来做,而且还是开源的,对于我这种白嫖党来说很舒服。

  • 3
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值