数学建模社区-数学中国

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

作者: ice2000feng    时间: 2004-9-24 12:14
标题: 为什么还会抛出异常啊?
<> try
. |# |' N; t9 m) V, K                {5 G+ R" q2 \  n2 R5 z
                        
' ?! c- K' g$ i+ Z4 |0 H                        DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Add(queryString);
+ h+ ~# |. M) z  N5 ~: {* ^                        " n; \% H4 b( l
                        DataMod-&gt;EduManagQuery-&gt;ExecSQL();, Z" N) C. q  \- a
                        MessageBox(NULL,"你graer!","登陆数据库错误",MB_OK);  D3 _2 A  e& k  S% V
                        DataMod-&gt;EduManagQuery-&gt;Active=true;, Z# ]0 [& A+ ]) P( n/ u
                }0 Q: t' q( d) V" u+ V0 t: n& K
                catch(EDBEngineError &amp;E)
8 m# F! R/ X* d                {# s: N( f* a* B5 S2 d$ C1 i! J  ]( k
                        MessageBox(this,"不能查询数据库","错误",MB_OK);% U' e, s5 q" U5 F" Y/ g# D1 B
                        ModalResult=mrAbort;
/ ~: q  C7 }( z& z, N                        //DataMod-&gt;EduManagQuery-&gt;Active=false;% B! G; ~: U8 B* l
                        return;
; e; u  d/ U# ^1 |7 m% x3 A% o                }
3 s- H8 X; b! L# p4 q* l                MessageBox(NULL,"你不是!","登陆数据库错误",MB_OK);
$ S6 V3 z7 M% B% f% X6 a8 N                if(DataMod-&gt;EduManagQuery-&gt;RecordCount==0)
2 Q' I2 `; l, ^1 s                {  B: z$ d9 N! G. f% @6 z; s
                        if(m_nTimes==3)$ \8 }! j( n, L" B9 ]
                        {
7 z) e5 |( F' a2 `& F7 P+ ~  M: Y/ {                                MessageBox(NULL,"你不是合法用户!","登陆数据库错误",MB_OK);
5 C9 ]3 b" j) P                                ModalResult=mrAbort;
- h& s2 C+ F: k% c& H7 m2 g                                Close();0 V; J% f" ^  o2 S9 y  N
                        }: H0 Y; B  w' K$ \
                        else2 z. h! r" t$ ^2 n3 @+ n' A; k
                        {
! L3 I; b4 r4 x4 R1 I                                MessageBox(NULL,"用户名不存在,请从新输入","登陆数据库错误",MB_OK);
# x5 y" p. f, u1 b2 k6 A0 z                                UserEdit-&gt;Text="";
. A% `: o9 R; c8 H2 {5 {                                PasswordEdit-&gt;Text="";
8 F" K3 a: V( i+ Z* l                                UserEdit-&gt;SetFocus();+ r0 |( g0 F: G. `( C/ `* {
                                ModalResult=mrNone;* H) b/ {! y- [, D
                        }
  X4 e; N, c2 Q, K$ C9 i! }9 M# {) \                }</P>; `5 l1 j' H7 J1 U' w; `1 J4 ]7 r# K
& m6 D, z, w8 F7 m6 f
<>try
: j% _( N0 @6 f0 f                {</P>) ^3 \3 ~* X9 Y- b) Q! j1 |
<>                        DataMod-&gt;EduManagQuery-&gt;SQL-&gt;Add(queryString);5 g% y0 c: N+ D+ U9 f
                        DataMod-&gt;EduManagQuery-&gt;ExecSQL();
3 I% x5 p" L8 X0 [1 z, a                        DataMod-&gt;EduManagQuery-&gt;Active=true;</P>" _8 g# I6 M# l1 t" q/ z& j
<>                }
5 s) ?$ Y, E: R. h, R                catch(EDBEngineError &amp;E)' l& Q& n# C2 v6 D, u
                {
: B; J6 z) O5 O; H7 G' Y/ M& D2 `                        MessageBox(this,"不能查询数据库","错误",MB_OK);& t& k) v- j1 l- X% W
                        ModalResult=mrAbort;' B: P4 g( B1 }- E2 P1 a' a
                        return;</P>
! _4 x3 N; ^8 Z" z1 H5 ]1 Q, r<>
</P>
9 T) g/ `0 i3 `' V<>                }4 }$ P+ u' J5 ~6 R
(在一个表中查询用户名),我执行的是无论表中有没有的用户名,都抛出异常,而且程序不会执行红色的代码,为什么啊1 ]( J  S  V5 M. [
</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>6 b8 ^" ]( C6 S! _$ L) e) P
<>DataMod-&gt;EduManagQuery-&gt;ExecSQL();1 F6 P8 l3 B7 E8 s8 V# ^( n
DataMod-&gt;EduManagQuery-&gt;Active=true;</P>0 Y4 d$ P# b  G1 v0 f6 n- J  s
<>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>
% H) ~/ I6 Z+ E6 u: h6 B<>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P>; b* t7 s# Q/ |) k4 j- ?
<>DataMod-&gt;EduManagQuery-&gt;RecordCount;这句代码需要在数据集打开后才能执行,所以你这个时候就用DataMod-&gt;EduManagQuery-&gt;Active=true;</P>" L2 }( w4 Z* L
<>至于你的异常处理代码无法执行可能是你的catch里面设置的异常不对!一般的话可以用</P>0 C+ ?5 n* V" _7 o
<>catch(...)</P>
% I& j- y2 @$ p# ?. S! R6 c1 I, C<>这样可以捕捉所有的异常!</P>( v0 a, _  f# F6 L3 k8 v& g4 t% K
[此贴子已经被作者于2004-9-24 17:33:31编辑过]

作者: ice2000feng    时间: 2004-9-24 23:13
<DIV class=quote><B>! [) g/ e! m" c) R
<>还有你这两句代码不能同时用!</P>
7 k8 g1 h+ o* F) A2 r, l. C<>DataMod-&gt;EduManagQuery-&gt;ExecSQL();
$ S7 [5 U; A; Z( W; Y% |0 yDataMod-&gt;EduManagQuery-&gt;Active=true;</P>  Q" T, A! g' H4 w2 T
<>Active=true;的意思相当于Open();就是执行SQL语句并将结果表打开!</P>. g  Q& a( T4 Y* ~: y- g' w7 ?
<>ExecSQL();的意思是只执行SQL语句而不打开结果数据集!</P></B></DIV>3 \, O1 a' X" K8 |+ E" Z
<>我是初学者,不过我感觉你说的不对啊,ExecSQL()是先执行啊,然后才执行-&gt;Active=true;</P>
- y2 B% x2 L) u# e* Z9 S2 S" l<>而且我是看着书上做的,你下面说的catch(...){},我试了,它还是抛出一样的异常,</P>
+ s7 H+ X( T3 n( W4 X' l<>它说:“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