您的位置:首页 > 数据库 > MySQL

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.双击新建对话框资源中的 确定控件添加代码

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.编译运行,功能实现
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: