用VS2017的MFC连接mysql数据库并写入数据

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

第一步:新建一个基于对话框的MFC项目

img点击并拖拽以移动

第二步:对项目进行配置,让它可以用代码连接到数据库:

1.由于电脑和数据库有32位和64位的,所以要根据自己的电脑和安装的数据库的情况,自己选择,

点击 ‘项目’ ——》 ‘属性‘ ——》’配置管理器‘,在这里可以选择自己需要的位数;

img点击并拖拽以移动

2.点击 ‘项目’ ——》 ‘属性‘ ——》’VC++属性‘,对其包含目录,引用目录和库目录进行配置。

img点击并拖拽以移动

(1) 选中包含目录后, 右边会出现下拉箭头, 点击该箭头,再点击 ‘编辑’,把你电脑里 MySQL 安装目录中的 include文件的路径填写在编辑框里面:

img点击并拖拽以移动

(2)步骤同上,对引用目录和库目录进行配置。 分别在引用目录和包含目录的编辑框中填写你电脑里MySQL安装目录中的lib 文件的路径,如图:

img点击并拖拽以移动 img点击并拖拽以移动

3.对附加依赖项进行设置。

在左侧点击 ‘配置属性’——》‘链接器’——》‘输入’,然后在右边的附加依赖项中加入 “ libmysql.lib”编辑框就行了。

img点击并拖拽以移动

4.将 MySql 安装目录中 libmysql.dll和 libmysql.lib 两个文件拷贝到当前项目的主目录下,以及主目录下与项目名同名的文件夹下。如图:

img点击并拖拽以移动 img点击并拖拽以移动

写到这数据库基本已经可以连上了

下面开始写代码,但在这之前要在数据库中新建一个数据库(test),并在这个数据库中新建一个表(student)如下图:

img点击并拖拽以移动

页面布局

1.把项目工程的界面弄成如下效果:

img点击并拖拽以移动

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连接
​
}
复制代码

点击并拖拽以移动

这样* 代码已经写好了,但是还要修改字符集*

点击 ‘项目’ ——》 ‘属性‘ ——》‘常规’,在右面有个字符集,把它改成 ‘使用多字节字符集’如图:

img点击并拖拽以移动

这样在向数据库中写入数据室就不会报错了。

4.调试运行代码 代码,效果如下:

img点击并拖拽以移动

打开数据库可以看到数据已经写入成功

img点击并拖拽以移动

好了,到这数据库已经连接完成了

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享