找回密码
 注册
搜索
查看: 3617|回复: 0

[收藏]一个数据库操作例子

[复制链接]
发表于 2004-1-28 23:41:39 | 显示全部楼层 |阅读模式
int CObserverLaneDB::InsertTollSplitWasteBook()
% F! E' g: V3 |8 J5 ^{
8 [1 t% ]  j3 g4 N  v* O        _ConnectionPtr pLocalConnectPtr;! g2 Q: j9 {# s' i9 R
        _RecordsetPtr  pRstPtrTollRate;
' Q) f, |7 [1 S% c7 _! x' I: \        _RecordsetPtr  pRstPtrSplitWastebook;1 C% L/ T' f# f' u. ?6 E

8 J/ i; ]/ U" _! |  Z3 `        char pcSQL[300];, W2 y  ]6 _1 w  E$ R- @& D6 G* H
        sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Entry_Station_ID = %ld and Flag_Station1 = %ld and Flag_Station2 = %ld and Exit_Station_ID = %ld and Vehicle_Class = %ld and Vehicle_Case = %ld ",* V1 _& s. M* {0 `: J+ ]7 @+ l
                g_ModelEntryInfo.m_PassCard.nEntryStationID,+ @5 X3 {9 Y/ i7 k: ^+ y
                g_ModelEntryInfo.m_PassCard.nFlagStation1,
3 h2 B+ R& T2 L% N% q                g_ModelEntryInfo.m_PassCard.nFlagStation2,
5 A0 l0 Q7 h2 R+ |                g_ModelNodeInfo.m_nStationID,
/ Y3 g2 @. R- S" R$ S8 A  k' k                g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,9 r  g4 ~6 R! g, U* o2 Y5 S4 M
                g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase  i4 P( n- W1 e" ]& I
                );
7 n, U( Z2 K, ?% b0 u! P( O7 H3 E6 H8 }0 i/ T5 Y+ ]) W" y
        try
/ p" c, a  F. y* p        {
1 B. |: x, D; w                pLocalConnectPtr.CreateInstance(__uuidof(Connection));
8 `2 v+ O! E: r                pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
. e* Y6 b6 R- T* Q, x               
+ d, c' g: o1 z4 r2 c( _0 i                pRstPtrTollRate.CreateInstance(__uuidof(Recordset));
. W1 s# r  n0 j- `. P* ?: M" {, D                pRstPtrTollRate->Open(pcSQL,
0 P# u" ~0 H7 D) U& h8 ^! `& y/ j! d                        pLocalConnectPtr.GetInterfacePtr(),7 @* A9 O; h  W( J, y& V
                        adOpenStatic,7 Q& w  S2 K& {2 k: U% @) r
                        adLockPessimistic,8 f. n7 G4 E9 n; q
                        adCmdText);2 x& v3 A- d3 A3 v! q  j" K  N# ?
                pRstPtrSplitWastebook.CreateInstance(__uuidof(Recordset));
# R$ E" q1 V, b2 x                pRstPtrSplitWastebook->Open(_variant_t("TBL_SPLIT_WASTEBOOK_CURRENT"),7 r& `/ d4 _4 B* V% t0 N
                        pLocalConnectPtr.GetInterfacePtr(),
