MFC 对话框 运用mysql数据库 制作登录界面,记住密码功能
2016-11-19 15:47
435 查看
首先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.双击新建对话框资源中的 确定控件添加代码
添加如下代码
7.编译运行,功能实现
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.编译运行,功能实现
相关文章推荐
- 用vc制作带密码检验功能的登录界面 MFC
- MiniTwitter登录界面记住密码功能
- Android登录界面用SharedPreferences实现记住密码功能
- 登录界面记住密码功能
- 基于对话框的MFC登录界面实现(MySQl数据库ODBC连接)
- Android 使用SharedPreferrences储存密码登录界面记住密码功能
- Android——SharedPreferences实现登录界面的记住密码和自动登录功能
- Android登录界面用SharedPreferences实现记住密码功能
- 一个简单WPF登陆界面,包含记住密码,自动登录等功能,简洁美观
- Android——SharedPreferences实现登录界面的记住密码和自动登录功能
- Android探索之路:实现登录界面的记住密码功能
- Android登录界面用SharedPreferences实现记住密码功能
- 记一次登录程序的改进过程(改进记住密码功能、提高用户交互)
- 【小功能1】android登录时记住和显示密码功能
- Android 记住密码和自动登录界面的实现(SharedPreferences 的用法)
- MFC登录界面对话框连接数据库代码
- flex 登录时记住用户名和密码功能实现
- Winform实现登录窗体记住密码的功能
- winform登录窗体实现记住密码功能
- 所有系统已经实现单点登录及记住密码功能