PLM之家PLMHome-工业软件与AI结合践行者

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
0 @( I' ~1 p. ~2 E0 M8 ^#pragma once  i7 v7 A. |' `& c; q
#include "iostream"     3 l5 `; Q2 M" n9 f" F: v! z
#include "string"     9 f) [+ m' b. ^+ }! U/ S2 k
#include "vector"     3 X; s1 P9 s! Z7 F% @* P& p8 t
9 X5 U; p" ]5 K$ y
//添加对ADO的支持   
" h6 Z2 P5 T2 u+ A#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
8 f' ?+ Y5 f$ G9 L2 y( e. c$ H#include <NXOpen\Session.hxx>4 D$ t. x6 V$ J, i! e, i; R
+ Q- O8 |: [3 `  D: G! M
#include "uf.h"
4 K2 Y  C2 e5 f! w5 H$ h- g4 J9 n#include "uf_ui.h"
" w# ^* \  B! v; ~#include <NXOpen/UI.hxx>: {6 w) ^& h8 N# Y
#include <NXOpen/NXMessageBox.hxx>
) K( Q! u. d8 a9 }3 a  j#include <sstream>
9 h- n+ U* J# r' r! r& z: W#include <NXOpen/ListingWindow.hxx>
" @9 @8 Q6 ]1 L' susing namespace NXOpen;- q2 m4 N2 `, a5 G2 b6 \4 Z- Y
using namespace std;! Z# Z  K8 A! V2 |
class LinkSQL% O; o# W, x( K3 c
{
6 Z( t4 t  }# E4 xpublic:" g7 i% `; y2 T, D6 N+ r  j9 f) ]
        LinkSQL(void);4 i# b, V5 J( a5 [
        ~LinkSQL(void);% c3 M/ p  J( h' k! A# j( l
        void OpenSQL();
6 k( Z  P' T! G        void ShowInformation();5 Y) G# A7 u" L- S( o
        void CloseSQL();
: ~1 n, r& I" {private:# r+ z: ^$ b/ W# C( f+ w5 ^- G8 }
        Session *theSession;0 g; V: O% o5 ?
        UI *theUI;
+ A4 B( G  `0 c* u' ]3 H1 E0 {        _ConnectionPtr pMyConnect;' c' e. j! a. L/ C
        _RecordsetPtr pRst;
% j7 o* V" h6 M5 w        stringstream ss;3 U6 E' [- P- ?- S! X1 ~( Q
};& L) K- Z/ I' s% C$ C/ X0 U/ P

6 G. ^9 w- t4 Y" w) J3 ZLinkSQL:inkSQL(void)) d9 w1 D$ O7 q" s" p' t+ a( b
{$ ?8 K0 U" g3 v' ^  ^
        CoInitialize(NULL); //初始化COM环境              2 Z+ O0 i4 R) n8 K9 }+ ?  K1 A
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
" y$ @! z/ n8 W. N: [, W        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  
# Q, l0 D% k6 |* N, I% ^0 f        theSession=Session::GetSession();
$ A7 z9 U3 @  ]- L/ }        theUI=UI::GetUI();
4 z$ T' D1 @* n. z}
& E1 }( l; r" y" `  o* e8 T1 A$ ]6 n0 U0 a7 G2 j! w) j

/ I$ ~4 Q/ Y: m4 X( J9 ~  bLinkSQL::~LinkSQL(void)
+ W0 I$ ?+ m/ l* B+ L{1 s# S6 y# ?% W9 n
}2 r  k. E; E" B2 P
void LinkSQL::OpenSQL()7 q* o& |" T" s; ]8 S% P
{
) j" I0 g0 e; m- L        try            
1 V+ a' U; e$ `* X+ M6 [* e        {               
: l$ q: ]/ \3 Z: Z0 O$ {3 ]        8 q8 F9 \+ S& q' F8 n, y
                /*打开数据库“SQLServer” */               % Q5 M7 B) ?$ I( W* t
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  
! b& a3 O+ i6 k                    ( l4 W  y2 R  E" E! b. c
        }   
  p2 U0 }  `' z! x$ K: q# T        caTCh (_com_error &e)             ' |7 ^! d; E& x( \4 x) v
        {                & H/ B6 S2 R) h. s
                 
/ L9 x7 ^4 t% g4 l8 w; R* f                ss<<e.ErrorMessage();     
4 _  a6 v8 F9 z! C' m4 M- y6 V- D                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());- ~. p6 Z4 l4 ?. L5 L
                ss.str("");
3 M1 L0 o) I% d$ T$ v9 N! M' k  {                            , y' u0 P+ D) x# C& E
        }             3 x( Z+ _. R9 p) \  }; G( E
                         2 s. I; f6 H0 n% D
}
" o8 T! B0 a% g2 Fvoid LinkSQL::CloseSQL()
# N7 l8 S4 O) H: @{
. `# n) {1 I+ T5 T1 A& A, g        try            
. f, X5 |& {. p, |5 S3 c2 ?        {                 ; N% M* h- S8 l& l
% W9 @8 J5 ~; J7 N
                pRst->Close();     //关闭记录集                  
8 b  ^6 p6 e! Q8 l                pMyConnect->Close();//关闭数据库                  
" B- A, g1 c4 O0 }8 w6 s                pRst.Release();//释放记录集对象指针                  7 M( X2 ?7 J2 f+ ?( n
                pMyConnect.Release();//释放连接对象指针   
0 T: c2 ^# X( H        }  . ?& O; g/ t  N* f( l
        catch(_com_error &e)             ) a7 g2 S! k& O7 m
        {                 * [6 \& |* l4 J9 f
                ss<<e.ErrorMessage();     
+ A$ {9 c( U3 e# K& u. [: x                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());2 N/ r5 Q3 v' P- G& `; I8 X7 E
                ss.str("");         
- ~* O. I$ v6 |        }                  
- L. @6 D6 u1 T" J2 I       
5 J0 v* o7 X+ {! {$ h8 N1 t        CoUninitialize(); //释放COM环境   
. U9 R! E$ N$ U6 g, y6 w}
3 X4 f( o) B$ f* M% Mvoid LinkSQL::ShowInformation()! D1 F, a9 K+ e7 l
{
' @! G$ N8 W, k* x( `: G7 H! o% f, @/ O6 V- t  L- e& G4 ?0 y0 S+ k
        ListingWindow *thwLW=theSession->ListingWindow();' @& w1 @! u5 @) G
        thwLW->Open();! t1 s! U6 w# o# `& z

7 i2 u( \6 `) R% S; B! y        try
5 X7 j2 O' e: ~        {
/ w$ \# {1 G+ d' ~; Z                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    + l0 U3 {6 y2 V5 X' H
        }
. X% u! p$ C# Z+ x3 P        catch(_com_error &e)# J8 x- z( n4 L- \
        {( n+ {3 d5 e, q" D( S
        1 F# L* ^' Z% P* l: T. ]2 {9 \
                ss<<e.ErrorMessage();
9 [9 R: ~- C+ v3 P) y                thwLW->WriteLine(ss.str());2 w9 a+ @3 t/ r# o' _# n
                ss.str("");, Y( m) [- r) C" N0 l4 E: K3 {. p
                return;) j/ a' M5 f3 {% R# o2 j: g% [- k2 {
        }; t2 w$ G* f& g+ T* ?9 w5 F
}
; F' z! r; l6 R* @! E1 f& N& n. T* \//执行文件
  |$ `% N& v8 ?9 p2 }        LinkSQL *theLinkSQL=new LinkSQL;# I; y; H6 Q) B* S0 q
        theLinkSQL->OpenSQL();
! K  Q/ C5 Z1 T. n( I, i. H        theLinkSQL->ShowInformation();: Q+ y% R' f; m7 g
        theLinkSQL->CloseSQL();. ]  p  Y- J8 t( ~
        delete theLinkSQL;
6 X! l0 d6 }# q) t
/ F  k, x- h% k. v, i5 \哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了