CString strSQL;
strSQL.Format(_T("SELECT * FROM [UserTable] WHERE [UserName]='%s' AND [Password]='%s'"), strUser, strPass); 请问这个SQL语句验证方法怎么用呢?这句是什么意思??为什么前面是从表中SELECT出USERNAME和PASSWORD,而后面是strUser和strPass?CString::Format()里说了void Format(LPCTSTR lpszFormat...);没看懂是什么意思,请高手指点指点,我想用这个来完成验证。
strSQL.Format(_T("SELECT * FROM [UserTable] WHERE [UserName]='%s' AND [Password]='%s'"), strUser, strPass); 请问这个SQL语句验证方法怎么用呢?这句是什么意思??为什么前面是从表中SELECT出USERNAME和PASSWORD,而后面是strUser和strPass?CString::Format()里说了void Format(LPCTSTR lpszFormat...);没看懂是什么意思,请高手指点指点,我想用这个来完成验证。
CString strUser = yourname;
CString strPass = password;
那么
CString strSQL;
strSQL.Format(_T("SELECT * FROM [UserTable] WHERE [UserName]='%s' AND [Password]='%s'"), strUser, strPass);
就相当于
strSQL=_T("SELECT * FROM [UserTable] WHERE [UserName]='yourname' AND [Password]='password'";
CString mSqlStr;mSqlStr.Format(_T("SELECT * FROM [UserTable] WHERE [UserName]='%s' AND [Password]='%s'"), strUser, strPass);
if (!mrsDataSet.Open(AFX_DB_USE_DEFAULT_TYPE, mSqlStr)){
MessageBox(_T("数据库打开失败"));
return;
}
if (mrsDataSet.IsEOF()){
MessageBox(_T("未授权的用户,登入失败"));
return;
}
void CMy2Dlg::OnOK()
{
// TODO: Add extra validation here
CString strSQL;
CDengLu m_Set;
UpdateData();
if(m_strUser.IsEmpty())
{
MessageBox("请输入用户名!");
m_ctrUser.SetFocus();
return;
}
if(m_strPass.IsEmpty())
{
MessageBox("请输入密码!");
m_ctrPass.SetFocus();
return;
}
strSQL.Format("select * from GLY where '用户名'='%s' AND '密码'='%s'",m_strUser,m_strPass);
if(!m_Set.Open(AFX_DB_USE_DEFAULT_TYPE,strSQL))
{
MessageBox("打开数据库失败!","数据库错误",MB_OK);
return ;
}
if (m_Set.GetRecordCount()==0){
MessageBox(_T("密码错误,请重新输入!"));
m_ctrPass.SetFocus();
m_strPass="";
UpdateData(FALSE);
return;
}
else
{
MessageBox(_T("登录成功!"));
m_Set.Close();
CDialog::OnOK();
}
}
strSQL.Format("select * from GLY where \'用户名\'=\'%s\' AND \'密码\'=\'%s\'",m_strUser,m_strPass);
还有就是确认你的数据库表里的字段是否对大小写敏感,sql2000默认的时候是不敏感的.
strSQL.Format("select * from GLY where '用户名'='%s' AND '密码'='%s'",m_strUser,m_strPass);
改成
strSQL.Format("select * from GLY where [用户名]='%s' AND [密码]='%s'",m_strUser,m_strPass);
就正确了。。为什么是用【】的呢??是不是和数据库有关?我用的是ACCESS