Qt连接MySQL打印表中数据,并自动更新

一。 创建MySQL数据库和表:

你可以使用MySQL客户端或者命令行工具来执行以下SQL语句创建数据库和表,并插入随机数据。

    

CREATE DATABASE IF NOT EXISTS bak_dp;         //创建数据库名为bak_db
USE bak_dp;

CREATE TABLE IF NOT EXISTS tem (              //创建表名为tem
    id INT AUTO_INCREMENT PRIMARY KEY,
    data VARCHAR(255) NOT NULL
);

INSERT INTO tem (data) VALUES
('RandomData1'),
('RandomData2'),
('RandomData3'),
('RandomData4'),
('RandomData5'),
('RandomData6'),
('RandomData7'),
('RandomData8'),
('RandomData9'),
('RandomData10');                            //随机加入10个数据

二.创建Qt项目:

你需要安装Qt Creator和Qt的MySQL数据库驱动程序。

在Qt Creator中,创建一个新项目:选择 “应用程序” -> "Qt Widgets 应用程序",然后按照向导指示进行。

.pro 文件 (project_name.pro):

QT       += core gui sql                   //引入QT和SQL模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = project_name
TEMPLATE = app

SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h

FORMS    += mainwindow.ui

.h 文件 (mainwindow.h):

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QTimer>
#include <QtSql/QSqlDatabase>

QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private slots:
    void showData();

private:
    Ui::MainWindow *ui;
    QTimer *timer;
    QSqlDatabase db;
    int dataIndex;
};
#endif // MAINWINDOW_H

第一个 .cpp 文件 (main.cpp):

#include "mainwindow.h"
#include <QApplication>

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

第二个 .cpp 文件 (mainwindow.cpp):

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QDebug>
#include <QSqlQuery>
#include <QSqlError>

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent), ui(new Ui::MainWindow), dataIndex(0)
{
    ui->setupUi(this);

    // 设置数据库
    db = QSqlDatabase::addDatabase("QMYSQL");
    db.setHostName("localhost");
    db.setDatabaseName("bak_dp");            //数据库名
    db.setUserName("your_username");         //用户名
    db.setPassword("your_password");         //用户密码

    // 尝试打开数据库
    if (!db.open()) {
        qDebug() << "数据库连接失败: " << db.lastError().text();
        return;
    }

    // 设置计时器以每秒刷新一次数据
    timer = new QTimer(this);
    connect(timer, &QTimer::timeout, this, &MainWindow::showData);
    timer->start(1000); // 时间间隔设置为1000毫秒
}

MainWindow::~MainWindow()
{
    delete ui;
    db.close();
}

void MainWindow::showData()
{
    QSqlQuery query("SELECT data FROM tem LIMIT 1 OFFSET " + QString::number(dataIndex));
    if (query.next()) {
        QString data = query.value(0).toString();
        ui->label->setText(data); // 假设你的UI中有一个名为label的标签来显示数据
        dataIndex = (dataIndex + 1) % 10; // 循环显示10条数据
    } else {
        qDebug() << "查询失败: " << query.lastError().text();
    }
}

注意:

  • 请将your_usernameyour_password替换为你的MySQL数据库的用户名和密码。

  • 以上只是一个简单的示例,实际的项目会更加复杂,需要考虑错误处理、数据库连接的有效性检查、线程安全等。

  • 如果你的项目中还包含.ui文件(由Qt Designer创建),它也应该被包括在项目中,但是在这里没有提供。

  • 在Mainwindow的UI设计中,你应该有一个Label用于显示数据,本示例代码中默认label对象名为"label"。

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值