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的更多相关文章

  1. Spring-Data-JPA整合MySQL和配置

    一.简介 (1).MySQL是一个关系型数据库系统,是如今互联网公司最常用的数据库和最广泛的数据库.为服务端数据库,能承受高并发的访问量. (2).Spring-Data-Jpa是在JPA规范下提供的 ...

  2. 在eclipse中构建solr项目+添加core+整合mysql+添加中文分词器

    最近在研究solr,这里只记录一下eclipse中构建solr项目,添加core,整合mysql,添加中文分词器的过程. 版本信息:solr版本6.2.0+tomcat8+jdk1.8 推荐阅读:so ...

  3. Springboot项目搭建(1)-创建,整合mysql/oracle,druid配置,简单的CRUD

    源码地址:https://github.com/VioletSY/article-base 1:创建一个基本项目:https://blog.csdn.net/mousede/article/detai ...

  4. mysql 与QT的连接

    第一步:安装 qt开发环境 bi@bi-desktop:~$sudo apt-get install qt4-dev-tools qt4-doc qt4-qtconfig qt4-demos qt4- ...

  5. Redis整合MySQL和MyCAT分库组件(来源是我的新书)

    MyCAT是一个开源的分布式数据库组件,在项目里,一般用这个组件实现针对数据库的分库分表功能,从而提升对数据表,尤其是大数据库表的访问性能.而且在实际项目里,MyCAT分库分表组件一般会和MySQL以 ...

  6. 全文检索引擎Solr系列——整合MySQL、MongoDB

    MySQL 拷贝mysql-connector-java-5.1.25-bin.jar到E:\solr-4.8.0\example\solr-webapp\webapp\WEB-INF\lib目录下面 ...

  7. c3p0整合mysql报错问题

    启动报错: [com.mchange.v2.c3p0.DriverManagerDataSource] - Could not load driverClass com.mysql.cj.jdbc.D ...

  8. 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 ...

  9. Spring学习总结(18)——Spring整合Mysql数据库一主多从、多主多从配置

    一.新建jdbc.properties配置文件 master.jdbc.driverClassName=com.mysql.jdbc.Driver master.jdbc.url=jdbc:mysql ...

随机推荐

  1. SSL/TLS 协议运行机制概述(二)

    SSL/TLS 协议运行机制概述(二) 在SSL/TLS 协议运行机制概述(一)中介绍了TLS 1.2 的运行机制,现在我们来看年 TLS 1.3 的运行机制.会涉及到SSL/TLS 协议运行机制概述 ...

  2. Tomcat起不来的原因

    1.没有配java_home Tomcat是Java编写的,所以必须要java_home 2.端口被占用 怎么查看端口被占用呢?——windows 小工具:Fport.exe 3.Catalina_h ...

  3. 从源码看 PHP 7 数组的实现

    本文所用源码为 PHP 7.4.4 的版本. PHP 7 数组概述 PHP 中的数组实际上是一个有序映射.映射是一种把 values 关联到 keys 的类型.此类型在很多方面做了优化,因此可以把它当 ...

  4. Geotools中读取shapefile路网数据,并创建DirectedGraph

    记录一下如何创建DirectedGraph,便于以后查找使用 static ShapefileDataStore sds= null; static DirectedGraph graph = nul ...

  5. LeetCode-最长回文串

    题目描述: 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意:假设字符 ...

  6. .NET Core学习笔记(5)——WebAPI从Server端push消息到Client

    标题起得有点厉害,汉字夹杂着E文,不符合教育部公布的“向社会推荐使用的外语词中文译名”规范.不过他管不着我.写本篇的起因,是重构一个现有的WinForms程序,将Server端的部分逻辑从raw so ...

  7. Jenkins下构建UI自动化之初体验

    一.缘 起 笔者之前一直在Windows环境下编写UI自动化测试脚本,近日在看<京东系统质量保障技术实战>一书中,萌生出在jenkins下构建UI自动化测试的想法 二.思 路 首先,在Li ...

  8. Natas30 Writeup(sql注入)

    Natas30: 本关是一个登录页面,查看源码,可以发现关键代码. if ('POST' eq request_method && param('username') &&am ...

  9. angular http 节流

    有时候点列表但是由于查询问题,后端返回数据的速度很慢,导致回来的顺序错乱,后端解决不了,前端来 在jq年代 像标志位 防抖 节流等 在angular里使用了rxjs //错误示范 getIntelli ...

  10. 如何使用Postman编写Testlink测试用例

    Postman2Testlink 通过Postman快速操作testlink测试用例.测试套件.测试计划.添加关键词.添加自定义字段等等. 工具地址 https://github.com/liyinc ...