vs整合MySQL和QT
23:37:23 2019-08-12
尝试用vs写一个程序整合MySQL和QT
参考资料:https://blog.csdn.net/qq_35987486/article/details/84066304
https://www.cnblogs.com/Enceladus/p/11197971.html
先在vs中创建一个qt项目 然后手动写MySQL
下面这个是手动配置 MySQL
#include <stdio.h>
#include <stdlib.h>
#include<Windows.h>
#include<mysql.h>
#include<iostream>
#pragma comment(lib, "libmysql.lib") int main(void)
{
MYSQL mysql, * sock; //声明MySQL的句柄
const char* host = "127.0.0.1"; //因为是作为本机测试,所以填写的是本地IP
const char* user = "root"; //这里改为你的用户名,即连接MySQL的用户名
const char* passwd = ""; //这里改为你的用户密码
const char* db = "text"; //这里改为你要连接的数据库的名字,一个数据可能有几张表
unsigned int port = ; //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。
const char* unix_socket = NULL; //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL
unsigned long client_flag = ; //这个参数一般为0 const char* i_query = "select * from datastudent"; //查询语句,从那个表中查询,这里后面没有; MYSQL_RES* result; //保存结果集的
MYSQL_ROW row; //代表的是结果集中的一行
//my_ulonglong row; mysql_init(&mysql); //连接之前必须使用这个函数来初始化
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gbk");
if ((sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag)) == NULL) //连接MySQL
{
printf("fail to connect mysql \n");
fprintf(stderr, " %s\n", mysql_error(&mysql));
exit();
}
else
{
fprintf(stderr, "connect ok!!\n");
} if (mysql_query(&mysql, i_query) != ) //如果连接成功,则开始查询 .成功返回0
{
fprintf(stderr, "fail to query!\n");
exit();
}
else
{
if ((result = mysql_store_result(&mysql)) == NULL) //保存查询的结果
{
fprintf(stderr, "fail to store result!\n");
exit();
}
else
{
while ((row = mysql_fetch_row(result)) != NULL) //读取结果集中的数据,返回的是下一行。因为保存结果集时,当前的游标在第一行【之前】
{
printf("name is %s\t", row[]); //打印当前行的第一列的数据
printf("id is %s\t\n", row[]); //打印当前行的第二列的数据
printf("math is %s\t\n", row[]);
printf("province is %s\t\n", row[]);
//row = mysql_num_row(result);
//printf("%lu\n", mysql_num_row(result));
}
} }
mysql_free_result(result); //释放结果集
mysql_close(sock); //关闭连接
system("pause");
exit(EXIT_SUCCESS); }
把建的qt项目代码和这个写在一起就能跑了
我用QT designer画好了界面
但MySQL的配置是在main函数中 qt改变界面上元素属性是需要用 ui指针的
为了在main函数中使用 我把.h文件里的ui指针 改为了public 这样可在main函数中访问到ui指针
头文件 .h
#pragma once
#include <QtWidgets/QWidget>
#include "ui_text.h" class text : public QWidget
{
Q_OBJECT public:
text(QWidget *parent = Q_NULLPTR);
Ui::textClass ui;
};
.cpp 没有修改
main.cpp
#include "text.h"
#include <QtWidgets/QApplication>
#include <stdio.h>
#include <stdlib.h>
#include<Windows.h>
#include<mysql.h>
#include<qtextcodec.h>
#pragma comment(lib, "libmysql.lib") int main(int argc, char* argv[])
{
MYSQL mysql, * sock; //声明MySQL的句柄
const char* host = "127.0.0.1"; //因为是作为本机测试,所以填写的是本地IP
const char* user = "root"; //这里改为你的用户名,即连接MySQL的用户名
const char* passwd = ""; //这里改为你的用户密码
const char* db = "text"; //这里改为你要连接的数据库的名字,一个数据可能有几张表
unsigned int port = ; //这是MySQL的服务器的端口,如果你没有修改过的话就是3306。
const char* unix_socket = NULL; //unix_socket这是unix下的,我在Windows下,所以就把它设置为NULL
unsigned long client_flag = ; //这个参数一般为0 const char* i_query = "select * from datastudent"; //查询语句,从那个表中查询,这里后面没有; MYSQL_RES* result; //保存结果集的
MYSQL_ROW row; //代表的是结果集中的一行
//my_ulonglong row;
QString name;
QString id;
QString score;
QString province;
mysql_init(&mysql); //连接之前必须使用这个函数来初始化
mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "UTF8");
if ((sock = mysql_real_connect(&mysql, host, user, passwd, db, port, unix_socket, client_flag)) == NULL) //连接MySQL
{
printf("fail to connect mysql \n");
fprintf(stderr, " %s\n", mysql_error(&mysql));
exit();
}
else
{
fprintf(stderr, "connect ok!!\n");
} if (mysql_query(&mysql, i_query) != ) //如果连接成功,则开始查询 .成功返回0
{
fprintf(stderr, "fail to query!\n");
exit();
}
else
{
if ((result = mysql_store_result(&mysql)) == NULL) //保存查询的结果
{
fprintf(stderr, "fail to store result!\n");
exit();
}
else
{
while ((row = mysql_fetch_row(result)) != NULL) //读取结果集中的数据,返回的是下一行。因为保存结果集时,当前的游标在第一行【之前】
{
printf("name is %s\t", row[]); //打印当前行的第一列的数据
printf("id is %s\t\n", row[]); //打印当前行的第二列的数据
printf("math is %s\t\n", row[]);
printf("province is %s\t\n", row[]);
name = row[];
id = row[];
score = row[];
province = row[];
//row = mysql_num_row(result);
//printf("%lu\n", mysql_num_row(result));
}
} }
mysql_free_result(result); //释放结果集
mysql_close(sock); //关闭连接 QApplication a(argc, argv);
text w;
w.ui.name->setText(name);
w.ui.id->setText(id);
w.ui.score->setText(score);
w.ui.province->setText(province);
w.show();
return a.exec(); }
字体为红的地方是 修改MySQL编码格式为 UTF-8
运行结果:

