求救!!登录窗口连接数据库不成功
做了一个简单的登录窗口,有身份验证功能,运行成功后,输入正确的用户名和口令(存在于数据库中的),出现提示:该用户名不存在。
代码如下.望各位高手不吝赐教,先谢谢了
ps:本人是菜鸟,这问题困扰我快一天了,恳请高手们帮帮我
m_nTimes++; //登录次数
//首先根据用户选择的是教务还是学生,确定查询哪个数据表
if(RadioGroup1->ItemIndex ==0)
{
//查询EduManager.db数据表
// 首先查询是否有该用户名
DataMod->EduManagQuery->SQL->Clear() ;
DataMod->EduManagQuery->Close() ;
AnsiString queryString= "select * from EduManager";
queryString +=" where EMName= ";
queryString +=" \' ";
queryString +=UserEdt->Text.c_str() ;
queryString +=" \' ";
try
{
DataMod->EduManagQuery->SQL->Add(queryString);
// DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Open() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult=mrAbort;
return;
}
//DataMod->EduManagQuery->First() ;
if(DataMod->EduManagQuery->RecordCount==0)
// !DataMod->EduManagQuery->IsEmpty()
{
//如果查询表中记录为0,表示没有该用户
if(m_nTimes==3)//如果已经出现三次错误,则显示该用户不合法
{
MessageBox(NULL,"您是不合法用户","连接数据库错误",MB_OK);
ModalResult=mrAbort;
Close();//关闭该对话框
}
else
{
//让用户重新输入用户名
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK);
UserEdt->Text =""; //清空用户名输入框
PasswordEdt->Text ="";
UserEdt->SetFocus() ; //将光标移动到用户输入编辑框中
ModalResult=mrNone;
}
}
else //如果存在用户名,则判断口令是否正确
{
queryString += " and EPassword = ";
queryString +=" \' ";
queryString +=PasswordEdt->Text.c_str() ;
queryString +=" \' ";
try
{
DataMod->EduManagQuery->SQL->Clear();
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->Open() ;
//DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据库","错误",MB_OK);
ModalResult=mrAbort;
return;
}
//DataMod->EduManagQuery->First() ;
if( DataMod->EduManagQuery->RecordCount==0 ) //如果查询表中的记录为0,表示输入的口令不正确
//!DataMod->EduManagQuery->IsEmpty()
{
if(m_nTimes==3)
{
//如果已经出现三次错误,则显示该用户不合法,强行退出
MessageBox(NULL,"您不是合法用户","登录数据库错误",MB_OK);
ModalResult=mrAbort;
Close(); //关闭该对话框
}
else //让用户重新输入口令
{
MessageBox(NULL,"口令不正确,请重新输入","登录数据库错误",MB_OK);
PasswordEdt->Text ="";
ModalResult=mrNone;
}
DataMod->EduManagQuery->Close() ;
}
else
{
//找到记录,关闭数据表,并返回到主窗体中
DataMod->EduManagQuery->Close() ;
ModalResult=mrOk;
}
}
}
else
{
//学生登录,查询student表
DataMod->StudentQuery->SQL->Clear() ;
DataMod->StudentQuery->Close() ;
//首先查询是否有该用户名
AnsiString queryString="select * from student" ;
queryString += " where StudentNo= ";
queryString +=" \' ";
queryString +=UserEdt->Text ;
queryString +=" \' ";
try
{
DataMod->StudentQuery->SQL->Add(queryString);
//DataMod->StudentQuery->ExecSQL() ;
DataMod->EduManagQuery->Open() ;
DataMod->StudentQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->StudentQuery->RecordCount ==0)//如果查询表中的记录为0,表明没有该用户
// !DataMod->EduManagQuery->IsEmpty()
{
if(m_nTimes==3)//如果输入错误次数已经超过三次,该用户为不合法用户
{
MessageBox(NULL,"您不是合法用户!","登录数据库错误",MB_OK);
ModalResult=mrAbort;
Close();//关闭该对话框
}
else //让用户重新输入用户名
{
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK);
UserEdt->Text ="";
UserEdt->SetFocus() ;
PasswordEdt->Text ="";
ModalResult=mrNone;
}
}
else //用户名存在,判断口令是否正确
{
queryString +=" and SPassword = ";
queryString +=" \' ";
queryString +=PasswordEdt->Text ;
queryString +=" \' ";
try
{
DataMod->StudentQuery->SQL->Add(queryString);
//DataMod->StudentQuery->ExecSQL() ;
DataMod->EduManagQuery->Open() ;
DataMod->StudentQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->StudentQuery->RecordCount ==0) //如果查询表中的记录为0,表示输入的口令不正确
// !DataMod->EduManagQuery->IsEmpty()
{
if(m_nTimes==3)
{
//如果已经出现三次错误,则显示该用户不合法,强行退出
MessageBox(NULL,"您不是合法用户","登录数据库错误",MB_OK);
ModalResult=mrAbort;
Close(); //关闭该对话框
}
else //让用户重新输入口令
{
MessageBox(NULL,"口令不正确,请重新输入","登录数据库错误",MB_OK);
PasswordEdt->Text ="";
ModalResult=mrNone;
}
DataMod->StudentQuery->Close() ;
}
else
{
//找到记录,关闭数据表,并返回到主窗体中
DataMod->StudentQuery->Close() ;
ModalResult=mrOk;
}
}
}
}
另:由于老出现以上错误,我试图把把DataMod->StudentQuery->RecordCount ==0用!DataMod->EduManagQuery->IsEmpty()来代替,但这时又会出现下面的错误提示 :Project Project1.exe raised exception class EDBEngineError with message 'Invalid use of keyword'. Token:fromEduManager
line Numeber:1'.Process stopped.Use Step or Run to continue.