Qt连接MySQL数据库最详细的教程

这篇具有很好参考价值的文章主要介绍了Qt连接MySQL数据库最详细的教程。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


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

被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,Qt经验总结,工控软件,mysql,qt,数据库
那么恭喜你太幸运了,你已经成功连接MySQL数据库了,快去使用吧。
如果显示:
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
也不要灰心接着往下看我的电脑就一直显示失败
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
没有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,Qt经验总结,工控软件,mysql,qt,数据库
如果没有,不要灰心,因为我的就是一直没有MySQL驱动:
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
大家可以重新下载一些不同的版本尝试一下,我尝试了无数次后不得不放弃,就选择了另一条路,通过ODBC连接MySQL数据库。

2.通过ODBC连接MySQL数据库

1)官方解释

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

qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
所以利用ODBC去使用MySQL的数据库。

2)下载ODBC

官网
https://dev.mysql.com/downloads/connector/odbc/

qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
选择和qt编译器相同的字节比如我的qt使用的是64字节的
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库

下载的ODBC选择的也是64字节的,选择MSI类型的直接安装就可以
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
下载一直点击next即可:
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
查看点击小娜,搜索ODBC,
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库

3)连接MySQL数据库

i添加MySQL的DSN
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
红色的可以随便填,是自己对于ODBC驱动的描述,粉色的是MySQL的用户名和密码,数据库选择你在MySQL中创建的数据库名字即可。
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
点击test如果出现下图说明连接成功
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
需要依次填写,其中Data Source Name在使用QT连接ODBC时会用到,此处我写了3,自己取个名字即可。对于Description没有要求,随便写个默认的描述就行。最下面的Database要选择你自己电脑中的数据库,比如我的数据库式binshop,我就选择binshop,选择数据库后点击旁边的Test,可以测试时候连接成功。
本文测试用到的sql文件一并放在下载连接里面,需要的可以直接下载。完成后如下所示。多了一条名称为3的描述

原文链接:https://blog.csdn.net/weixin_43552197/article/details/123550924
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库

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,Qt经验总结,工控软件,mysql,qt,数据库
大功告成

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;
    }

Win10安装MySQL出现错误2503 2502 的解决办法

原文链接:https://blog.csdn.net/qq_43422918/article/details/116202995

  1. 打开任务管理器:Ctrl+Alt+Del。

  2. 点击任务管理器左上角的文件按钮:
    qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库

  3. 再点击 运行新任务(n)按钮。

  4. 手动输入所下载的MySQL安装文件的地址+文件名。比如我放在D:\MySQL文件夹里,文件名为:mysql-installer-web-community-5.7.21.0.msi,就输入:D:\MySQL\mysql-installer-web-community-5.7.21.0.msi,务必要打上 下面的勾。
    qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库

  5. 点击确定进行安装,祝安装成功!

QT使用ODBC连接MySQL

https://blog.csdn.net/weixin_43552197/article/details/123550924?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522168247337716800180645494%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=168247337716800180645494&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-2-123550924-null-null.142v86control,239v2insert_chatgpt&utm_term=qt%20odbc%E8%BF%9E%E6%8E%A5mysql&spm=1018.2226.3001.4187

widget.h文件如下

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QDebug>
#include <QStringList>
#include <QMessageBox>
#include <QSqlError>
#include <QSqlDatabase>
#include <QSqlQueryModel>
#include <QSqlRecord>
#include <QString>


QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();
    void QueryData(QSqlDatabase db);

private slots:
    void on_pushButton_clicked();

    void on_tableView_doubleClicked(const QModelIndex &index);

private:
    Ui::Widget *ui;
};
#endif // WIDGET_H

widget.cpp如下

#include "widget.h"
#include "ui_widget.h"



Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
}

Widget::~Widget()
{
    delete ui;
}

void Widget::QueryData(QSqlDatabase db)
{
    // 查询数据库中所有表的名称
    QStringList tables = db.tables();
    foreach(QString table, tables)
        qDebug()<<table;
    // ODBC查询数据
    QSqlQuery result = db.exec("select * from commodity");
    while(result.next())
    {
        qDebug()<<"user_id:"<<result.value("ID").toInt();
        qDebug()<<"name:"<<result.value("name").toString();
        qDebug()<<"password:"<<result.value("type").toString();
        qDebug()<<"score:"<<result.value("price").toInt()<<endl;
    }
    // 将数据库的内容显示到tableview控件中
    static QSqlQueryModel *mode= new QSqlQueryModel(ui->tableView);
    mode->setQuery("select * from commodity");
    mode->setHeaderData(0,Qt::Horizontal,tr("ID"));
    mode->setHeaderData(1, Qt::Horizontal, tr("name"));
    mode->setHeaderData(2,Qt::Horizontal,tr("type"));
    mode->setHeaderData(3, Qt::Horizontal, tr("price"));
    ui->tableView->setModel(mode);

}

