服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - C/C++ - 可能是全网最详细的Qt连接MySQL数据库教程

可能是全网最详细的Qt连接MySQL数据库教程

2023-04-16 18:37joey小天使 C/C++

QT众所周知是一个开源的,以C++为底层的可视化工具库,下面这篇文章主要给大家介绍了关于最详细的Qt连接MySQL数据库教程的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下

被Qt连接数据库折磨了三天之后终于连接成功了,记录一下希望对看到的人有所帮助。

 

1.直接通过MySQL的驱动加载数据库

1)所需代码

QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
  db.setHostName("127.0.0.1");
  db.setPort(3306);
  db.setDatabaseName("数据库名");
  db.setUserName("用户名");
  db.setPassword("密码");
  bool ok = db.open();
  if (ok){
      QMessageBox::information(this, "infor", "success");
  }
  else {
      QMessageBox::information(this, "infor", "open failed");
      qDebug()<<"error open database because"<<db.lastError().text();
  }

当然要在.pro文件中添加一行引入

QT += sql

如果显示:

可能是全网最详细的Qt连接MySQL数据库教程

那么恭喜你太幸运了,你已经成功连接MySQL数据库了,快去使用吧。

如果显示:

可能是全网最详细的Qt连接MySQL数据库教程

也不要灰心接着往下看我的电脑就一直显示失败

可能是全网最详细的Qt连接MySQL数据库教程

没有QMYSQL的驱动,这是怎么回事呢?

2)解决QMYSQL driver not loaded

Qt连接到mysql的过程:app->Qt的数据库插件->mysql动态库->mysql服务。

Qt的数据库插件位于“C:\Qt(安装路径)(Qt版本)\版本号(库)\mingw49_32(编译器)\plugins(插件)\sqldrivers(数据库插件)” 下的qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用).

mysql动态库位于“C:\Qt\MySQLServer5.5(mysql安装路径)\lib”下的“libmysql.dll“

i:将mysql下的ilbmysql.lib和libmysql.dll复制到Qt的bin目录下
ii:查看自己的qt中有没有qsqlmysqld.dll(debug版本用) qsqlmysql.dll(release版本用)

如果都有:

运行一下代码:

//输出可用数据库
  qDebug()<<"available drivers:";
  QStringList drivers = QSqlDatabase::drivers();
  foreach(QString driver, drivers)
      qDebug()<<driver;

如果输出中含有MySQL,那么恭喜你说明你的qt有MySQL驱动了:

可能是全网最详细的Qt连接MySQL数据库教程

如果没有,不要灰心,因为我的就是一直没有MySQL驱动:

可能是全网最详细的Qt连接MySQL数据库教程

大家可以重新下载一些不同的版本尝试一下,我尝试了无数次后不得不放弃,就选择了另一条路,通过ODBC连接MySQL数据库。

 

2.通过ODBC连接MySQL数据库

1)官方解释:

ODBC(Open Database Connectivity,开放数据库互连)提供了一种标准的API(应用程序编程接口)方法来访问数据库管理系统(DBMS)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。ODBC的设计者们努力使它具有最大的独立性和开放性:与具体的编程语言无关,与具体的数据库系统无关,与具体的操作系统无关。

简单的说就是我的qt中含有ODBC的驱动:

可能是全网最详细的Qt连接MySQL数据库教程

所以利用ODBC去使用MySQL的数据库.

2)下载ODBC

官网

可能是全网最详细的Qt连接MySQL数据库教程

选择和qt编译器相同的字节比如我的qt使用的是64字节的

可能是全网最详细的Qt连接MySQL数据库教程

下载的ODBC选择的也是64字节的,选择MSI类型的直接安装就可以

可能是全网最详细的Qt连接MySQL数据库教程

下载一直点击next即可:

可能是全网最详细的Qt连接MySQL数据库教程

查看点击小娜,搜索ODBC,

可能是全网最详细的Qt连接MySQL数据库教程

3)连接MySQL数据库

i添加MySQL的DSN

可能是全网最详细的Qt连接MySQL数据库教程

红色的可以随便填,是自己对于ODBC驱动的描述,粉色的是MySQL的用户名和密码,数据库选择你在MySQL中创建的数据库名字即可.

