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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
4 x4 v* B: m7 H& Y, d- Z. T#pragma once. i/ \1 L, I( h6 v6 a& T, j, J
#include "iostream"     5 A+ B* u* W( p$ x" V# m
#include "string"     ) l7 [7 a# j2 d( d/ q
#include "vector"     4 u* A9 A  ~$ ]- `- C; E$ T) g
$ O7 \( a& e- u6 G6 g" Y) d
//添加对ADO的支持   / P# C4 K- c6 c4 O  [( q
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")   f: Z1 A1 `0 @1 A7 `4 n4 Q) e! i( t
#include <NXOpen\Session.hxx>$ k* b1 H2 P0 {7 _
4 G1 _. _; w7 Q; D5 X3 n
#include "uf.h"
% ~# J' p* k6 ^/ }: s( m#include "uf_ui.h"
1 _- l3 x7 o- S3 A8 x# `#include <NXOpen/UI.hxx>* V9 K$ n& O+ K4 }
#include <NXOpen/NXMessageBox.hxx>$ `$ j4 z  M. ~
#include <sstream>$ \+ f$ @8 F; D2 o& s
#include <NXOpen/ListingWindow.hxx>7 E" o$ c, R2 G7 l6 j# o: L
using namespace NXOpen;
) |8 I2 e  [0 w% `! {9 wusing namespace std;# d- s/ {2 o/ u" u& d* n1 I* X
class LinkSQL5 h0 l1 \- z9 U* _3 U' x5 w) _0 S3 |
{
. [6 ~$ d7 E' w! spublic:
' S& ]' b. z) _5 _        LinkSQL(void);  E) v2 ~6 a+ G; s( Q
        ~LinkSQL(void);3 E6 o8 \( L+ g4 `1 x0 Z- f
        void OpenSQL();) o9 k4 n5 M0 v1 F" b
        void ShowInformation();" I* `3 }3 t2 o  r% R
        void CloseSQL();! D2 g5 \) p* t6 t4 }7 N8 ]
private:7 Z1 _9 \4 n5 B7 `5 @7 p# h5 k/ [
        Session *theSession;
% d9 u3 J0 n* Y# P& @        UI *theUI;6 J) V6 x- ^: h! d' P) {/ }
        _ConnectionPtr pMyConnect;
& A- O# a2 Z3 V1 u9 i& O, v; I        _RecordsetPtr pRst; : {* r; w: E+ S
        stringstream ss;: k: V4 E0 [# w0 t/ f$ o
};
+ Z$ k$ F; t/ b' l  W
5 W* v. X, Y0 X: H. N3 m  R5 vLinkSQL:inkSQL(void)! ?( ~' r! V- [, S9 ?
{; a5 U, J3 j9 ?+ _6 p8 c
        CoInitialize(NULL); //初始化COM环境              * F9 M- v1 ]# u
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象    % K0 J# a) h, k& L1 p
        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  , C. d6 U, w5 {9 V; S; M
        theSession=Session::GetSession();
2 {% V* L* J( q. J2 Y4 d- {; M2 L        theUI=UI::GetUI();
: D# V) X: s- {4 X% f' g' j* a}: B- r4 ~( T6 f7 [0 C
5 @) O# ?5 B0 j( D/ m
6 h  H" w* W! v( T, g; K: h
LinkSQL::~LinkSQL(void)/ Y5 D" S1 s2 P& D3 u7 E4 F
{+ U, G7 \9 ~* q, Z+ ]1 e
}
( D: k" X+ _/ v' Kvoid LinkSQL::OpenSQL()% j6 z# B* ?- c8 E9 M' U5 V
{
& u) p( B% H8 g' t; m" U. X        try            
% i% a. c5 U7 j! z! ~8 _        {                ! b3 F7 d7 I+ B
        # o3 w* g2 i2 K: r
                /*打开数据库“SQLServer” */               , i3 e4 r3 K& T2 Z! d9 j) h6 _& N4 @
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  
9 V7 Y0 A5 o# v5 y                    : J2 F/ |) g8 N
        }   - x3 k  v  B/ x" l
        caTCh (_com_error &e)            
! n) S& D8 w+ s5 l        {                0 Y* e. _- L1 @/ P3 M& }7 s* P
                 
, H+ S/ ?+ \: R                ss<<e.ErrorMessage();     
6 D3 q' Q( d0 k                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
& Z# a& w! L: G5 P8 U6 X                ss.str("");5 Z3 `! V+ a, K$ Q
                           