1 h6 W$ p0 _( f* ?+ ~                        adOpenUnspecified,
/ W2 v* ~( B  s" x1 w7 b                        adLockPessimistic,# v( ?$ n7 P2 u* P
                        adCmdTable);
2 N# l- k, G: Q' B: S/ _5 z6 v9 Q$ \9 k
                pRstPtrTollRate->MoveFirst();$ B4 v, `) ?9 U
                for(int i = 0;i<pRstPtrTollRate->RecordCount;i++)6 `  _6 K) ^8 u, h$ Q
                {
6 ^( y! W, q% W* R- U                        pRstPtrSplitWastebook->AddNew();
" w! S( N2 \2 I% G+ E( u. M                        pRstPtrSplitWastebook->Fields->Item["NET_ID"]->Value= _variant_t((long)g_ModelNodeInfo.m_nNetID);
5 p" x& o, \6 R6 N9 _                        , [3 D2 I" g2 O2 q
                        pRstPtrSplitWastebook->Fields->Item["STATION_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nStationID);
0 S% ]$ K6 J5 \: B                        : ^1 c* `3 q+ a% v" Z
                        pRstPtrSplitWastebook->Fields->Item["NODE_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nNodeID);. T, k4 x4 T8 @+ m1 m  X
                        * a' i3 E) G7 r3 @. B( B; R3 Y
                        pRstPtrSplitWastebook->Fields->Item["WASTE_NO"]->Value=_variant_t((long)m_nTableTollWasteNO);
5 G" |1 v3 ^, Z3 o6 }1 J/ ?. j                       
9 L, [8 `: N; D- H( D4 w, J3 c                        COleDateTime CreationTime((time_t)g_ModelTollInfo.m_TollWasteBook.m_nCreationTime);
% @6 W6 f& j! Y/ V! [# F                        pRstPtrSplitWastebook->Fields->Item["SPLIT_TIME"]->Value=(DATE)CreationTime;
3 C1 a# o" Q5 m( L7 ^                        : ]1 y% ~8 s) E6 H% @6 n* n2 s; Y
                        pRstPtrSplitWastebook->Fields->Item["WORK_DATE"]->Value=(DATE)g_ModelOperatorInfo.m_oletmWorkDate;
, K% C2 o2 S- c  a) j* I                       
9 F7 L& d, W  \9 r' e0 P                        pRstPtrSplitWastebook->Fields->Item["SPLIT_NUMBER"]->Value=pRstPtrTollRate->Fields->Item["SPLIT_NUMBER"]->Value;7 J8 [( E  o' n/ k! a2 F
                        ! ?# w4 ^6 W& S7 @/ }+ g/ M2 S$ D8 c2 S
                        pRstPtrSplitWastebook->Fields->Item["SPLIT_SEQUENCE"]->Value=pRstPtrTollRate->Fields->Item["SPLIT_SEQUENCE"]->Value;1 D  v9 n. c9 V9 K) C# t
                       
, u) v+ i9 F& e) I                        pRstPtrSplitWastebook->Fields->Item["OUT_OWNER_ID"]->Value=_variant_t((long)g_ModelNodeInfo.m_nOwnerID);
1 t: x! [. i! t2 J5 V8 r! ]" U                        / _% B$ T  e  ?5 q( K5 x2 g. T
                        pRstPtrSplitWastebook->Fields->Item["OWNER_ID"]->Value=pRstPtrTollRate->Fields->Item["OWNER_ID"]->Value;( R/ m/ Z! b/ H
                        : n+ A  ^+ m% p7 A
                        float fTollReceivable = g_ModelTollInfo.m_TollWasteBook.m_fTollReceivable;5 z4 T, k; E1 p& I4 T% w
                        float fOwnerToll = pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value;
% X+ m3 Y9 K  _- u' q- }                        float fTollMoney = pRstPtrTollRate->Fields->Item["Toll_Money"]->Value;
, [# _5 |; ]  Y0 V/ U2 N' b                        pRstPtrSplitWastebook->Fields->Item["OWNER_TOLL"]->Value= fTollReceivable * fOwnerToll / fTollMoney;
# a5 X* |! X# R6 R                        1 U5 r, s, m6 v7 M6 F
                        pRstPtrSplitWastebook->Update();
" s! V% d) k+ R) I  ]4 B8 x  S+ K                       
( z1 q5 p: ^# `. G                        m_nTableSplitTollWasteNOCount++;
+ G8 x# g0 U/ x  P! w; _) Y! |                        pRstPtrTollRate->MoveNext();4 e1 i  [7 u1 H, q
                }                8 d4 H( s" v- y, L
                pRstPtrSplitWastebook->Close();
- T2 j: G  o1 f& L  y                pRstPtrTollRate->Close();
  a5 x  X( Q6 }3 i$ T                pLocalConnectPtr->Close();
% f4 n, b0 }$ [5 ?8 G/ R                m_nStatus = DB_OK;
3 _! {! V1 a  Z- n8 J/ C# n9 x  O, U& C                return(m_nStatus);        + _2 D0 [! t( r: ^  c
        }6 Y0 W7 l' P3 R3 f
        catch(_com_error e)( y  ]* w# M) y/ w6 _" l- [
        {, \9 Y$ D5 u5 C- l+ M" z6 M
                g_ModelPrompt.strPrompt.Format("&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&sup2;&Ugrave;×÷&acute;í&Icirc;ó&pound;&ordm;%s&pound;&not;%s\n&Ccedil;&euml;&Oacute;&euml;&Iuml;&micro;&Iacute;&sup3;&sup1;&Uuml;&Agrave;í&Ocirc;±&Aacute;&ordf;&Iuml;&micro;&pound;&iexcl;",e.ErrorMessage(),e.Description());
4 B) o8 o& R- [/ a                g_ModelPrompt.Notify();       
. l$ L2 q9 E2 z0 M' F! D                m_nStatus = DB_ERROR;
4 }4 W9 S9 g! t, S4 Q: ?                return(m_nStatus);        . \. ?$ |/ ]3 w* A0 j* Y* I% Z
        }2 z( Y" {4 m2 u$ i: i
}
2 J7 M8 i# I; |9 s% Z4 ]" c
. E  [* F- T7 ~, w7 A# R) X9 d/ Q. l# z& b. X8 v  p

) ~1 h( S# @  @+ }( ^6 yfloat CObserverLaneDB::GetTollRate()
: f: z2 M8 _# M- u) @. x{
# S. g! H: r7 k+ X3 }* F  @7 p; i! M7 b+ W3 f9 ~
        _ConnectionPtr pLocalConnectPtr;; e2 f! `' c) a, d3 I" W2 F
        _RecordsetPtr  pRstPtrTollRate;
  O  D  y2 F) J$ w6 ~. t5 T        _RecordsetPtr  pRstPtrOrganInfo;, s5 _4 w; B5 u4 z; `+ i9 L
3 O4 }( A6 r1 Q- b" L9 h6 ^
        float fToll = -1;3 f9 e7 k3 }: Q) H
        char pcSQL[300];- S* t" Z* I; R+ M. c
        int  nSplitCount = 0;  l$ C& t& L7 `; Z6 v+ R: ~" g  w
        switch(g_ModelNodeInfo.m_nNodeType)
" `9 @8 E: o, C. [  i4 j; b        {
) [9 ~9 X, J( {% v% e        case NODE_TYPE_ENTRY:( x! d- A, y% H$ N5 M+ _2 O0 a
                return(0);5 P; r! E5 y. n' [' I& l
                break;6 ~$ K% N* j) w& \7 N0 ~
        case NODE_TYPE_EXIT:* J" A6 c$ c% |* A: R; p) Z
        case NODE_TYPE_MAIN_LANE:) M, j- Q& M1 o: b
                switch(g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase); t0 o  n6 ^: k) t8 W0 K3 h
                {
* q# u" \* L. B7 J0 h9 B; Q1 M                case VEHICLE_CASE_URGENT:
  Z. w. Y  P/ W1 S& o) W8 T. u, s                case VEHICLE_CASE_ILLEGAL:
! {2 A$ p: w' f3 Q                case VEHICLE_CASE_OFFDUTY_ILLEGAL:9 U  {1 _. e, p: U9 `; h/ r8 C
                case VEHICLE_CASE_MOTORCADE:- `. e& g1 M; o2 {0 T
                case VEHICLE_CASE_COMMUTATION_TICKET:. }  ~' Z5 q  n# s" g- ~
                case VEHICLE_CASE_ETC:6 y. M3 i8 k$ e! X
                case VEHICLE_CASE_BAD_CARD:$ x6 T/ Q7 ]! s1 C9 {0 k  H
                case VEHICLE_CASE_NO_CARD:
& H% G( e4 y, Q: P* I& p+ i) ^                        sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Vehicle_Class = %ld and Vehicle_Case = %ld ",
) L+ C0 ]* i) c! X' s- b9 ?                                g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,, o) Y! o+ D1 M
                                g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);
' S8 W0 J2 Y! D1 s( a                        break;
, [! J, m- s! D5 A                default:; H, \& j4 \, Q8 o
                        sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Entry_Station_ID = %ld and Flag_Station1 = %ld and Flag_Station2 = %ld and Exit_Station_ID = %ld and Vehicle_Class = %ld and Vehicle_Case = %ld ",1 r! `" A, P1 ?5 s! P- N
                                g_ModelEntryInfo.m_PassCard.nEntryStationID,
+ c) C( q3 L4 ?! p8 y/ n! k                                g_ModelEntryInfo.m_PassCard.nFlagStation1,4 `/ G1 a0 _0 G0 V- w/ M
                                g_ModelEntryInfo.m_PassCard.nFlagStation2,( J+ X& ~1 n+ d" |/ M
                                g_ModelNodeInfo.m_nStationID,
: J" |/ D: Y; D: k3 W                                g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass,$ {8 O+ ~, B7 F/ D9 c7 }
                                g_ModelTollInfo.m_TollWasteBook.m_nVehicleCase);$ {0 h5 y6 b6 \1 v- _
                        break;
4 ?3 g4 K8 I0 A: q: _6 v; ~* `                }
, `" G: X( E! \7 G' M               
- k# N  {, H8 e6 n                try7 p( T% J8 {2 I4 P: R2 I7 i; a0 t
                {- H5 v% Y* y4 G4 N" z- l+ u; ~# d
                        pLocalConnectPtr.CreateInstance(__uuidof(Connection));* A) a; B% y+ b5 N# {1 ~( j0 C) |. C
                        pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
0 c4 q1 C9 E9 D2 F: U) g                        9 a# g( i- E6 @
                        pRstPtrTollRate.CreateInstance(__uuidof(Recordset));# }% `$ Z+ k4 Q; e7 ?; Y
                        pRstPtrTollRate->Open(pcSQL,* X2 X/ N  \  I- Q- E6 D$ ^+ \/ g
                                pLocalConnectPtr.GetInterfacePtr(),
* Q; h2 N7 ?4 t% \7 i7 y9 K. }                                adOpenStatic,
) W% b8 q- P+ B1 ?                                adLockPessimistic,, t, r1 `4 n1 \$ [) ^/ R
                                adCmdText);2 t, J+ y+ y% F6 C$ u7 x' I
                        if(pRstPtrTollRate->RecordCount > 0)) Y: v. H) Y2 `. S$ c8 c  m
                        {
2 M$ M! ?. }$ Z* v- n7 g                                fToll = pRstPtrTollRate->Fields->Item["TOLL_MONEY"]->Value;1 F: B( \) f4 [2 x3 e; S
                                if(pRstPtrTollRate->RecordCount > 1 && pRstPtrTollRate->RecordCount < 5 )
2 N8 T4 i3 H" ?# ~                                {
# Y4 _4 ^5 Y5 k: V9 h                                        memset(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,0,sizeof(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo));
: K* y( O: L) [; K! m                                        pRstPtrTollRate->MoveFirst();
8 u" U( F6 ^8 x! z; e& k                                        for(int i = 0;i<pRstPtrTollRate->RecordCount;i++)
/ ]. e+ b8 ^1 V: D/ z# P  x6 U3 C                                        {
8 Z' `0 w, m% W# J0 \                                                sprintf(pcSQL,"Select * from TBL_ORGANINFO where MAINOWNER_ID = %ld",(long)pRstPtrTollRate->Fields->Item["OWNER_ID"]->Value);
' {( l, _0 S8 X+ I) Q                                                pRstPtrOrganInfo.CreateInstance(__uuidof(Recordset));
5 V4 }! {7 f; K) Q# x- N8 }6 L                                                pRstPtrOrganInfo->Open(pcSQL,* C' L5 L& k+ c# b8 S/ E
                                                        pLocalConnectPtr.GetInterfacePtr(),
$ i) O7 N; X& I7 e9 Q' Z  X$ S                                                        adOpenStatic,1 J+ T! b8 e! L' O$ u
                                                        adLockPessimistic,
  W- g; D* ^; n6 m( N' D                                                        adCmdText);7 m! n$ t- z& ^) T
                                                nSplitCount++;
% ~: v: L1 i+ x' C0 d5 J                                                char pcBuf[10];
9 {! w' o( \* u* `! C                                                if(0 == nSplitCount%3)3 a2 S/ A! `* u
                                                {
: `* G& m0 k3 k7 F# O3 X" T1 c                                                        sprintf(pcBuf," : %.2f \n",(float)pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value);" o! n9 z1 ~  C- H1 @
                                                }else" E  u% k2 x: Y1 V7 ]
                                                {( Z, e. n0 o* I
                                                        sprintf(pcBuf," : %.2f ",(float)pRstPtrTollRate->Fields->Item["OWNER_TOLL"]->Value);
% J% @. ^% b- V  b( f0 @1 y) B                                                }) o) m3 b+ F9 {2 x4 f7 r  c' ]+ z4 i
                                                strncat(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,(LPCSTR)(_bstr_t)(pRstPtrOrganInfo->Fields->Item["ORGAN_NAME"]->Value),4);5 u; d3 Q5 \( e7 f" K
                                                strcat(g_ModelDeviceInfo.m_Printer.m_pcSplitInfo,pcBuf);) p: f' ^* \2 J+ B' ?6 q3 @" D
                                                pRstPtrOrganInfo->Close();- H  S7 d% {6 S- `8 u1 y
                                                pRstPtrTollRate->MoveNext();
, `5 F1 x5 O1 Y8 d# P1 L6 @                                        }
9 [8 t! q* J3 q8 k# b0 `                                }
$ ]1 |' w: w7 e6 J/ j& o# P5 o                               
) N7 J# P/ C. `* {                        }else fToll = -1;; X/ p  u/ K9 a
                        ' V( y2 `# {; [" I1 b
                        pRstPtrTollRate->Close();# ?" {8 q0 t$ K1 T5 }$ ?' q  k" Q
                        pLocalConnectPtr->Close();/ ~& V- w( ~# Z0 d" `- C4 \
                        m_nStatus = DB_OK;
0 O1 A& @  u. [                        return(fToll);
0 L! [7 X& q! c; z" _. \9 @% `3 z                }- g1 @' [4 Z# M5 B6 p
                catch(_com_error e); m; G, w6 A. `$ |
                {
+ S2 F8 {' w5 Q                        g_ModelPrompt.strPrompt.Format("&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&sup2;&Ugrave;×÷&acute;í&Icirc;ó&pound;&ordm;%s&pound;&not;%s\n&Ccedil;&euml;&Oacute;&euml;&Iuml;&micro;&Iacute;&sup3;&sup1;&Uuml;&Agrave;í&Ocirc;±&Aacute;&ordf;&Iuml;&micro;&pound;&iexcl;",e.ErrorMessage(),e.Description());2 _8 f$ Q1 I$ b1 K3 i& ]3 e% O% m
                        g_ModelPrompt.Notify();        " r9 J7 s( _4 G6 W! f  x
                        m_nStatus = DB_ERROR;
/ R3 B+ S5 {6 A  s; k                        return(fToll);        1 |0 v# m5 i% t' Y, ^" e
                }5 ?3 n/ b6 V( s, M' E( M
                ! a4 S4 R! Y" ]: ]1 V
                break;: Z% K( F5 I# S3 }& }! Q9 i9 s
        case NODE_TYPE_OPEN:
) W. V  c- a* l: C7 \                sprintf(pcSQL,"Select * from TBL_TOLL_RATE where Vehicle_Class = %ld",7 P6 j* U4 `0 W3 q- k
                        g_ModelTollInfo.m_TollWasteBook.m_nVehicleClass
& c2 i! Y% D. m8 `% N+ H                        );
8 a7 i$ h% J. R0 E* _; ?- L) z                try4 c2 F! S0 x% f3 f+ j
                {
9 h1 k; X- `& x0 r/ }% r- c                        pLocalConnectPtr.CreateInstance(__uuidof(Connection));( F' H' C! s! K7 L: o+ Q
                        pLocalConnectPtr->Open(m_pcConnection,"","",adConnectUnspecified);
+ @. A. X  @% ^- s7 }                        7 d+ i/ _" r# ]; f2 I! u
                        pRstPtrTollRate.CreateInstance(__uuidof(Recordset));% i7 s3 U/ \: A% a
                        pRstPtrTollRate->Open(pcSQL,) E8 @  ^, G" r
                                pLocalConnectPtr.GetInterfacePtr(),
+ L6 u  X' m7 ]2 r                                adOpenStatic,
9 o& F( K  d. }% Y8 n2 h8 o) ~                                adLockPessimistic," s$ _; j3 `' z  \4 M% A6 K2 F3 @
                                adCmdText);
