,初用C++builder连接数据库时遇到的有关问题.初学者
求助,初用C++builder连接数据库时遇到的问题.菜鸟求助
做一个登录窗体,有身份验证功能
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;
queryString +="\"";
try
{
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->EduManagQuery->RecordCount ==0)
{
//如果查询表中记录为0,表示没有该用户
if(m_nTimes==3)//如果已经出现三次错误,则显示该用户不合法
{
MessageBox(NULL,"您是不合法用户","连接数据库错误",MB_OK);
ModalResult=mrAbort;
Close();//关闭该对话框
}
else
{
//让用户重新输入用户名
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK);
UserEdt->Text =""; //清空用户名输入框
UserEdt->SetFocus() ; //将光标移动到用户输入编辑框中
ModalResult=mrNone;
}
}
else //如果存在用户名,则判断口令是否正确
{
queryString += " and MPassword =";
queryString +="\"";
queryString +=PasswordEdt->Text ;
queryString +="\"";
try
{
DataMod->EduManagQuery->SQL->Clear();
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据库","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->EduManagQuery ==0) //如果查询表中的记录为0,表示输入的口令不正确
{
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;
}
}
}
运行后,输入用户名和口令点击确定按钮出现以下错误:
Project Project1.exe raised exception class EDBEngineError with message'Invalid use of keyword'.Token:fromEduManager
提示是对关键字的用户不合法吗??是什么问题呢,应该怎么修改,高手们不吝赐教啊。
------解决方案--------------------
queryString +="\"";
是什么数据库
应该是 queryString +="\'";
做一个登录窗体,有身份验证功能
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;
queryString +="\"";
try
{
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据表","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->EduManagQuery->RecordCount ==0)
{
//如果查询表中记录为0,表示没有该用户
if(m_nTimes==3)//如果已经出现三次错误,则显示该用户不合法
{
MessageBox(NULL,"您是不合法用户","连接数据库错误",MB_OK);
ModalResult=mrAbort;
Close();//关闭该对话框
}
else
{
//让用户重新输入用户名
MessageBox(NULL,"用户名不存在,请重新输入","登录数据库错误",MB_OK);
UserEdt->Text =""; //清空用户名输入框
UserEdt->SetFocus() ; //将光标移动到用户输入编辑框中
ModalResult=mrNone;
}
}
else //如果存在用户名,则判断口令是否正确
{
queryString += " and MPassword =";
queryString +="\"";
queryString +=PasswordEdt->Text ;
queryString +="\"";
try
{
DataMod->EduManagQuery->SQL->Clear();
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL() ;
DataMod->EduManagQuery->Active =true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据库","错误",MB_OK);
ModalResult=mrAbort;
return;
}
if(DataMod->EduManagQuery ==0) //如果查询表中的记录为0,表示输入的口令不正确
{
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;
}
}
}
运行后,输入用户名和口令点击确定按钮出现以下错误:
Project Project1.exe raised exception class EDBEngineError with message'Invalid use of keyword'.Token:fromEduManager
提示是对关键字的用户不合法吗??是什么问题呢,应该怎么修改,高手们不吝赐教啊。
------解决方案--------------------
queryString +="\"";
是什么数据库
应该是 queryString +="\'";