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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件( w! b. X% x3 y
#pragma once* P) ~7 z: W1 L
#include "iostream"     
( Z: j* J- u, y$ r$ C#include "string"     
1 E* U& s' t- I) t1 s, I#include "vector"     
. N8 M) H6 k, i: `, v& Y2 Y- Y7 Z' S8 A* P
//添加对ADO的支持   
$ {* i0 R2 e. a#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
4 f5 M3 m$ R0 [; ~% G; a2 A6 Y8 v#include <NXOpen\Session.hxx>% |( U- |' a; o/ }. I. ]* g0 J
* y: Q- z' i- V' z* b' I
#include "uf.h"
* V, ~4 I# e" E" M5 v* v! O#include "uf_ui.h"' x: `; d6 e1 _5 w: v& ^
#include <NXOpen/UI.hxx>
" J+ Y; I" o0 d% O$ q1 f0 x#include <NXOpen/NXMessageBox.hxx>8 r3 H0 X6 B: s- v$ D9 C
#include <sstream>
4 k$ `& Z, B6 _) A# x#include <NXOpen/ListingWindow.hxx>
+ G  b9 x6 M/ N# v" r  lusing namespace NXOpen;/ f9 ?5 d3 A" J+ U$ m
using namespace std;
  n7 u7 P) s! ?/ f  i9 {class LinkSQL
' o) T' i* I1 o: W2 B! L{
* y. }) X' l9 U0 M: y2 U$ l3 Spublic:
: O5 F3 I' Q8 q1 K- I        LinkSQL(void);% [% t0 M! d0 Z5 Q, N
        ~LinkSQL(void);% l* h5 W7 S9 Z' g$ ~5 _
        void OpenSQL();
9 r, j# z4 G3 j, R; @/ q        void ShowInformation();) b: }  t+ h" ^. a
        void CloseSQL();- j+ p$ u/ v1 y5 O" M1 W
private:4 R6 Z& I/ i9 F/ p1 P
        Session *theSession;9 c* A6 w, r$ h8 Z$ W- l7 k
        UI *theUI;
% _$ G$ n1 G( Z. l, p        _ConnectionPtr pMyConnect;
, k( e  _/ R* }9 A- S        _RecordsetPtr pRst; ( d# u, E" h- g+ _$ w
        stringstream ss;
# s0 \, y/ ^/ U5 w8 ^& e};; k6 a! k( e8 P0 d8 J

) m# `8 r& N9 U% {0 O6 NLinkSQL:inkSQL(void)
% S, I/ D- W+ b1 X{
7 X! v# U6 u# W% H+ P        CoInitialize(NULL); //初始化COM环境              
' [5 l" ]& l; x        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象    & g( U) @  y6 n, K1 C9 c# T
        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  
# k0 F0 C# e1 u  N4 b( k3 \        theSession=Session::GetSession();
& L- D8 K  m" s  Y% c% `* @        theUI=UI::GetUI();; Y  j0 L( \) G$ t8 m
}4 ], x" S+ P7 C' X+ q+ o4 R9 `
2 S. v' F' F  @9 y* v" G
3 Y  X. _6 |9 J" ^& b& S0 S" G
LinkSQL::~LinkSQL(void)! I5 @0 k8 h) O- _# }- c
{
) |8 E$ W0 r! `) c9 i}
5 T  {- C! L, s2 j7 ~# Y$ }; lvoid LinkSQL::OpenSQL()
" X  `$ P4 O. P{
; r# o* H8 I+ G3 w        try             * S6 N$ W* W7 s) p! |2 `
        {                ! I  L( H" f6 f' i) m) Z
        2 [) S0 r" t3 S: a9 F, W
                /*打开数据库“SQLServer” */               1 r/ I9 G- p$ a- [, K
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  ; a0 \+ K' J* ^" r3 \" K( |
                      x. d0 \, I; w5 p; i. B
        }   
; a6 y; ]3 S, ?% N        caTCh (_com_error &e)             7 N+ ]1 n# I$ ?6 H* R
        {               
- r) J9 ?! A; A+ x- U                 1 g% X0 e& w. H( u( d
                ss<<e.ErrorMessage();     
. X- r4 E' u/ }$ |* j$ L$ D                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());2 z! j4 _4 S+ w3 N/ l% S
                ss.str("");
: N. ]/ G# M0 }! V  C: w                           
7 i% h3 u+ I, K1 v3 {! v8 Z- c        }            
- P2 N8 I; r1 d6 j                         
9 @% S* ?9 c6 O  f& _}1 J) g& O1 s; |+ ], W# i
void LinkSQL::CloseSQL()
; T3 ]& k" s$ |+ l9 z" ~# o{
9 ^* t) N; K  J4 Z( [/ V        try            
- _# \" H/ s% m/ o        {                 & z: c% q5 u) ]+ {* G
, O+ x  f8 k; D( ]
                pRst->Close();     //关闭记录集                  
  y) c4 u8 x7 b                pMyConnect->Close();//关闭数据库                  
& d0 k6 x: ^' k                pRst.Release();//释放记录集对象指针                  
8 Z0 i7 d9 }% M, @* \+ s. y, v                pMyConnect.Release();//释放连接对象指针   
; u$ {% ?- ^) m7 {, _        }  
; E9 |1 J1 C. H6 h& L# g% b" ~, H, u$ X        catch(_com_error &e)            
  k! g" z8 B8 k3 g6 m. `! I5 x3 M        {                 
