数据库操作:MYSQL与MFC连接(二)
2016-12-26 23:24
435 查看
继上一片博客,这篇介绍数据库与MFC的连接,上篇是介绍用控制台连接MYSQL,其实MFC为代码增加一个界面,和一些消息相应(个人认为)
首先建一个MFC的工程,我这边建了一个Dlg 建好后看一下选项-> 目录->包含目录和库目录中是否包含了MYSQL的路径
再在Dlg.cpp中添加:
#include”winsock.h”
#include“mysql.h”
#pragma comment(lib,”libmySQL.lib”)
然后与控制台下应用相类似:
声明一一个结构体来保存数据库操作所需要的变量
接下来是对界面的设计:
我大致设计了:
按钮:数据库连接,查表(数据库下面有那些表),表内容(表中字段的内容),插入(将需向表中字段添加内容)
edit控件:用来显示从数据库中返回的值
大致将edit控件绑定一下的变量:
接下来设置按钮的功能函数:同样在ctrl+w下选择需要的函数相应,添加(注意都在Dlg类下添加),
在连接按钮中添加消息响应函数:
在查表中添加消息响应函数:
在表内容按钮中添加响应函数:
注:这边设置编码是因为edit控件好像不能显示utf8的编码类型所以要将输出的编码类型变成gbk,当然好像默认的latin1编码1类型,edit控件也能输出
在插入按钮中添加消息响应函数:
最后就能完成基本的查表插入等操作
实验结果:
显示结果如图:
然后我向student表插入全为9的一条记录;
然后用mysql的控制台查询表内的记录结果如图:
注前面两行乱码是因为我将这个数据库创建时是用默认的Latin1,后来因为需要将mysql编码方式变为了utf8,这张表的编码方式没去改变,而且提醒一下改为utf8后在控制台下显示记录会乱码,原因是控制台显示的字符编码为gbk,这时要在查表之前加上SET CHARACTER SET gbk
在mfc上更新的话主要用到了
UpdateData(true);界面到后台
UpdateData(false);后台到界面
首先建一个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);后台到界面
相关文章推荐
- 数据库操作:MFC连接与MYSQL
- 数据库操作:java连接MYSQL实例代码演示
- 数据库操作:java连接MYSQL实例代码演示
- 深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
- mfc vs2010 C++ 连接mysql等数据库
- Java学习笔记——JDBC之与数据库MySQL的连接以及增删改查等操作
- ASP.NET与MySql的连接——数据库访问操作
- jdbc 连接数据库、批量操作、事务(oracle、mysql)
- 深入探讨:PHP使用数据库永久连接方式操作MySQL的是与非
- mfc vs2010 C++ 连接mysql等数据库
- C# 连接 MySQL 并进行数据库操作(入门篇)
- PHP使用数据库永久连接方式(mysql_pconnect)操作MySQL的是与非
- mysql的数据库相关维护操作:重启、修改连接数、删除连接
- mysql连接数据库操作User对象
- MFC开发心得——ADO连接和操作数据库
- PHP使用数据库永久连接方式操作MySQL的是与非
- jsp连接mysql对数据库进行操作乱码的解决
- Java连接MySQL 数据库的正确操作流程
- mysql和orcale数据库连接与SQL操作
- 【SQL】JDBC之与数据库MySQL的连接以及增删改查等操作