为什么还会抛出异常啊?
<P> try{
DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL();
MessageBox(NULL,"你graer!","登陆数据库错误",MB_OK);
DataMod->EduManagQuery->Active=true;
}
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据库","错误",MB_OK);
ModalResult=mrAbort;
//DataMod->EduManagQuery->Active=false;
return;
}
MessageBox(NULL,"你不是!","登陆数据库错误",MB_OK);
if(DataMod->EduManagQuery->RecordCount==0)
{
if(m_nTimes==3)
{
MessageBox(NULL,"你不是合法用户!","登陆数据库错误",MB_OK);
ModalResult=mrAbort;
Close();
}
else
{
MessageBox(NULL,"用户名不存在,请从新输入","登陆数据库错误",MB_OK);
UserEdit->Text="";
PasswordEdit->Text="";
UserEdit->SetFocus();
ModalResult=mrNone;
}
}</P>
<P>try
{</P>
<P> DataMod->EduManagQuery->SQL->Add(queryString);
DataMod->EduManagQuery->ExecSQL();
DataMod->EduManagQuery->Active=true;</P>
<P> }
catch(EDBEngineError &E)
{
MessageBox(this,"不能查询数据库","错误",MB_OK);
ModalResult=mrAbort;
return;</P>
<P></P>
<P> }
(在一个表中查询用户名),我执行的是无论表中有没有的用户名,都抛出异常,而且程序不会执行红色的代码,为什么啊
</P> 我把代码传上来 <P>DataMod->EduManagQuery->SQL->Add(queryString);</P><P>在这句前面应该加上DataMod->EduManagQuery->SQL->Clear();</P> <P>还有你这两句代码不能同时用!</P>
<P>DataMod->EduManagQuery->ExecSQL();
DataMod->EduManagQuery->Active=true;</P>
<P>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>
<P>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P>
<P>DataMod->EduManagQuery->RecordCount;这句代码需要在数据集打开后才能执行,所以你这个时候就用DataMod->EduManagQuery->Active=true;</P>
<P>至于你的异常处理代码无法执行可能是你的catch里面设置的异常不对!一般的话可以用</P>
<P>catch(...)</P>
<P>这样可以捕捉所有的异常!</P>
[此贴子已经被作者于2004-9-24 17:33:31编辑过] <DIV class=quote><B>
<P>还有你这两句代码不能同时用!</P>
<P>DataMod->EduManagQuery->ExecSQL();
DataMod->EduManagQuery->Active=true;</P>
<P>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>
<P>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P></B></DIV>
<P>我是初学者,不过我感觉你说的不对啊,ExecSQL()是先执行啊,然后才执行->Active=true;</P>
<P>而且我是看着书上做的,你下面说的catch(...){},我试了,它还是抛出一样的异常,</P>
<P>它说:“Invalid use of keyword,Token:="ff(这是我要查询的用户名)",line Number:1' ”,</P> <P>我说的没错呀!尽信书不如无书呀!</P><P>从你的异常来看好像不是上面的代码报的错!你可以看看的输入代码有没有问题呀!</P><P>DataMod->EduManagQuery->SQL->Clear();这个语句加上了吗?</P>
页:
[1]