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(); // 关闭数据库
}
{
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(); // 关闭数据库
}
提醒:再牛×的老师也无法代替学生自己领悟和上厕所!
单步调试和设断点调试(VS IDE中编译连接通过以后,按F10或F11键单步执行,按Shift+F11退出当前函数;在某行按F9设断点后按F5执行停在该断点处。)是程序员必须掌握的技能之一。