博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
数据库操作:MYSQL与MFC连接(二)
阅读量:6291 次
发布时间:2019-06-22

本文共 2788 字,大约阅读时间需要 9 分钟。

继上一片博客,这篇介绍数据库与MFC的连接,上篇是介绍用控制台连接MYSQL,其实MFC为代码增加一个界面,和一些消息相应(个人认为)

首先建一个MFC的工程,我这边建了一个Dlg 建好后看一下选项-> 目录->包含目录和库目录中是否包含了MYSQL的路径
这里写图片描述
再在Dlg.cpp中添加:
#include”winsock.h”
#include“mysql.h”
#pragma comment(lib,”libmySQL.lib”)
这里写图片描述
然后与控制台下应用相类似:

MYSQL mysql;    MYSQL_RES *res;    MYSQL_ROW row;

声明一一个结构体来保存数据库操作所需要的变量

接下来是对界面的设计:
这里写图片描述
我大致设计了:
按钮:数据库连接,查表(数据库下面有那些表),表内容(表中字段的内容),插入(将需向表中字段添加内容)
edit控件:用来显示从数据库中返回的值
大致将edit控件绑定一下的变量:
这里写图片描述
接下来设置按钮的功能函数:同样在ctrl+w下选择需要的函数相应,添加(注意都在Dlg类下添加),
在连接按钮中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Onlianmysql() {    // TODO: Add your control notification handler code here    mysql_init(&mysql);    if(mysql_real_connect(&mysql,"localhost","ra","123","student",3306,NULL,0))    {        AfxMessageBox("连接成功!");    }    else    {        AfxMessageBox("连接失败");    }}

在查表中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Onchabiao() {    // TODO: Add your control notification handler code here    sprintf(sql_query,"show tables");    res=mysql_conn_sqlQuery(&mysql,sql_query);    while((row=mysql_fetch_row(res))!=NULL)    {        m_biaoming=m_biaoming+row[0];        m_biaoming=m_biaoming+"\r\n";    }    UpdateData(false);//  AfxMessageBox("chaxunchengg");}

在表内容按钮中添加响应函数:

void CMy1211mfcmysql2002Dlg::Onbianneirong() {    // TODO: Add your control notification handler code here    int i=0,t;    CString query1;    sprintf(sql_query,"select * from student");//  query1="SET CHARACTER SET gbk"; //设置编码    t=mysql_real_query(&mysql,query1,(unsigned int)strlen(query1));    res=mysql_conn_sqlQuery(&mysql,sql_query);        while((row=mysql_fetch_row(res))!=NULL)    {        wodetian[i].xuehao=row[0];        wodetian[i].xingbei=row[1];        wodetian[i].xingming=row[2];        wodetian[i].nianling=row[3];        wodetian[i].xibie=row[4];        m_neirong=m_neirong+row[0]+row[1]+row[2]+row[3]+row[4]+"\r\n";    }    UpdateData(false);    AfxMessageBox("chaxunchengg");}

注:这边设置编码是因为edit控件好像不能显示utf8的编码类型所以要将输出的编码类型变成gbk,当然好像默认的latin1编码1类型,edit控件也能输出

在插入按钮中添加消息响应函数:

void CMy1211mfcmysql2002Dlg::Oncharu() {    // TODO: Add your control notification handler code here    UpdateData(true);    CString xuehao=m_xuehao;    CString xingbie=m_xingbie;    CString xingming=m_xingming;    CString nianling=m_nianling;    CString xibie=m_xibie;    CString hi="insert into student(xuehao,xingbie,xingming,nianling,xibie)values('"+xuehao+"','"+xingbie+"','"+xingming+"','"+nianling+"','"+xibie+"')";    sprintf(sql_query,hi);    res=mysql_conn_sqlQuery(&mysql,sql_query);    AfxMessageBox("chaxunchengg");}

最后就能完成基本的查表插入等操作

实验结果:

这里写图片描述
显示结果如图:
然后我向student表插入全为9的一条记录;
然后用mysql的控制台查询表内的记录结果如图:
这里写图片描述
注前面两行乱码是因为我将这个数据库创建时是用默认的Latin1,后来因为需要将mysql编码方式变为了utf8,这张表的编码方式没去改变,而且提醒一下改为utf8后在控制台下显示记录会乱码,原因是控制台显示的字符编码为gbk,这时要在查表之前加上SET CHARACTER SET gbk
在mfc上更新的话主要用到了
UpdateData(true);界面到后台
UpdateData(false);后台到界面
这里写图片描述

你可能感兴趣的文章
走红日本 阿里云如何能够赢得海外荣耀
查看>>
磁盘空间满引起的mysql启动失败:ERROR! MySQL server PID file could not be found!
查看>>
点播转码相关常见问题及排查方式
查看>>
[arm驱动]linux设备地址映射到用户空间
查看>>
弗洛伊德算法
查看>>
【算法之美】求解两个有序数组的中位数 — leetcode 4. Median of Two Sorted Arrays
查看>>
精度 Precision
查看>>
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>