QT使用ODBC连接MySQL

本文主要讲述QT使用ODBC连接MySQL数据库的过程。
第一步,下载连接工具
链接如下:https://cdn.mysql.com//Downloads/Connector-ODBC/8.0/mysql-connector-odbc-8.0.28-winx64.msi
在这里插入图片描述下完完成后默认安装即可,安装完成后在电脑的管理工具下可以找到
在这里插入图片描述打开后如下所示,新安装的没有名称为2和3的两条记录。按照箭头所示,点击添加。
在这里插入图片描述点击添加后如下所示,选择箭头所示,然后点击完成。
在这里插入图片描述点击完成后,如下所示
在这里插入图片描述需要依次填写,其中Data Source Name在使用QT连接ODBC时会用到,此处我写了3,自己取个名字即可。对于Description没有要求,随便写个默认的描述就行。最下面的Database要选择你自己电脑中的数据库,比如我的数据库式binshop,我就选择binshop,选择数据库后点击旁边的Test,可以测试时候连接成功。
本文测试用到的sql文件一并放在下载连接里面,需要的可以直接下载。完成后如下所示。多了一条名称为3的描述
在这里插入图片描述本文的数据库表描述如下
在这里插入图片描述QT的代码结构如下:
在这里插入图片描述在untitled.pro里面添加如下代码,相比于原来只添加了sql三个字母,其它全部默认。

QT       += core gui sql

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文件如下
在这里插入图片描述只增加了一个按钮和一个tableview。
,程序运行的结果如下
在这里插入图片描述
整个项目的下载链接如下
https://download.csdn.net/download/weixin_43552197/84995121

  • 5
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

是小峰呀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值