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

MFC+MySQL的数据库登录,整了几天也搜过不少博客资料,出现过各种各样的bug,最后终于让爷给整出来了。
注意:
关于软件的版本问题,mysql、ODBC、vs一定要注意为统一的x86或x64,以下的教程是x86(即32位的),vs的版本不用特别注意(可以自由选择),就是mysql和odbc,在安装的时候一定要选择一致的版本。我的是mysql server 5.6.47和connector/ODBC 5.3.9.(可以在网上搜索mysql和odbc的32位下载安装教程)
下面上全程干货!!!
第一步 建立基于对话框的mfc登录界面
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第1张图片给两个编辑框添加成员变量m_name和m_psd,如图所示。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第2张图片关于建立mfc的登录界面可以看一下我的另一篇博客:
https://blog.csdn.net/qq_43389721/article/details/104729968
第二步,配置环境。
在Debug-属性-vc++的包含、引用和库目录中选择mysql安装路径的include和lib文件(mysql是32位需要在c:/programfiles(x86)里选择)。MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第3张图片将mysql安装路径下lib文件夹中的libmysql.dll文件和libmysql.lib文件复制到工程项目文件夹以及与工程项目同名的文件夹下。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第4张图片
第三步,编写登录的代码。
双击登录按钮,添加如下代码。
此处参考文章https://www.cnblogs.com/cfxin/archive/2017/11/24/7889362.html
添加头文件
#include “winsock2.h” //定义socket
#include “mysql.h” //连接mysql的接口

#pragma comment(lib,“libmysql.lib”)//附加依赖项

	GetDlgItem(IDC_EDIT1)->GetWindowText(m_name); //获得输入的用户名
	GetDlgItem(IDC_EDIT2)->GetWindowText(m_psw); //获得输入的密码

	const char user[] = "用户名";
	const char pswd[] = "密码";
	const char host[] = "localhost";
	const char table[] = "表名";
	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("访问数据库成功!"));
	}

	CString select_sql_by_user;
	select_sql_by_user.Format(_T("select name,psw from admins where name = \'%s\'"), m_name);
	int ress = mysql_query(&mysqlCon, (char*)(LPCTSTR)select_sql_by_user);
	if (ress == 0) //检测查询成功
	{
		res = mysql_store_result(&mysqlCon);
		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);

第四步,在mysql中新建数据库和表格
如图
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第5张图片第五步,设置数据源ODBC,选择32位的
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第6张图片在用户DSN中点击添加,选择MySQL ODBC 5.2aDriver(这个在官网搜索下载)。
填好用户名和密码后在database中选择刚刚建的那个数据库,点击OK。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第7张图片第六步,在vs的类向导中新建classs下拉,选择MFC ODBC consumer,选机器数据源,点击刚刚新建的数据源,点击确定。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第8张图片MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第9张图片MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第10张图片
点击ok,(其中有一个弹出警告,不用管,点击确定)
最后编译发现还是有错误,则将预编译的头改为不使用。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第11张图片MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第12张图片最后编译发现有一个安全问题,则直接点击error,注释掉这一句即可。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第13张图片现在编译,没有错误,但是访问失败(用户名admin,密码123),最后改一个地方就ok采用多字符集。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第14张图片好了,MFC+Mysql实现数据库登录的就成功了,在这个过程当中不是一帆风顺的,最重要的还是要靠自己一步步解决问题,搜索资料才能成功。
贴上最后成功界面。
MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第15张图片MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现)_第16张图片

你可能感兴趣的:(MFC+MySQL(ODBC数据源)实现数据库登录详细教程(用vs实现))