vs整合MySQL和QT的更多相关文章
- Spring-Data-JPA整合MySQL和配置
一.简介 (1).MySQL是一个关系型数据库系统,是如今互联网公司最常用的数据库和最广泛的数据库.为服务端数据库,能承受高并发的访问量. (2).Spring-Data-Jpa是在JPA规范下提供的 ...
- 在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器
最近在研究solr,这里只记录一下eclipse中构建solr项目,添加core,整合mysql,添加中文分词器的过程. 版本信息:solr版本6.2.0+tomcat8+jdk1.8 推荐阅读:so ...
- Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD
源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...
- mysql 与QT的连接
第一步:安装 qt开发环境 bi@bi-desktop:~$sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4- ...
- Redis整合MySQL和MyCAT分库组件(来源是我的新书)
MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...
- 全文检索引擎Solr系列——整合MySQL、MongoDB
MySQL 拷贝mysql-connector-java-5.1.25-bin.jar到E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib目录下面 ...
- c3p0整合mysql报错问题
启动报错: [com.mchange.v2.c3p0.DriverManagerDataSource] - Could not load driverClass com.mysql.cj.jdbc.D ...
- springboot jpa mongodb 整合mysql Field in required a bean of type that could not be found Failed to load ApplicationContext
1.完整报错 *************************** APPLICATION FAILED TO START *************************** Descripti ...
- Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置
一.新建jdbc.properties配置文件 master.jdbc.driverClassName=com.mysql.jdbc.Driver master.jdbc.url=jdbc:mysql ...
随机推荐
- Redis系列三 - 缓存雪崩、击穿、穿透
前言 从学校出来,做开发工作也有一定时间了,最近有想系统地进一步深入学习,但发现基础知识不够扎实,故此来回顾基础知识,进一步巩固.加深印象. 最初开始接触编程时,总是自己跌跌撞撞.不断摸索地去学习,再 ...
- 网址封锁的几种方法 公司把 pan.baidu.com 封了 研究实现原理
HTTP 和 HTTPS 协议HTTP 协议在 头部会发送 host 就是要访问的域名,可以用来被检测. HTTPS 协议虽然会加密全部通讯,但是在握手之前还是明文传输.有证书特证可被检测. 1, D ...
- Redis06——Redis到底能用在什么地方(上)
之前我们介绍了一些列关于Redis的数据结构.持久化.过期&淘汰策略.集群化等知识点,感兴趣的小伙伴可以在文章的末尾查看往期内容.今天将为大家带来Redis的应用.由于本篇文章较长,所以将拆分 ...
- 第16个算法 - leetcode-二叉树的层次遍历
二叉树的层次遍历 参考:https://www.cnblogs.com/patatoforsyj/p/9496127.html 给定一个二叉树,返回其按层次遍历的节点值. (即逐层地,从左到右访问所有 ...
- VWware Workstation 安装CentOS系统
VWware Workstation 安装CentOS系统 下载CentOS系统镜像: 官方地址:https://www.centos.org/download/mirrors/ 在此可选择华为云服务 ...
- Core + Vue 后台管理基础框架7——APM
1.前言 APM,又称应用性能统计,主要用来跟踪请求调用链,每个环节调用耗时,为我们诊断系统性能.定位系统问题提供了极大便利.本系统采用的是Elastic Stack体系中的APM,主要是之前部门搞P ...
- 扩展gRPC支持consul服务发现和Polly策略
gRPC由于需要用工具生成代码实现,可开发性不是很高,在扩展这方面不是很友好 最近研究了下,进行了扩展,不需要额外的工具生成,直接使用默认Grpc.Tools生成的代理类即可 相关源码在文章底部 客户 ...
- [Linux][C][gcc][tips] 在头文件中定义变量引发的讨论
概述 本人的原创文章,最先发表在github-Dramalife-note中.转载请注明出处. Define variable(s) in header file referenced by mult ...
- Proteomic Profiling of Paired Interstitial Fluids Reveals Dysregulated Pathways and Salivary NID1 as a Biomarker of Oral Cavity Squamous Cell Carcinoma (解读人:张聪敏)
文献名:Proteomic Profiling of Paired Interstitial Fluids Reveals Dysregulated Pathways and Salivary NID ...
- 贵州省网络安全知识竞赛个人赛Writeup
首先拖到D盾扫描 可以很明显的看出来确实就是两个后门 0x01 Index.php#一句话木马后门 0x02 About.php#文件包含漏洞 都可以很直观的看出来非常明显的漏洞,第一个直接就是eva ...