我在做一个学生管理系统,在登陆界面中,我想根据输入的用户的权限从而打开相应窗口,例如: 
学生查询窗口、教师登陆成绩窗口等。 
请问一下调用什么函数来验证呢? 
比如,假如输入的用户是学生,我在数据库中设置权限userAble为student,当用户姓名及密码输入正确时,如何验证 
userAble==student呢?
以下是相关代码:void CUserDlg::OnOK() 
{
// TODO: Add extra validation here
UpdateData(true); try{
if(m_set.IsOpen())
m_set.Close(); m_set.m_strFilter.Format("useName='%s' and pass=%d",m_userName,m_userPass);
m_set.Open();
if(m_set.IsEOF())
{
m_set.Close();
AfxMessageBox("密码错误,请重新输入!");
}
else
{
CString str;
m_set.GetFieldValue(3,str);
if(str=='student')
{
m_set.Close();
AfxMessageBox("密码正确,欢迎登陆!");
CDialog::OnOK();
Studlg dlg;
dlg.DoModal();
}
}
}
catch(CDBException *e)
{
e->ReportError();
e->Delete();
return;
}
//CDialog::OnOK();
}
编译时,在if(str=='student')
出现error C2015: too many characters in constant 这种错误,
请各位帮忙

解决方案 »

  1.   

    VC的字符串是用双引号的,SQL是用单引号的
    所以if条件应该改为:if(str=="student")
      

  2.   


    二楼说的有点不对,VC的字符串是用双引号的,SQL是不一定用双引号的,如果在双引号里的字符串有要用引号的地方就要改成单引号,比如这句里的m_set.m_strFilter.Format("useName='%s' and pass=%d",m_userName,m_userPass); 还有楼主程序这里有点小问题
    m_set.m_strFilter.Format("useName='%s' and pass=%d",m_userName,m_userPass); 
    m_set.Open(); 
    if(m_set.IsEOF()) 

    m_set.Close(); 
    AfxMessageBox("密码错误,请重新输入!"); 
    } 也有可能是用户名错误的
      

  3.   

    用户名没错,其次SQL中就是用单引号呀