/ O' Z: u: L! [1 W                        if(pRstPtrTollRate->RecordCount > 0)2 R5 _; r$ i% {, k
                        {/ Y- V1 g% j) Q* D, d$ r: }
                                fToll = pRstPtrTollRate->Fields->Item["TOLL_MONEY"]->Value;' {4 H# I' [1 d6 ?% f
                        }else fToll = -1;
- j5 h1 D" O3 o* @$ c3 g" N                        ' Z- \7 {' {& `4 `0 g! R3 u' G
                        pRstPtrTollRate->Close();7 v! p6 ]. C4 \( E* w) R/ B
                        pLocalConnectPtr->Close();
; J2 w1 `6 Y- |1 L+ n                        m_nStatus = DB_OK;" z9 P9 F! P3 K0 B3 D' L. V
                        return(fToll);1 z' `/ X' w3 p' k
                }
9 Q; `2 v  q4 [' y" ~                catch(_com_error e). R( i/ L% b6 P2 [1 v, ]8 {' v
                {
( O  ]1 X! H/ U5 M) c+ X: M- h% {/ R                        g_ModelPrompt.strPrompt.Format("&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&sup2;&Ugrave;×÷&acute;í&Icirc;ó&pound;&ordm;%s&pound;&not;%s\n&Ccedil;&euml;&Oacute;&euml;&Iuml;&micro;&Iacute;&sup3;&sup1;&Uuml;&Agrave;í&Ocirc;±&Aacute;&ordf;&Iuml;&micro;&pound;&iexcl;",e.ErrorMessage(),e.Description());* j" U& v0 o' t/ n9 ?9 {
                        g_ModelPrompt.Notify();       
2 r1 d4 T! |! X* _* V                        m_nStatus = DB_ERROR;1 U) f6 i& O' X; @% N* P7 c% P) O
                        return(fToll);        8 i! R2 d# X6 U# J/ Q0 N; D! P
                }, h% ]( z. e! O7 r7 W7 @$ f; \  P
                break;
4 t) D+ @" a/ s& g        default:: t8 z+ e+ X2 z( o
                m_nStatus = DB_ERROR;
, S' g) R1 d4 ?/ b                break;# o) b" ~  O4 C
        }
: J0 h' }& k, y        return(fToll);       
  T) q  S, }' d' ]4 z}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|宁德市腾云网络科技有限公司 ( 闽ICP备2022007940号-5|闽公网安备 35092202000206号 )

GMT+8, 2025-6-19 12:39 , Processed in 0.015716 second(s), 15 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表