/ f7 g. e1 m9 M2 b, H        }               r. @8 ?2 i' \5 b* B
                         " j8 c2 T- X. {+ k
}
0 \; O2 @; S: a7 S8 ^- M  I, Tvoid LinkSQL::CloseSQL()
# Q- n8 r; I0 G+ L3 _{& _* q: b0 H* H1 d3 c( p9 T
        try            
: l, U: O1 _# D7 Q' M* W$ B7 u2 P        {                 5 ]% |) ^( Z9 G5 ]

% m5 {0 Q# I5 r. G                pRst->Close();     //关闭记录集                  
) J8 c2 t3 H7 j3 V                pMyConnect->Close();//关闭数据库                  
1 _. Q+ {/ n% b                pRst.Release();//释放记录集对象指针                  ' f: J# N! \) G; `* ~. b/ S& U
                pMyConnect.Release();//释放连接对象指针   
' }( n0 r5 u4 x2 p" C6 ^" v        }  
# l0 G7 g9 o0 K6 G( l! h9 [) c' c9 p        catch(_com_error &e)            
1 \8 U3 J: J" @        {                 
5 w# {) A7 N* {- R( _5 |                ss<<e.ErrorMessage();     
1 l* c  ^1 \3 X/ \8 q                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
7 I) s1 y5 {7 O. s( M" `: v                ss.str("");          6 K0 @' Y+ b' x; v/ G6 I
        }                  
& n: x8 o, M! [- m! O3 h" {       
7 i$ e# i, ?# \, C0 V: @3 s        CoUninitialize(); //释放COM环境   
' r2 n5 x3 c) G) F: I}
3 s) R5 }* N! X4 gvoid LinkSQL::ShowInformation()3 ^. r' ~  O$ u/ M1 \
{9 ]  }( Q0 Q) `" k+ _. ^
: l0 W# S# y; \- u  m3 n
        ListingWindow *thwLW=theSession->ListingWindow();
# j* p6 ^! f3 Y7 }; S" Y; W        thwLW->Open();
- O8 Q) S% Z: C9 H5 }  Q* R4 U' ^
        try
! l: O+ D3 f$ n" l: ]        {
. u# t) g. h: y" f                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat      r, h: @, _& G. N6 z
        }1 @. O9 e) p* ^- w
        catch(_com_error &e)
7 T7 g0 M% K3 H0 ?' n% m5 _        {+ K! T+ P3 q- H+ }% o
       
4 ?# e8 k; d5 w                ss<<e.ErrorMessage();  F0 L5 E4 P0 f% T3 a4 _
                thwLW->WriteLine(ss.str());3 k9 S7 T. H- M  g: K
                ss.str("");
7 t, y! a& P2 ~' l+ P/ X. X                return;
  W8 h" R2 C" ]2 J2 J4 D- W4 H        }9 R- v' `4 x3 E% b5 y8 ^
}7 @' s6 c# T' g, y! v+ @, }! @
//执行文件
. Z. n) x# e4 L+ g3 k9 h        LinkSQL *theLinkSQL=new LinkSQL;$ x' R1 Q7 K4 a; m4 S
        theLinkSQL->OpenSQL();- m, O, U( @: m
        theLinkSQL->ShowInformation();; M2 }7 c6 v( G: g$ u& v9 ]* g
        theLinkSQL->CloseSQL();, C/ }- S: d/ W  Z
        delete theLinkSQL;
  \2 @- U% S2 K9 O7 h9 c# m  g6 D3 b0 E4 n2 `2 B1 F
哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了