前言
1、系统环境:Window10,VS2019,mysql-8.0.23-winx64 (注意都是 64 bit)
2、这是一个简单的MFC的登录界面。程序,博主放在下面链接里,可自行下载。这篇博主算是教程。
SupermarketCashierS.zip-C++文档类资源-CSDN下载
https://download.csdn.net/download/qq_34438969/19323183
3、本文主要参考链接如下,但难受的是发现自己用的VS2019版本里没有ODBC Wizard,所以查了一些资料后才解决这个问题。
如果你用的版本不是VS2019,可以试用下面的方法来连接数据库。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)
https://blog.csdn.net/qq_43389721/article/details/104729364
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 table[] = "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, table, 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); //保存查询到的数据到 res
if (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 设置登录用户名的密码为数字,要修改字符集为使用多字节字符集。
六、运行代码,出现以下界面,则成功