PLM之家PLMHome-工业软件践行者

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
( v7 y) _# ?( R$ z6 h( N#pragma once: v; h3 Y6 u" U% p
#include "iostream"     2 s5 G3 r! S. ]2 k& |$ b
#include "string"     , X1 Z, L+ o; w) g- {; K/ w
#include "vector"     
4 E. ?. G2 L  u; T6 R$ L! _
1 l" k- |5 `0 Y; C, b9 E//添加对ADO的支持   , J  X. Q; \. i- Q4 b( q
#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")   S% B6 v$ u0 `7 u" m' D+ a
#include <NXOpen\Session.hxx>* V; {" c% x/ _: P/ @* {" e1 l$ i+ N

& `: J# ^2 n7 ~#include "uf.h"
* ~# m* G* v; c#include "uf_ui.h"
. K3 q5 r& h7 y+ s) E! p#include <NXOpen/UI.hxx>; k0 _6 A7 D: C" W
#include <NXOpen/NXMessageBox.hxx>: N% i% }4 r; M  {
#include <sstream>
  ~  g# h! z( N5 `( h#include <NXOpen/ListingWindow.hxx>5 r9 H9 U" @: g8 d5 f! u4 @/ v
using namespace NXOpen;
: w2 F, ~) U  Q( X8 Jusing namespace std;5 G0 Z$ b1 h4 Q# C. W* i
class LinkSQL
; Z( M0 f* ?" m6 z{
8 o+ U1 {1 ], V4 S3 W1 Mpublic:
; c- \& Y9 g' ?/ J1 k4 Y        LinkSQL(void);+ A+ D' w6 l  ^8 J2 v
        ~LinkSQL(void);: O: ~/ J* o1 I! ?% z2 W" y1 r/ g
        void OpenSQL();7 S! a; f3 h0 K( R6 H& Q2 Z
        void ShowInformation();5 o. j8 @& G1 ?! O% x
        void CloseSQL();
( w0 Z8 ?; q/ W) n- Tprivate:
! h0 }: n2 g. c: ]5 ~' E# Z! `* H        Session *theSession;% C+ I5 L) [! j5 m
        UI *theUI;
3 k& ^7 q0 m; t# _: }        _ConnectionPtr pMyConnect;
  |1 M, l/ @( |" r) |        _RecordsetPtr pRst;
% {" d& d* G& I$ |        stringstream ss;
0 j) v/ Q0 T+ z0 _) b};$ `' H8 V- Q9 m' L" n

+ B7 i8 b+ j) I! c' s1 BLinkSQL:inkSQL(void)
) [/ H3 y* i' A9 s7 v% p{
. T: Q4 I* w4 j9 _& f  X/ T( V        CoInitialize(NULL); //初始化COM环境              
) V5 d' R6 G! u( A  u4 l! Y        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
/ x- [" Q" _* P" C        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  7 b! U( c' Y3 D$ a0 C# m
        theSession=Session::GetSession();4 j3 Y; r5 b8 f
        theUI=UI::GetUI();
5 ^4 a) z  O" y  k}) X. l" @! O9 J2 D
4 h) U. Y+ C  |  ]# t
2 V, G* G1 ?1 y' z
LinkSQL::~LinkSQL(void)
$ a* _% Y2 W4 H0 T* o, }( G{  x/ ~- g0 O/ w
}5 Z" \: y, A; P# e0 O9 H9 Z8 y
void LinkSQL::OpenSQL()0 f) n8 D+ e# f5 ~* |1 g
{
6 G: I' }& w( {" b& h! d% K- k        try             1 \2 J3 i: ?1 f2 f
        {                ) `( k+ x! l( i9 w( R+ z
       
# l8 [. o( H4 r                /*打开数据库“SQLServer” */               
6 J) ~, L5 i9 @! t                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  : G7 S& _8 }( p( ]3 a4 V
                    
( x- G2 w" |+ Q! M+ j5 j9 B. B( [        }   
; {6 I% u# y) ?        caTCh (_com_error &e)             0 d; ~. w. y" U  V2 S
        {                % c5 H2 w  n+ V' N! C
                 
4 `2 y. _  @( C' O  V! j) z9 w  z                ss<<e.ErrorMessage();     " M( i0 ^3 a4 Z* n; f" j
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());' u0 ~8 n2 J8 Z0 T# A# j5 Q
                ss.str("");
+ A7 D) q+ l/ p$ I                            ; J' K5 S# j- y7 A' }4 r" i0 G
        }            
' x  Z% d9 X- u# C  j1 R; E( k                         3 Y) Y* c; h. f* K6 _
}
+ g7 N9 d! ?7 {1 h6 b  c) n6 Pvoid LinkSQL::CloseSQL()- e8 K. b( U1 |0 y3 H  L
{
( K( g$ V9 V8 m" F8 F0 _$ n        try            
5 b9 u4 H$ e  ^1 V        {                 
# b3 {" {4 B. V( ^9 `
1 L' a3 r; m1 K6 Y1 Y                pRst->Close();     //关闭记录集                  
$ [$ g, R- t. J% v                pMyConnect->Close();//关闭数据库                  2 S* b- x7 P8 J/ ~/ f
                pRst.Release();//释放记录集对象指针                  ! |' g8 K  W) x; X: ], r
                pMyConnect.Release();//释放连接对象指针   
9 [( u# ?3 i* S        }  
$ c0 \! D% ?& q4 k% U        catch(_com_error &e)            
. B$ D' ?) L& {/ c1 O        {                 . }% a* O8 b* f- l* e) Y
                ss<<e.ErrorMessage();     
) y) o: H0 r' z/ x* r( _  ?& h                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
* N$ u4 K! R" R" K% E* x% q7 S                ss.str("");         
6 G) Y3 O7 z# m* e        }                   & |9 `, M2 Q6 O, ?- j* ~+ ]
        2 W8 S! H* N7 T" Z( [0 x
        CoUninitialize(); //释放COM环境   
- ]6 _. `4 T) z2 ^" A- {  J" ]}" V" r+ d/ L& F
void LinkSQL::ShowInformation()
' d; E4 }8 n3 @5 K3 V' C5 J, L1 @{! o# e2 @: X% a8 o& E( {

% I/ f+ \2 G/ _$ ^        ListingWindow *thwLW=theSession->ListingWindow();
3 I% q: T& D8 z" e7 i+ Z        thwLW->Open();& {5 V/ ^4 p/ C

1 U. b: v. w$ c6 n; A  h        try+ R, {( Z3 C8 y9 s5 p! T
        {
: V& A6 R9 G% p4 k! J8 e4 q                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    8 s5 D5 ^8 w/ L( X
        }4 j& p( u3 ~1 o- F9 O
        catch(_com_error &e)
5 `8 ?8 `1 s4 E% {9 ]. l        {
0 D6 n6 `. q) f* M( r        + _! c- \/ _. {6 Z
                ss<<e.ErrorMessage();
2 a" M+ D6 L( H# m                thwLW->WriteLine(ss.str());
1 m' D7 }* j' w9 K                ss.str("");
3 z9 m# i) w+ t5 E                return;) E/ U0 k6 e. u7 A5 o
        }. V. R6 }3 L" F+ v! q. f) G/ K; U
}9 x1 E$ d  o+ D  o. D
//执行文件
7 M3 F- n) m0 q! L8 b& P/ _& B+ ?& u/ L1 t        LinkSQL *theLinkSQL=new LinkSQL;
: o% @+ p0 J/ W* E5 i# \/ C        theLinkSQL->OpenSQL();+ s8 [( j' n' m7 M5 s
        theLinkSQL->ShowInformation();( d2 \0 B2 M2 D! n  i
        theLinkSQL->CloseSQL();
6 X+ y" _4 D8 Z7 x        delete theLinkSQL;5 |" ~0 }7 @1 G' Y1 ]. B

3 ~: G9 c4 m* E  Q1 N1 c哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了