void CLoginDlg::OnOK() 
{
BOOL bLogin=FALSE;
CString strPasswd, strAuthority; UpdateData(); // 更新数据变量
if(!db.Open(m_strDSN)) return; // 连接数据库
CRecordset rs(&db);
rs.Open(CRecordset::forwardOnly,
"select PASSWD, AUTHORITY from PERSON where ID='"+m_strUser+"'");
if(!rs.IsEOF())
{
rs.GetFieldValue("PASSWD", strPasswd);
rs.GetFieldValue("AUTHORITY", strAuthority);
if(strPasswd == CCrypt::Encrypt(m_strPasswd, 123) &&
   strAuthority == "3")
{
bLogin=TRUE; // 已连接
}
else
MessageBox("请重新输入密码。\n注意大小写!","密码错误");
}
else
{
MessageBox("请确认用户名大小写是否正确!","无此用户");
}
rs.Close();
if(bLogin) EndDialog(IDOK);
else db.Close(); // 关闭数据库
}

解决方案 »

  1.   

    代码功能归根结底不是别人帮自己看或讲解或注释出来的;而是被自己静下心来花足够长的时间和精力亲自动手单步或设断点或对执行到某步获得的中间结果显示或写到日志文件中一步一步分析出来的。
    提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
    单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。