可能是全网最详细的Qt连接MySQL数据库教程

点击test如果出现下图说明连接成功

可能是全网最详细的Qt连接MySQL数据库教程

4)qt通过ODBC连接MySQL

QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
  db.setHostName("127.0.0.1");
  db.setPort(3306);
  db.setDatabaseName("是你在ODBC中创建的Data source name");
  db.setUserName("用户名");
  db.setPassword("密码");
  bool ok = db.open();
  if (ok){
      QMessageBox::information(this, "infor", "success");
  }
  else {
      QMessageBox::information(this, "infor", "open failed");
      qDebug()<<"error open database because"<<db.lastError().text();
  }

运行程序:

可能是全网最详细的Qt连接MySQL数据库教程

大功告成

 

3.qt通过ODBC操作数据库

1)查询数据

代码:

//查询数据库中所有表的名称
  QStringList tables = db.tables();
  foreach(QString table, tables)
      qDebug()<<table;

//ODBC查询数据
  QSqlQuery result = db.exec(" select * from users");
  while(result.next()){
      qDebug()<<"user_id:"<<result.value("user_id").toInt();
      qDebug()<<"name:"<<result.value("name").toString();
      qDebug()<<"password:"<<result.value("password").toString();
      qDebug()<<"score:"<<result.value("score").toInt()<<endl;
  }

2)插入数据

//ODBC插入数据
  result.clear();
  bool result_successed = result.exec("insert into users(name,password,score) values ( 'joe2y','123456',0)");

  if(result_successed){
      qDebug()<<"插入成功!";
  }else {
      qDebug()<<"插入失败!";
}

3)更新数据

//ODBC更新数据
  result.clear();
  bool result_successed2 = result.exec("update users set score=10 where user_id=2");

  if(result_successed2){
      qDebug()<<"更新成功!"<<endl;
  }else{
      qDebug()<<"更新失败!"<<endl;
  }

 

总结

到此这篇关于Qt连接MySQL数据库的文章就介绍到这了,更多相关Qt连接MySQL数据库内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/joey_ro/article/details/105411135

延伸 · 阅读

精彩推荐
  • C/C++详解C语言动态内存的分配

    详解C语言动态内存的分配

    这篇文章主要为大家介绍了C语言动态内存的分配,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助...

    Alienware^4292022-08-04
  • C/C++C语言实现万年历小功能

    C语言实现万年历小功能

    这篇文章主要为大家详细介绍了C语言实现万年历小功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    导航者-追梦4932021-08-25
  • C/C++C++11新特性之四种类型转换cast说明

    C++11新特性之四种类型转换cast说明

    类型转换是项目中常使用的一种语法规则,几乎每个编程语言都不可避免的涉及到这方面,下面这篇文章主要给大家介绍了关于C++11新特性之四种类型转换ca...

    面条有点辣8272023-02-28
  • C/C++C++的静态类型检查详解

    C++的静态类型检查详解

    这篇文章主要为大家详细介绍了C++的静态类型检查,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你...

    summer_sunrise7272022-09-27
  • C/C++解析sizeof, strlen, 指针以及数组作为函数参数的应用

    解析sizeof, strlen, 指针以及数组作为函数参数的应用

    本篇文章是对sizeof, strlen, 指针以及数组作为函数参数的应用进行了详细的分析介绍,需要的朋友参考下...

    C语言教程网3002020-12-10
  • C/C++C++实现的多重继承功能简单示例

    C++实现的多重继承功能简单示例

    这篇文章主要介绍了C++实现的多重继承功能,结合简单实例形式分析了C++面向对象程序设计中类的定义与继承相关操作实现技巧,需要的朋友可以参考下...

    潜水的飞鱼baby3822021-06-25
  • C/C++C语言实现英文文本词频统计

    C语言实现英文文本词频统计

    这篇文章主要为大家详细介绍了C语言实现英文文本词频统计,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    -天凌-6702021-08-25
  • C/C++C++实现管理系统的示例代码

    C++实现管理系统的示例代码

    这篇文章主要介绍了C++实现管理系统的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面...

    不靠谱的老肖7892021-09-29