2 I: H. A. R$ Y: S( G( j                ss<<e.ErrorMessage();     . Q8 L' d7 W, `+ D, e9 e+ M% s
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
, V. @4 ]) {" n% e                ss.str("");         
( O6 c+ {/ a; v        }                  
+ {) `- t$ P# z3 L) o! Y       
  \7 \% v/ ~/ Z# a        CoUninitialize(); //释放COM环境     `8 X( v+ b3 N2 H/ k2 w
}
6 p8 D! d$ Y! r1 e+ t6 ]6 e- Nvoid LinkSQL::ShowInformation()
  `" @: O, _. V& d1 d{9 E9 |* l3 {1 S  F* i  i) w

( [0 @6 A% p# a        ListingWindow *thwLW=theSession->ListingWindow();
7 ^/ R: ?! \$ G/ V/ f+ A, I        thwLW->Open();
' O7 Y' l% G/ E# c, M  C2 Y/ T/ ~7 w) t
        try- w5 B$ K1 }& l0 h9 ~+ R  h* ~
        {+ \/ r, l8 X* R
                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    - S3 K  u' I" x( n2 P$ L
        }
* \: d) i9 \0 i! _" O3 b        catch(_com_error &e)) @* ?; p9 k9 `% m6 t
        {
: ?; F2 c1 d4 p6 U# a# \       
$ [* P8 Q* q2 v                ss<<e.ErrorMessage();* m$ M) K1 p* X
                thwLW->WriteLine(ss.str());
% x4 I: Y: q, w( F                ss.str("");) F7 l- O. c; a+ b  w$ N
                return;
' _# t+ k7 c- h        }
) z2 |/ j+ S/ b' ~1 W& U}& a3 j( h$ E4 U3 b; V
//执行文件# V% m; ?0 t4 s- m; q4 K5 y
        LinkSQL *theLinkSQL=new LinkSQL;* I1 Q: v9 h+ X3 S) O3 O
        theLinkSQL->OpenSQL();4 ?- y) W9 G. r, f5 f% i
        theLinkSQL->ShowInformation();" e; e$ B, M" V! F, a
        theLinkSQL->CloseSQL();
% T2 X9 K, A( c- h6 J; z" J9 p0 y        delete theLinkSQL;
0 v3 m: \8 p8 N1 Y$ C3 f
/ v1 W% ?' @8 z- x( r  ?4 p哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了