MFC 对话框 运用mysql数据库 制作登录界面,记住密码功能

首先MFC连接mysql数据库的配置百度配好,这里不再解释。注意x64和x32配置时是有区别的。x64的系统libmysqld.dll文件要放到工程文件X64\DEBUG中才能配置好数据库连接。

1.新建MFC工程 命名为登录界面。在资源视图添加对话框资源IDD_DIALOG1

给该对话框定义一个dlg

2.打开该对话框资源加入两个edit(输入的账号密码),两个static(用户名:密码:),一个checkbox(记住密码)。

3.打开dlg.h文件在public加入

CString user1,password;
	MYSQL_RES *res;
	MYSQL m_sqlCon;
	MYSQL_ROW row;


4.找到登录界面.cpp文件中的BOOL C登录界面App::InitInstance()函数添加补充如下代码

dlg dlgg;
	if(dlgg.DoModal()==IDOK)
	{
		C登录界面Dlg dlg;
		m_pMainWnd = &dlg;
		INT_PTR nResponse = dlg.DoModal();
		if (nResponse == IDOK)
		{
		// TODO: 在此放置处理何时用
		//  “确定”来关闭对话框的代码
		}
		else if (nResponse == IDCANCEL)
		{
		// TODO: 在此放置处理何时用
		//  “取消”来关闭对话框的代码
		}
	}
	else
	{
		return FALSE;
	}


5.双击新建对话框资源中的 确定控件添加代码

	GetDlgItem(IDC_EDIT1)->GetWindowText(user1);
	GetDlgItem(IDC_EDIT2)->GetWindowText(password);
	const char user[] = "root";         
    const char pswd[] = "1234";        
    const char host[] = "localhost";    
    const char table[] = "mysql";       
    unsigned int port = 3306;         
	MYSQL_RES *res;
	MYSQL m_sqlCon;
	MYSQL_ROW row;
	if(user1.IsEmpty()||password.IsEmpty())
	{
		MessageBox(_T("用户名或密码不能为空!"),_T("用户登录信息"));
		return;
		}
	mysql_init(&m_sqlCon); 
	if(mysql_real_connect(&m_sqlCon, host,user,pswd,table,port,NULL,0))
	{
		mysql_query(&m_sqlCon, "SET NAMES GBK");
			int ress=mysql_query(&m_sqlCon,"select * from 用户账户密码");// 查询数据库中的"用户账号密码"表  
			if(!ress)
			{
				res=mysql_store_result(&m_sqlCon);
				if(res)
				{
					for(int i=0;i<res->row_count;i++)
					{
						row=mysql_fetch_row(res);
						if(user1==row[0]&&password==row[1])
						{

							mysql_free_result(res);
							mysql_close(&m_sqlCon);
							CFileFind finder;   //查找是否存在ini文件,若不存在,则生成一个新的默认设置的ini文件,这样就保证了我们更改后的设置每次都可用  
							BOOL ifFind = finder.FindFile(_T("d:\\RoadDataManagerApp.ini"));  
							if( !ifFind )  
							{  
							::WritePrivateProfileStringW(_T(""+user1+"用户"),_T("UID"),_T(""+user1+""),_T("d:\\RoadDataManagerApp.ini"));  
							::WritePrivateProfileStringW(_T(""+user1+"用户"),_T("PWD"),_T(""+password+""),_T("d:\\RoadDataManagerApp.ini"));  
							}
							::WritePrivateProfileStringW(_T(""+user1+"用户"),_T("UID"),_T(""+user1+""),_T("d:\\RoadDataManagerApp.ini")); 
							::WritePrivateProfileStringW(_T(""+user1+"用户"),_T("PWD"),_T(""+password+""),_T("d:\\RoadDataManagerApp.ini"));  
							CDialogEx::OnOK();
							break;
						}
						else 
						{
							if(i==res->row_count-1)
							{
							MessageBox(_T("用户名或密码不正确"),_T("提示"));
							return;
							}
						}
					}
				}
				
			}
		 }
6.双击新建对话框的记住密码checkbox控件

添加如下代码

GetDlgItem(IDC_EDIT1)->GetWindowText(user1);
	GetDlgItem(IDC_EDIT2)->GetWindowText(password);
	::CButton *CB=(CButton*)GetDlgItem(IDC_CHECK1);
	if(CB->GetCheck())
	{
	CString m_strCurrentUID,m_str;
	::GetPrivateProfileStringW(_T(""+user1+"用户"),_T("UID"),_T(""+user1+""),m_strCurrentUID.GetBuffer(MAX_PATH),MAX_PATH,_T("d:\\RoadDataManagerApp.ini"));
	::GetPrivateProfileStringW(_T(""+user1+"用户"),_T("PWD"),_T(""+password+""),m_str.GetBuffer(MAX_PATH),MAX_PATH,_T("d:\\RoadDataManagerApp.ini"));
	this->ID_ED1.SetWindowTextW(m_strCurrentUID);
	this->ID_ED2.SetWindowTextW(m_str);
	}

7.编译运行,功能实现

  • 8
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值