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...);没看懂是什么意思,请高手指点指点,我想用这个来完成验证。

解决方案 »

  1.   

    例如
    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'";  
      

  2.   

    CRecordset mrsDataSet;
    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;
    }
      

  3.   

    请帮忙看下,不管我输入的密码对不对它都显示说密码不对,应该怎么改呢??
    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();
    }

    }
      

  4.   

    请楼主确认一下m_Set.GetRecordCount()的返回值是不是可靠,这个值有时始终会返回-1,这个有可能会产生始终通过的问题,还有SQL语句里是不是应该对 '换成\'就是
    strSQL.Format("select * from GLY where \'用户名\'=\'%s\' AND \'密码\'=\'%s\'",m_strUser,m_strPass); 
    还有就是确认你的数据库表里的字段是否对大小写敏感,sql2000默认的时候是不敏感的.
      

  5.   

    额解决了我把
    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