数学建模社区-数学中国

标题: 为什么还会抛出异常啊? [打印本页]

作者: ice2000feng    时间: 2004-9-24 12:14
标题: 为什么还会抛出异常啊?
<> try4 N8 X, w$ J  H% p# s8 k
                {9 C: ^8 n6 H/ [  k% J+ q
                        ! O" ^. n. F7 U3 b; y+ d2 y
                        DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Add(queryString);; ^: p( j/ V: P' f3 C3 ?) d: {
                        
. Z' u& b. S" M5 E( V# R* I/ k, i                        DataMod-&gt;EduManagQuery-&gt;ExecSQL();: n/ |3 E* X* O) e3 Z* w* M
                        MessageBox(NULL,"你graer!","登陆数据库错误",MB_OK);- {% u+ a5 b; z9 |- A  U" Z
                        DataMod-&gt;EduManagQuery-&gt;Active=true;3 r7 t' t$ n/ w/ G1 j
                }. U) B/ o; ]: r' u, b# Q
                catch(EDBEngineError &amp;E)* F5 h4 R6 F' V. h# u) I8 J
                {2 J: v5 U/ m9 Y: e; S
                        MessageBox(this,"不能查询数据库","错误",MB_OK);9 J7 g8 d' c1 y2 ~2 {: N7 B3 x4 u
                        ModalResult=mrAbort;
' E3 t, B9 T& k- m( O" g2 X                        //DataMod-&gt;EduManagQuery-&gt;Active=false;
3 Z- N8 i" a9 F4 j( s+ W                        return;
5 m5 M; v- W2 @" ~) D                }4 O0 E$ N1 G& m5 K
                MessageBox(NULL,"你不是!","登陆数据库错误",MB_OK);
/ k' A& a4 N+ [6 e                if(DataMod-&gt;EduManagQuery-&gt;RecordCount==0)# s/ _2 R9 C" y- g- C9 c0 ?9 H: C
                {0 h7 z$ x" d+ ~4 n1 ~
                        if(m_nTimes==3)$ z3 x" l6 T- m  r
                        {
6 F1 m9 T- Q$ Z, T& h# I0 o                                MessageBox(NULL,"你不是合法用户!","登陆数据库错误",MB_OK);
; C: T' H! r2 L( a; l) C                                ModalResult=mrAbort;- A  p, i) K3 y- a" \" S  h
                                Close();
8 p2 t# g4 X7 e                        }
3 i3 r  T8 B  H6 U" k                        else
7 d3 C6 U* n2 J1 `  X9 E1 f1 U                        {, d( b2 Q6 e; p( f4 `4 p
                                MessageBox(NULL,"用户名不存在,请从新输入","登陆数据库错误",MB_OK);. L" K# e6 L' }" i$ e5 P# M
                                UserEdit-&gt;Text="";0 B3 a& h( y8 p  \/ I( }" Y
                                PasswordEdit-&gt;Text="";
: Q6 e; j6 D7 D& S                                UserEdit-&gt;SetFocus();9 k$ e' q6 W# e: a1 o; l% G
                                ModalResult=mrNone;* N! b6 c' F! |/ r( r+ X6 d
                        }2 U6 D4 L. o- H( L0 _: N5 t
                }</P>
3 Y& k+ C: P, ~7 u/ a5 Y
# V0 g; @; E9 B! X% d<>try0 Q, C" w9 v8 z% D) i6 g
                {</P>
4 j# C% w. O# ?4 M0 e<>                        DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Add(queryString);
0 `4 R) b+ L. _" _+ O5 T6 N                        DataMod-&gt;EduManagQuery-&gt;ExecSQL();& |4 ^; y% R" P( n
                        DataMod-&gt;EduManagQuery-&gt;Active=true;</P>
# n+ L9 x7 s9 x& ]<>                }
& N/ k  n5 ]5 P: ?. Z                catch(EDBEngineError &amp;E)5 Q7 _" {& h" g8 D4 G9 E
                {
7 p. Z3 m- x# _8 k+ k                        MessageBox(this,"不能查询数据库","错误",MB_OK);- e- P7 T& P) _# U' i
                        ModalResult=mrAbort;: s. @# P( y1 y7 J' {
                        return;</P>
9 m4 k; }! I& v3 ]$ F7 j<>
</P>- [& U' {/ l$ s
<>                }
1 x. a6 W+ U2 L  E' y' a( @(在一个表中查询用户名),我执行的是无论表中有没有的用户名,都抛出异常,而且程序不会执行红色的代码,为什么啊6 O, c9 S1 ^: V
</P>
作者: ilikenba    时间: 2004-9-24 17:23
<>DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Add(queryString);</P><>在这句前面应该加上DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Clear();</P>
作者: ilikenba    时间: 2004-9-24 17:29
<>还有你这两句代码不能同时用!</P>
' N, J. E, X6 `9 n6 I3 ~5 E6 L<>DataMod-&gt;EduManagQuery-&gt;ExecSQL();
* D! m6 v' h- I/ L- ]- J; {+ Q: C" ?DataMod-&gt;EduManagQuery-&gt;Active=true;</P>
* [6 h6 }: J; S4 N<>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>
2 D  b9 W0 U7 C<>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P>- \* m8 ]/ P2 [- g) E1 C
<>DataMod-&gt;EduManagQuery-&gt;RecordCount;这句代码需要在数据集打开后才能执行,所以你这个时候就用DataMod-&gt;EduManagQuery-&gt;Active=true;</P>6 ]6 U4 V: Q" U' j9 Y- `, Y
<>至于你的异常处理代码无法执行可能是你的catch里面设置的异常不对!一般的话可以用</P>
, V9 a& H7 p* v' K<>catch(...)</P>0 u5 ~0 n1 y4 Y) Z" A4 f' E
<>这样可以捕捉所有的异常!</P>
3 M! l0 K: _: M- s0 V
[此贴子已经被作者于2004-9-24 17:33:31编辑过]

作者: ice2000feng    时间: 2004-9-24 23:13
<DIV class=quote><B>
" Q7 c- z* l  F) K  H<>还有你这两句代码不能同时用!</P>
' W1 ]/ |1 g7 ?<>DataMod-&gt;EduManagQuery-&gt;ExecSQL();8 }& b- x/ y, v( {
DataMod-&gt;EduManagQuery-&gt;Active=true;</P>; A4 X( Z4 h0 n( J) D) z' n" {
<>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>, X; a4 w3 }2 E* k
<>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P></B></DIV>; o+ n9 T5 ?& w- x$ E: l9 d4 B) [% V
<>我是初学者,不过我感觉你说的不对啊,ExecSQL()是先执行啊,然后才执行-&gt;Active=true;</P>
  S' Q9 j+ }- b2 a% \<>而且我是看着书上做的,你下面说的catch(...){},我试了,它还是抛出一样的异常,</P>1 R1 r  N& W7 ~; t. b
<>它说:“Invalid use of keyword,Token:="ff(这是我要查询的用户名)",line Number:1'  ”,</P>
作者: ilikenba    时间: 2004-9-25 11:18
<>我说的没错呀!尽信书不如无书呀!</P><>从你的异常来看好像不是上面的代码报的错!你可以看看的输入代码有没有问题呀!</P><>DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Clear();这个语句加上了吗?</P>
作者: ice2000feng    时间: 2004-9-25 12:26
我把代码传上来




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5