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 ...
随机推荐
- 测试 - 某网站ACCESS数据库注入漏洞
元宵节 团团圆圆总少不了一篇文 测试是否有注入 测试数据库类型 后面不用注释猜到可能是access 验证一下 这里说一下MySQL和ACCESS以及MSSQL的判断语句 MySQL:and len ...
- scrapy mid中间件一般处理方法
import user_agent import requests class UA_midd(object): def process_request(self,request,spider): r ...
- 基于osg的python三维程序开发(二)------向量
上一篇文章展示了如何简单创建一个osg python 程序, 本篇展示了了一些基础数据结构的使用: from pyosg import * vec = osg.Vec3Array() #push ba ...
- Latex数学符号对应表
1. 希腊字母 字母 实现 字母 实现 $\alpha$ \alpha $\Alpha$ \Alpha $\beta$ \beta $\Beta$ \Beta $\gamma$ \gamma $\Ga ...
- Java反射之成员方法的反射
上一篇介绍了Java反射之成员变量的反射,这次介绍成员方法的反射. [一]Method类 Method类中封装了所有java方法的属性,包括该方法是否私有,该方法的修饰符,返回值,参数,抛的错误等等. ...
- plantUML最佳实践
plantUML 使用plantUML中的活动图用来画流程图很好用; 但类图等就不很好用; 个人体会如下: • 时序图 推荐 • 用例图 一般 • 类 图 不推荐, 用Visual Paradigm或 ...
- 【vue生命周期】- 详解
这篇文章通俗易懂,写的不错,本文转载至:https://www.cnblogs.com/happ0/p/8075562.html 详解Vue Lifecycle 先来看看vue官网对vue生命周期的介 ...
- 【TIJ4】照例,每个分类的第一篇文章随便说两句
[其实没啥好说的,完].... 嘛,其实本来也就是放练习的地方. 如果说世界上的课本按练习难度分成两类,一类是像Weiss那种习题比内容难的,还有就是TIJ这种讲得详尽但是习题相对简单的了吧. 不过不 ...
- 3D游戏中各种空间变换到底是怎么回事
每一个游戏可以呈现炫丽效果的背后,需要进行一系列的复杂计算,同时也伴随着各种各样的顶点空间变换.渲染游戏的过程可以理解成是把一个个顶点经过层层处理最终转化到屏幕上的过程,本文就旨在说明,顶点是经过了哪 ...
- 从零开始学习R语言(二)——数据结构之“因素(Factor)”
本文首发于知乎专栏:https://zhuanlan.zhihu.com/p/60101041 也同步更新于我的个人博客:https://www.cnblogs.com/nickwu/p/125370 ...