QT调用mysql数据表存储数据,mysql创建多列大表

一. 内容简介

用mysql创建900列的数据表,使用QT对该数据表实现基本数据操作。

二. 软件环境

2.1QT 5.14.1

新版QT6.4,,6.5在线安装经常失败,而5.9版本又无法编译64位程序,所以就采用5.14.1这个用的比较多也比较稳定的一个版本。

QT编译器采用的是MSVC2017 64bit。

链接:https://pan.baidu.com/s/1ER98DPAkTUPlIyCC6osNNQ?pwd=1234

2.2Mysql

mysql Ver 8.0.31 for Win64 on x86_64 (MySQL Community Server - GPL)

2.3SQLyog

在这里插入图片描述

三.主要流程

3.1mysql创建多列大表

3.2QT连接mysql

3.3QT操作数据库

四.具体步骤

4.1mysql创建多列大表

先贴代码块,主要用的就是存储过程,之后是详细过程

# 创建outp_1数据表,
CREATE TABLE outp_1(Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
# 存储过程添加字段列
DELIMITER //
CREATE PROCEDURE outp_1 ()
BEGIN
SET @bbb=1;
//此处设置有多少列
WHILE @bbb<901 DO
SET @sql = CONCAT('ALTER TABLE outp_1
ADD COLUMN `',@bbb,'` DOUBLE');
PREPARE statement_user_insert FROM @sql;
EXECUTE statement_user_insert;
DEALLOCATE PREPARE statement_user_insert;
SET @bbb = @bbb+1;
END WHILE;
END
//
DELIMITER ;
CALL outp_1 ();

//查询是否创建成功
SELECT * FROM outp_1;

打开mysql命令行

mysql -u root -p

进入以后需要指定使用的数据库

use database

随后可以将代码全部粘贴进去运行,运行过后以后,要将相应的存储过程删除,相同的存储过程只能创建一次,重复创建会报错,这个好像是删除存储过程的。

DROP PROCEDURE ShowStuScore;

还有就这个代码可以直接在sqlyog中运行了,上边那个方式是运行不了的话,可以尝试一下,我一台可以,另外一台不可以

4.2QT连接mysql

这里我直接连接报错了,所以采用了odbc连接的,附上odbc下载链接https://dev.mysql.com/downloads/connector/odbc/
安装完成以后
在这里插入图片描述
点击添加
在这里插入图片描述
选择这个点完成,里面两个都可以,Unicode driver 版本提供了更多字符集的支持,也就是提供了多语言的支持。而ANSI driver 版本是只针对有限的字符集的范围。,
在这里插入图片描述
然后测试,应该就连接成功了
然后在pro文件中添加,在头文件添加

//pro文件
QT += sql
//头文件
#include <QSqlDatabase>

随后连接数据库

//初始化变量
//这两个添加到头文件
QSqlDatabase db;
QSqlQuery query;


db = QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("localhost");
db.setPort(3306);
db.setDatabaseName("mysql");
db.setUserName("root");
db.setPassword("root");
if (!db.open()) {
   qDebug("Sql connect failed.");
   qDebug() << db.lastError().text();
} else {
   qDebug("Sql connected.");
}

即可连接成功

4.3QT操作多列大表

往多列大表中添加数据

 // outhf数据库添加空的字段
query.prepare("INSERT INTO outhf () VALUES ()");
query.exec();
QString sq_hf="";
//存储hf表数据
for (int i=1;i<=900;i++) {
// outhf
     q_hf=QString("UPDATE outhf SET `%1`=%2 WHERE Id=%3").arg(i-0).arg(matrix1_hf[i]).arg(Id);
     query.exec(sq_hf);
     counthf++;
}

查询数据,并读取

QString sq_hf="";
sq_hf=QString("select * from outhf where Id=%1").arg(Id);
query.exec(sq_hf);
while(query.next())
{
    if(query.value(0).toString().isNull()){
          qDebug() << "没有查到数据";
     }else{
          qDebug() << "查到数据";
     }
     qDebug() << "Id:" << query.value(0).toString();
     qDebug() << "Id:" << query.value(0).toString()
              << "R:" << query.value(1).toString() << " l:" << query.value(2).toString()
              << "E2:" << query.value(3).toString() << "n0:" << query.value(4).toString()
              << "E:" << query.value(5).toString() << " tb:" << query.value(6).toString()
              << "M:" << query.value(7).toString() << " N:" << query.value(8).toString();
}
  • 0
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值