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. Unsafe中CAS的实现

    前言 Unsafe 是位于 sun.misc 包下的一个类.Unsafe 提供的 API 大致可分为内存操作.CAS.Class 相关.对象操作.线程调度.系统信息获取.内存屏障.数组操作等几类.由于 ...

  2. Oracle根据实体类比对2个数据库结构差异(demo)

    源起 在公司做项目时 经常出现 实体结构和线上的数据结构以及公司开发库数据结构不匹配的问题 但是又不能直接把开发库导入到生产库因为生产库已经有实际数据了 所以弄了一个小工具 此处只做记录用 demo级 ...

  3. Polly每次重试执行不同的操作

    Polly每次重试执行不同的操作 前言   最近在写WG(用的 .net core 3.1 + wpf + abp vnext),程序里大量用到了重试机制选用的是Polly组件(只知道这个...). ...

  4. vue — 创建vue项目

    创建vue项目 在程序开发中,有三种方式创建vue项目,本地引入vuejs.使用cdn引入vuejs.使用vue-cli创建vue项目.其中vue-cli可以结合webpack打包工具使用,大大方便了 ...

  5. 测试必知必会系列- Linux常用命令 - tar

    21篇测试必备的Linux常用命令,每天敲一篇,每次敲三遍,每月一循环,全都可记住!! https://www.cnblogs.com/poloyy/category/1672457.html 压缩一 ...

  6. Open live Writer 直接发布wps文章,优点是可以带上图片

    官方网站: http://openlivewriter.org/ 博客园的设置里面的 MetaWeblog访问地址

  7. EPX-Studio操作多线程的方法

    procedure TF1167908962.Button1Click(Sender: TObject); begin ThIndex := ; EPXThread1.StartThread; EPX ...

  8. 扩展gRPC支持consul服务发现和Polly策略

    gRPC由于需要用工具生成代码实现,可开发性不是很高,在扩展这方面不是很友好 最近研究了下,进行了扩展,不需要额外的工具生成,直接使用默认Grpc.Tools生成的代理类即可 相关源码在文章底部 客户 ...

  9. java基础-Map

    简介 Map是一种接口,实现类有 hashMap SortedMap是继承自Map的接口,实现类为TreeMap,在内部会对Key进行排序 遍历Map 使用for each循环遍历Map实例的keyS ...

  10. 洛谷 P5639 【CSGRound2】守序者的尊严 题解

    原题链接 简要题意: 从 \(1\) 号位开始走,可以连续走过一段连续的 \(0\) ,每走一次,所有位置取反. (即 \(0 \gets 1\),\(1 \gets 0\)). 算法一 模拟暴力即可 ...