当前位置: 代码迷 >> 综合 >> (VS2019 MFC连接 mysql)做简单的登录界面(详细)
  详细解决方案

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

热度:104   发布时间:2023-09-22 20:53:09.0

前言

1、系统环境:Window10,VS2019,mysql-8.0.23-winx64 (注意都是 64 bit)

2、这是一个简单的MFC的登录界面。程序,博主放在下面链接里,可自行下载。这篇博文算是教程。

SupermarketCashierS.zip-C++文档类资源-CSDN下载

3、本文主要参考链接如下,但难受的是发现自己用的VS2019版本里没有ODBC Wizard,所以查了一些资料后才解决这个问题。

如果你用的版本不是VS2019,可以试用下面的方法来连接数据库。 

MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)

4、题外话:博主打算做个简单的超市收银系统,这只是第一步。

 

一、创建 MFC 程序

1、打开Visual Studio 2019, 点击 “ 创建新项目 ”,选择 “ MFC应用 ”。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

对了,如果你的VS没有安装MFC,

可以进入文件路径 “ C:\Program Files (x86)\Microsoft Visual Studio\Installer ” 

双击 “ setup.exe ” ,打开Visual Studio Installer,点击“ 修改 ”,

进行安装。(请安装红框内的内容)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

2、选择 “ MFC应用 ”后,点击 “ 下一步 ”,填写 “ 项目名称 ” 和 “ 位置 ”后点击 “ 创建 ”,应用程序类型选择 “ 基于对话框 ”,点击 “ 完成 ”。博主在此的项目名称为 “ SupermarketCashierS ”。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

二、登录界面基本内容

1、用控件做出如下简单的登录界面,右击先选择 “ 添加类 ” ,填写类名为 “ CLogin ”;再右击选择 “ 添加变量 ”,把控件的类别设为 “ 值 ”,填写 “ 名称 ” 和 “ 访问 ”。把密码框属性为 “ 行为 ” 的 “ 密码 ” 设为 true。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 (VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

三、连接 mysql 数据库

这第三点为重点,注意。

1、首先博主的 mysql 版本是 64 bit 的,要注意了。所以用的平台都是用 x64,再点击 “ 配置管理器 ”处,把平台都设为 x64。

特别的是,把配置属性的 “ 环境 ” 填写为你系统安装 mysql 的路径下的 bin 文件夹,即 “ PATH = D:\mysql\mysql-8.0.23-winx64\bin;  ”,分号别忘了

(VS2019 MFC连接 mysql)做简单的登录界面(详细) (VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

2、在你安装 mysql 的文件夹中,找到 “ lib ” 文件夹下的 “ libmysql.lib ” 和 “ libmysql.dll ”,复制这两个文件到创建 MFC 程序的同级目录下,还有在它里面也要放,如图。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

3、修改 “ VC++ 目录 ”中的 包含目录、 引用目录、 库目录,其路径分别是你系统里安装 mysql 路径的 include、lib、lib 文件夹。

再修改 “ C/C++ ” 的常规,和  “ 链接器 ” 的常规和输入,见图。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

四、设置 mysql 数据库

1、首先记得启动 mysql 服务,先用管理员运行 DOS 界面,输入“net stop mysql”,停止 mysql 服务,再按键 “ Win + R ”,输入 “ cmd ”,即如下图:

PS C:\WINDOWS\system32> net start mysql
MySQL 服务正在启动 ..
MySQL 服务已经启动成功。PS C:\WINDOWS\system32>

 

2、创建数据库 admins,表格 admin ,输入字段如下:

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

五、上代码

1、在 “ pch.h ” 中添加一行代码 “ #include<afxdb.h> ”。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

2、双击 “ 登录 ” 按钮,跳转到 “ void CSupermarketCashierSDlg::OnBnClickedOk() ” 中。填写以下代码:

void CSupermarketCashierSDlg::OnBnClickedOk()
{// Login Button//CDialogEx::OnOK();GetDlgItem(IDC_EDIT1)->GetWindowText(m_name); //获得输入的用户名GetDlgItem(IDC_EDIT2)->GetWindowText(m_psw); //获得输入的密码const char user[] = "root"; //填写你的 mysql 用户名const char pswd[] = "123456";  //填写你的 mysql 密码const char host[] = "localhost";const char database[] = "admins";  //填写你的 mysql 数据库名称unsigned int port = 3306;MYSQL_RES* res;MYSQL_ROW row;MYSQL mysqlCon;if (m_name.IsEmpty() || m_psw.IsEmpty()){MessageBox(_T("用户名或密码不能为空!"), _T("用户登录信息"));return;}mysql_init(&mysqlCon);if (!mysql_real_connect(&mysqlCon, host, user, pswd, database, port, NULL, 0)){AfxMessageBox(_T("访问数据库失败!"));}else{mysql_query(&mysqlCon, "SET USER GBK"); //设置字符集AfxMessageBox(_T("访问数据库成功!"));}//mysql_query(&myCont, "SET NAMES GBK"); //设置编码格式,否则在cmd下无法显示中文 // 如果你的用户名是中文,加上上面这句;int ress = mysql_query(&mysqlCon, "select name, psw from admin");if ( ress == 0 ) //检测查询成功为0,不成功则非0{res = mysql_store_result(&mysqlCon); //保存查询到的数据到 resif (mysql_num_rows(res) == 0) //查询结果为空{AfxMessageBox(_T("用户不存在"));}else{row = mysql_fetch_row(res);if (m_psw == row[1]){mysql_free_result(res);MessageBox(_T("登录成功!"));}else{AfxMessageBox(_T("密码错误!"));}}}else{AfxMessageBox(_T("访问失败!"));}mysql_close(&mysqlCon);}

 

PS:

(1)如果忘记你的 mysql 密码,可以看博主这篇博文:

Win10 mysql-8.0.23-winx64 忘记 mysql 密码解决方法(详细步骤)

https://blog.csdn.net/qq_34438969/article/details/116647580

 

(2)如果你在 mysql 设置登录用户名的密码为数字,要修改字符集为使用多字节字符集。

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

六、运行代码,出现以下界面,则成功

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

(VS2019 MFC连接 mysql)做简单的登录界面(详细)

 

  相关解决方案