前言
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应用 ”。
对了,如果你的VS没有安装MFC,
可以进入文件路径 “ C:\Program Files (x86)\Microsoft Visual Studio\Installer ”
双击 “ setup.exe ” ,打开Visual Studio Installer,点击“ 修改 ”,
进行安装。(请安装红框内的内容)
2、选择 “ MFC应用 ”后,点击 “ 下一步 ”,填写 “ 项目名称 ” 和 “ 位置 ”后点击 “ 创建 ”,应用程序类型选择 “ 基于对话框 ”,点击 “ 完成 ”。博主在此的项目名称为 “ SupermarketCashierS ”。
二、登录界面基本内容
1、用控件做出如下简单的登录界面,右击先选择 “ 添加类 ” ,填写类名为 “ CLogin ”;再右击选择 “ 添加变量 ”,把控件的类别设为 “ 值 ”,填写 “ 名称 ” 和 “ 访问 ”。把密码框属性为 “ 行为 ” 的 “ 密码 ” 设为 true。
三、连接 mysql 数据库
这第三点为重点,注意。
1、首先博主的 mysql 版本是 64 bit 的,要注意了。所以用的平台都是用 x64,再点击 “ 配置管理器 ”处,把平台都设为 x64。
特别的是,把配置属性的 “ 环境 ” 填写为你系统安装 mysql 的路径下的 bin 文件夹,即 “ PATH = D:\mysql\mysql-8.0.23-winx64\bin; ”,分号别忘了。
2、在你安装 mysql 的文件夹中,找到 “ lib ” 文件夹下的 “ libmysql.lib ” 和 “ libmysql.dll ”,复制这两个文件到创建 MFC 程序的同级目录下,还有在它里面也要放,如图。
3、修改 “ VC++ 目录 ”中的 包含目录、 引用目录、 库目录,其路径分别是你系统里安装 mysql 路径的 include、lib、lib 文件夹。
再修改 “ C/C++ ” 的常规,和 “ 链接器 ” 的常规和输入,见图。
四、设置 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 ,输入字段如下:
五、上代码
1、在 “ pch.h ” 中添加一行代码 “ #include<afxdb.h> ”。
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 设置登录用户名的密码为数字,要修改字符集为使用多字节字符集。
六、运行代码,出现以下界面,则成功