用VS2017的MFC连接mysql数据库并写入数据
- <span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">第一步:新建一个基于对话框的MFC项目:</span>
第二步:对项目进行配置,让它可以用代码连接到数据库:
1.由于电脑和数据库有32位和64位的,所以要根据自己的电脑和安装的数据库的情况,自己选择,
点击 ‘项目’ ——》 ‘属性‘ ——》’配置管理器‘,在这里可以选择自己需要的位数;
2.点击 ‘项目’ ——》 ‘属性‘ ——》’VC++属性‘,对其包含目录,引用目录和库目录进行配置。
(1) 选中包含目录后, 右边会出现下拉箭头, 点击该箭头,再点击 ‘编辑’,把你电脑里 MySQL 安装目录中的 include文件的路径填写在编辑框里面:
(2)步骤同上,对引用目录和库目录进行配置。 分别在引用目录和包含目录的编辑框中填写你电脑里MySQL安装目录中的lib 文件的路径,如图:
3.对附加依赖项进行设置。
在左侧点击 ‘配置属性’——》‘链接器’——》‘输入’,然后在右边的附加依赖项中加入 “ libmysql.lib”编辑框就行了。
4.将 MySql 安装目录中 libmysql.dll和 libmysql.lib 两个文件拷贝到当前项目的主目录下,以及主目录下与项目名同名的文件夹下。如图:
写到这数据库基本已经可以连上了
下面开始写代码,但在这之前要在数据库中新建一个数据库(test),并在这个数据库中新建一个表(student)如下图:
1.把项目工程的界面弄成如下效果:
2.分别给上面的三个编辑框添加为 CString 类型的变量:m_num,m_name,m_age;
3.数据上传在‘插入’按钮的消息处理函数中实现,代码如下:
- //因为数据库是通过网络连接的,必须包含网络相关头文件
- #include "winsock.h"
- //这个没什么好说的,mysql头文件自然要包含
- #include "mysql.h"
- void Cmysql_testDlg::OnBnClickedInsertButton()
- {
- // TODO: 在此添加控件通知处理程序代码
- MYSQL m_sqlCon;
- //初始化数据库对象
- mysql_init(&m_sqlCon);
- //localhost:服务器地址,可以直接填入IP;root:账号;
- //123:密码;test:数据库名;3306:网络端口
- if (!mysql_real_connect(&m_sqlCon, "localhost", "root",
- "123456", "test", 3306, NULL, 0))
- {
- AfxMessageBox(_T("数据库连接失败!"));
- return;
- }
- else//连接成功则继续访问数据库,之后的相关操作代码基本是放在这里面的
- {
- AfxMessageBox(_T("数据库连接成功!"));
- UpdateData(true);
- //设置数据库字符格式,解决中文乱码问题
- mysql_query(&m_sqlCon, "set names 'gb2312'");
- char* num = (char*)m_num.GetBuffer();
- char* name = (char*)m_name.GetBuffer();
- char* age = (char*)m_age.GetBuffer();
- char insert[1000];
- sprintf_s(insert, "insert into student(num, name, age) values (\'%s\', \'%s\', \'%s\')",
- num, name, age);
- // 执行 sql 语句。
- // mysql_query() 的返回值份很多情形, 进行判断使要注意。
- if (mysql_query(&m_sqlCon, insert) == 0)
- {
- AfxMessageBox(_T("插入数据成功!"));
- }
- else {
- AfxMessageBox(_T("插入数据失败!"));
- }
- }
- UpdateData(false);
- mysql_close(&m_sqlCon);//关闭Mysql连接
- }
点击 ‘项目’ ——》 ‘属性‘ ——》‘常规’,在右面有个字符集,把它改成 ‘使用多字节字符集’如图:
这样在向数据库中写入数据室就不会报错了。
4.调试运行代码 代码,效果如下:
打开数据库可以看到数据已经写入成功
好了,到这数据库已经连接完成