PLM之家PLMHome-国产软件践行者

[求助] C++用ADO连接SQL数据库出错

[复制链接]

2014-10-17 08:11:57 2982 0

xiao2076 发表于 2014-10-17 08:11:57 |阅读模式

xiao2076 楼主

2014-10-17 08:11:57

请使用QQ关联注册PLM之家,学习更多关于内容,更多精彩原创视频供你学习!

您需要 登录 才可以下载或查看,没有账号?注册

x
//类文件
7 [: p2 \& D1 {7 O8 q#pragma once: g  h6 G" }+ t: t1 J
#include "iostream"     . C' C  P  j3 g' y. u
#include "string"     
7 L7 p6 t7 t- @7 u# x/ m; w% l#include "vector"     
# X# V& j. S9 t) B4 s0 q$ D
. H) O$ f  R9 Z' V) m$ v//添加对ADO的支持   
8 W' f  c, e- ?$ y0 Q5 `#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") / b$ ^  e8 P2 c9 ^( _( |* Z% |
#include <NXOpen\Session.hxx>
: ^% H6 P1 ?1 g' z& ?6 m
3 m& z' e1 D' ~3 j#include "uf.h") ]; n6 S  f1 H
#include "uf_ui.h"" V/ F( a. j* B3 d4 q
#include <NXOpen/UI.hxx>' Q4 v' O, ^" F2 R" O% T
#include <NXOpen/NXMessageBox.hxx>
! ~# u8 u& K+ S2 B& O0 L2 [; u- C#include <sstream>
' i, H3 A5 j. G  K" W#include <NXOpen/ListingWindow.hxx>
! W+ {# r) M. J. d- b% O1 Y% i. Cusing namespace NXOpen;$ D) X' k9 `" f6 U& s
using namespace std;$ w7 N5 Z. S' O) L& h1 R# f, a+ d
class LinkSQL. K8 ~) O. K0 n# q' j1 I
{
, h1 k0 c7 q' g6 D7 Xpublic:
( o  o( [1 E  @  R( T        LinkSQL(void);
( ]) j: ?+ f: m7 I        ~LinkSQL(void);
" |) K- t8 B& L$ n        void OpenSQL();
! L; u1 x4 E& N& M, E        void ShowInformation();6 C4 e' f; T# F7 q  q
        void CloseSQL();7 d. R0 e5 o$ k! ]* u, i
private:7 ]' q' p) ?' ?
        Session *theSession;( Z8 }/ g. t) S: R, S5 w: z
        UI *theUI;
6 E; C& u) j5 F) }        _ConnectionPtr pMyConnect;
2 U" o3 _( v* X0 P0 Y3 X        _RecordsetPtr pRst; 6 W' f. G: b9 X  F& q5 }
        stringstream ss;. V6 [/ [  ?4 q$ l8 t
};
, @5 O* |* t" i0 `( E" A- I
3 }" I7 }# q: g, V" F" ELinkSQL:inkSQL(void)
( A4 F) f$ P5 L3 Y/ z{0 J: J$ b, Z/ y
        CoInitialize(NULL); //初始化COM环境              % a9 ~4 T% U0 X. [( `
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象    8 r1 V5 d9 S; z# w# e
        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  + j2 g* |/ k9 u: Q# Z, n0 G, W/ m
        theSession=Session::GetSession();
. K$ [/ v% V; x; T1 A' _" W        theUI=UI::GetUI();
2 q: A: V3 k* C2 e}1 s& ~( Z; [. D$ }- g+ l' u, e
2 u5 k, W4 r/ y3 I3 ]3 L6 G4 Q2 X

2 N* D- \! }' \) qLinkSQL::~LinkSQL(void)( U* h" ^1 i: G: ^( A, F$ {
{! N& L+ ], K6 s# x) a0 u" a
}  }! n% Z+ @; }3 ?4 Q  ~
void LinkSQL::OpenSQL()1 N, g7 ]# K5 k
{
- _4 T- A( `8 D" v+ F9 N$ [        try            
& P% H/ E! ?! a! [8 D        {                0 p7 o. C* N  X, O! o( ^" t
       
' K; S5 b+ n/ y1 W  U& h1 V% B" t                /*打开数据库“SQLServer” */               2 n. F4 u$ x$ a: A
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  0 A8 y) S; S+ D  Z) K8 l* H
                    
" g# B; D; C. Y' F. O2 m6 O6 l        }   3 F2 Q' t8 ]3 X6 ]% O2 c+ ?
        caTCh (_com_error &e)             8 Q, I2 p. I# m  ?
        {                % t4 n- w8 \) S  C
                 , {# @+ y3 g0 ~1 e1 C% x8 t
                ss<<e.ErrorMessage();     ' o  q$ g& U* I/ ?. o- W
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());8 [# G1 K# H8 j' D8 ^# O
                ss.str("");& A" }8 X+ ?3 y
                           
9 c# e8 ]* ]. S5 u* r5 p; B- G        }             ; l8 {$ P/ a6 o8 m
                         
/ p) j1 x3 z( D( b# P}
6 a* E. E! u( R3 D1 Fvoid LinkSQL::CloseSQL()- A- V( {/ k- ]( \
{
  v) t' |+ A% l        try            
: }) H' y+ D1 Z& v, e! @1 J% x        {                 
" N  h6 o9 l: O3 Q9 F0 ?$ ?; _7 N! K! x* u
                pRst->Close();     //关闭记录集                  9 [. ]$ Q8 x, g! B0 Q* a- [3 w
                pMyConnect->Close();//关闭数据库                  / c  I4 A7 A+ C) s0 e! H
                pRst.Release();//释放记录集对象指针                  " |! g  F! q4 b' c# J0 D
                pMyConnect.Release();//释放连接对象指针   . n# t7 N4 N/ `  y, _
        }  
6 Z, y) `& n! A' b5 H2 b        catch(_com_error &e)               u6 W+ N! D2 \2 L8 {6 f5 L- y
        {                 9 D) r2 I+ }/ I* C8 k
                ss<<e.ErrorMessage();     
, l8 a  O" K0 q7 }# K" q- b* |                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
+ O0 |$ E0 V" b3 j                ss.str("");          9 v1 u3 N  L, L% w5 N* x
        }                  
7 x% \- t* q  c8 W, Q- h        : P% \$ D% ]  e$ r) z: M: M
        CoUninitialize(); //释放COM环境   
& U! B! n+ ^% `+ x9 W7 u7 _3 w}) t/ H/ Y& B2 P$ T+ Q
void LinkSQL::ShowInformation()
0 t9 ]6 T: `" p6 {{
9 n1 }* u7 f4 w* C$ z" [9 r( h9 p5 Q$ _5 G
        ListingWindow *thwLW=theSession->ListingWindow();
( x. z' w! g4 |0 H$ L$ l        thwLW->Open();
+ ^/ J4 R% M1 G
' ]) U0 [" `, S3 c+ x4 T; r6 {# Q' ]; g        try
) B3 ]( {: s' p6 T  G$ @        {
, c1 t9 q& ^1 {$ K$ C2 J  V                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat   
' h* Q0 X1 L$ Y) z        }. \) j  K3 I/ C% b6 M! c6 r
        catch(_com_error &e)! \6 m: e8 s/ o2 o% ?0 d
        {: M$ q/ t/ b0 L) ?9 b( V0 @
        , c/ V) O4 @/ C) F, C" h* W# z
                ss<<e.ErrorMessage();
9 Q$ O  x- a. N8 q* w                thwLW->WriteLine(ss.str());/ \8 |- ]( P. a" f2 S- [  Y, z
                ss.str("");3 G" P5 E6 m4 S  D3 @1 {0 W
                return;
% p5 [. T; F) c4 y) ^9 s        }
' [; M; ^- O/ W  t! n+ Z}
' ?4 f& \5 c6 s' A//执行文件$ ^( x+ g8 Q7 W2 ~/ U7 @( x
        LinkSQL *theLinkSQL=new LinkSQL;6 c, m2 ^* P( B4 h
        theLinkSQL->OpenSQL();
3 r# ~) E* v5 D3 n' Y        theLinkSQL->ShowInformation();6 }' H2 Z# _5 N* H& X& |* O4 K
        theLinkSQL->CloseSQL();
2 \+ ?4 v, }5 f- X* U        delete theLinkSQL;8 X( M* S, g) |4 b

! P$ x( C! P, h3 A哪个地方出错了,在控制台程序的时候没问题,在UG中就会出错
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 www.diantuankj.com/ doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了