// 查询按钮
void Widget::on_pushButton_clicked()
{
    // 通过ODBC连接MYSQL数据库
    QSqlDatabase db = QSqlDatabase::addDatabase("QODBC");
    db.setHostName("127.0.0.1");
    db.setPort(3306);
    // 使用ODBC连接时自己设置的名字(data source name)
    db.setDatabaseName("3");
    db.setUserName("root");
    db.setPassword("123456");
    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();
    }
    //db.exec("insert commodity values('005','显卡','RTX3090',9500)");
    // 指定条件查询
    QSqlQuery query("SELECT * FROM `commodity` where price > 8000",db);
    QSqlRecord rec = query.record();
    while(query.next())
    {
        rec = query.record();
        int id = rec.indexOf("ID");
        QString ID = query.value(id).toString();
        qDebug()<<"ID"<<ID;
        int na = rec.indexOf("name");
        QString name = query.value(na).toString();
        qDebug()<<"name"<<name;
    }
    QueryData(db);
}
// 给tableview添加双击事件。
void Widget::on_tableView_doubleClicked(const QModelIndex &index)
{
    int row=index.row();
    int col=index.column();
    // qDebug()<<row;
    // qDebug()<<col;
    QString id = ui->tableView->model()->index(row,col).data().toString();
    qDebug()<<id;
}

main.cpp如下

#include "widget.h"

#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
    return a.exec();
}

UI文件如下
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库
只增加了一个按钮和一个tableview。
,程序运行的结果如下
qt 和 mysql,Qt经验总结,工控软件,mysql,qt,数据库文章来源地址https://www.toymoban.com/news/detail-811202.html

到了这里,关于Qt连接MySQL数据库最详细的教程的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT mysql 驱动-数据库安装以及qt连接ssl报错问题

    文章末尾是引用笔记 配置MySQL8.0 环境变量 如果不配置MySQL环境变量,就不能在命令行直接输入MySQL登录命令。下面说如何配置MySQL的环境变量: 步骤1:在桌面上右击【此电脑】图标,在弹出的快捷菜单中选择【属性】菜单命令。 步骤2:打开【系统】窗口,单击【高级系统设

    2024年01月20日
    浏览(56)
  • QT实现连接MySQL数据库以及查询等操作

    功能包含数据库的增删改查和界面的显示,因为没有用.ui文件所以控件的位置都是手动设置的,写的有点费劲 首先打开Navicat,新建一个名字为bak_db的数据库,然后新建查询导入下面的sql语句: 然后刷新显示表已经创建好了,接下来就开始进行操作了: 文件结构 源码在我的

    2024年02月04日
    浏览(66)
  • Qt 添加MySQL驱动教程 以及 操作数据库(增删查改)

    前言: 使用MySQL数据库前我们必须添加MySQL驱动,有了驱动我们才能连接数据库,连接数据库成功后才能操作数据库(增删查改)。 Qt 添加MySQL驱动教程 如下(本人亲测成功版): https://download.csdn.net/download/qq_42432673/88093467 在数据库中创建表,表结构如下: 现在驱动已经引入

    2024年02月15日
    浏览(56)
  • Java连接mysql数据库的详细教程(增查)

    jdk安装: eclipse安装使用: mysql安装教程:详细参考 Navicat安装教程:参考 忽略。 鼠标右键点击Fir工程 —— New ——Folder、 文件夹命名为lib 把mysql-connector-java-5.1.13-bin.jar文件,复制到jdbc工程下的lib文件夹里。 ps:如果下载不了jar文件,可以私信我,或直接百度也行 鼠标右键

    2024年02月07日
    浏览(50)
  • MySQL | JDBC连接数据库详细教程【全程干货】

    JDBC,即 Java Database Connectivity ,java数据库连接。是一种用于执行SQL语句的Java API,它是Java中的数据库连接规范。这个API由 java.sql.*,javax.sql.* 包中的一些类和接口组成,它为Java开发人员操作数据库提供了一个 标准的API ,可以为多种关系数据库提供统一访问 JDBC 为多种关系数据

    2024年02月06日
    浏览(78)
  • Qt+MySql开发笔记:Qt5.9.3的msvc2017x64版本编译MySql8.0.16版本驱动并Demo连接数据库测试

    若该文为原创文章,转载请注明原文出处 本文章博客地址:https://hpzwl.blog.csdn.net/article/details/130381428 红胖子网络科技博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…   mysql驱动版本msvc2015x32版本调

    2023年04月26日
    浏览(87)
  • C#连接Mysql数据库详细教程(内附Mysql及Navicat)

            课上教学使用的是SqlServer数据库,由于SqlServer数据库配置难以理解,故学习使用Mysql代替数据库连接。(Mysql以及Navicat安装说明在压缩包内)         Mysql连接首先需要用到Mysql.Data.dll连接文件,也就是Mysql Connector Net这一文件,下载后安装会自动在C:Program Files (x8

    2024年02月14日
    浏览(55)
  • Linux服务器装mysql数据库并且连接数据库(详细教程)(阿里云)

    废话不多说,直接上教程。 1.首先执行如下命令,更新YUM源。 2.执行如下命令,安装MySQL。 3.执行如下命令,查看MySQL版本号。 4.返回结果如下,表示您已成功安装MySQL。 5.执行如下命令,启动MySQL服务。 6. 执行如下命令,设置MySQL服务开机自启动。 7.配置MySQL的root用户密码。

    2024年02月06日
    浏览(64)
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

    如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。 操作系统:Windows10 专业版 64位 Qt版本:Qt 5.15.2 开发环境Qt安装路径:D:Qt 交叉编译服务器:Ubuntu 18.4 交叉编译服务器Qt安装路径:/opt/Qt 目标芯片:rk3568 目标平台:arm64 Qt安装

    2024年02月11日
    浏览(78)
  • qt连接tcp通信和连接数据库

    通过数据库实现学生管理系统 widget.cpp widget.h    tcp服务器 tcp客户端

    2024年02月10日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包