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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
  }3 M! ~- H2 I  P) j* c) R/ X1 V#pragma once
; {4 T2 {7 e7 y" V: v#include "iostream"     
" f9 }. L1 [) h, S: T( ?#include "string"     
1 R& F4 e' z" C4 o#include "vector"     4 A% a+ M$ c5 W& \3 W! c" @

( [% ]: K6 L" b2 H" S/ n0 e//添加对ADO的支持   
& k+ Y0 K. u2 i: L; M( N#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
  U9 E0 i; e# K#include <NXOpen\Session.hxx>
' o6 z! n, |; ]4 y0 Z2 b0 z* c1 t+ I. @: k3 N
#include "uf.h"
" d/ V) R$ k& s2 h  {- y6 E% c1 p#include "uf_ui.h"
& K/ y) M. g: D, {#include <NXOpen/UI.hxx>
9 v5 ~2 J2 Y: B( \4 G: k; p#include <NXOpen/NXMessageBox.hxx>1 F8 z7 ~9 B# U5 j
#include <sstream>
4 _9 H9 G! F" a. M* X4 x2 c#include <NXOpen/ListingWindow.hxx>7 L; X! j  v  Z- _3 K
using namespace NXOpen;- ?. [; V/ D/ X/ i; j4 i
using namespace std;
# {% P$ E' u- h/ Xclass LinkSQL+ b8 j( F0 m# O& H4 C3 w
{& f  ]( x7 C0 B7 |
public:$ e5 `6 p$ o6 b' M, q3 Z6 [: c
        LinkSQL(void);. B+ Z$ @8 ]7 E+ e
        ~LinkSQL(void);5 k; v  x% v7 b+ Z
        void OpenSQL();( J# w  [% f1 V1 h
        void ShowInformation();& F; U8 h! r; R7 ?; q& Q6 {' U
        void CloseSQL();- _- [+ z/ [4 e
private:* n& L6 |0 X; ~5 I( b0 l+ v: N" C. @
        Session *theSession;
, v: e9 G# d; \* c4 Y        UI *theUI;
) {' Z+ u6 w' n$ J4 y: u( s        _ConnectionPtr pMyConnect;
: r* Y# i' `: U/ C7 d        _RecordsetPtr pRst; / x2 v3 k( n, ^1 g. Q1 a1 T( V
        stringstream ss;' H, Y4 n- z$ s& ?) g( ]# d7 |/ [
};
8 G, u1 Q5 Y) }& h2 z( t6 R
' S$ \3 h. x/ L* {. g6 Y- D1 a5 yLinkSQL:inkSQL(void)
( g$ {; }5 F7 L) f1 Y{
/ R: M2 P4 |9 y6 \* r        CoInitialize(NULL); //初始化COM环境              
' U5 Z6 @% d. g  w        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象    7 J- M# x9 ]+ R" P  X
        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  ) `3 ]% J: C; m- L
        theSession=Session::GetSession();, G- b- {! O' c1 P& }6 a" K5 V( y
        theUI=UI::GetUI();4 q- {! _% z% q
}+ y1 n  u" Z+ Q, W8 j5 Y

2 i1 S% d$ g( q4 p5 p" o! f2 v+ r. S# w6 f* x
LinkSQL::~LinkSQL(void)
) ?0 j$ W5 z& T7 k' o{) S" |6 Q# X, r& L9 c2 ^7 }4 H3 ^
}& e# \  x( C. c, J! p* k" w8 _8 H& C
void LinkSQL::OpenSQL()8 F! e7 v# i( B- \; F5 @6 c$ ]* c
{
: c9 \9 @8 p; q! e        try            
  y. G( ^/ k  A( k4 B        {                ) V- H. o+ s" f9 H* x+ w
       
! e9 Z) @% o7 k& ^                /*打开数据库“SQLServer” */               
0 n5 F8 o  W& C0 d' W. D; V                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  6 ~6 y' k0 i) R6 D8 L& g+ F6 E9 q; }$ q. E
                    5 f( B1 T$ d7 R! d
        }   
( d* F: i' b- _- z/ G. A        caTCh (_com_error &e)            
4 A& m) h4 b3 t; `! `% M) Y        {               
6 D" _0 F/ y( W% D                 * S/ D  r) g. E, c$ X8 T, }
                ss<<e.ErrorMessage();     
7 N8 c. Q: \) ~5 w; b2 Y                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());0 W2 k' ]: e: ~# Z* X
                ss.str("");8 Z7 F" c1 C' o" M, T) f. S
                            : n1 U  T# \1 K& V% X" ]
        }            
$ A5 ^' a7 S0 q/ X7 b                         / D- ]' L7 q. U4 g+ E
}8 W# O! q# i; R( }/ _
void LinkSQL::CloseSQL()! _4 ?4 F; d/ T. e2 i
{# g& P% @. \/ o7 ]
        try            
$ j% Y6 n6 ]5 J1 S2 @4 v; H        {                 
% K6 @& J. d1 e5 G2 @' R$ a1 B2 l9 W7 R" C5 ?6 I
                pRst->Close();     //关闭记录集                  
  R/ a/ p0 p4 \- q4 u                pMyConnect->Close();//关闭数据库                  
2 T+ o/ z% N9 M  Q8 T* w2 g                pRst.Release();//释放记录集对象指针                  1 f! c; ?, v) O" w' }
                pMyConnect.Release();//释放连接对象指针   
, H/ ?; M) q  c0 x+ P        }  ) U! Q# H! s: d" b4 d
        catch(_com_error &e)            
5 k. d# d% z7 M; x        {                 
5 ^  M1 U% Y" `- F9 j                ss<<e.ErrorMessage();     
, P/ ?0 _* q+ m! g0 F! w# a" Z                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
; I9 L; O4 l8 ~) i) b) c4 m                ss.str("");         
( d, r4 a! M' P0 l. {# H! P        }                  
# B& W* I" z5 L4 d' p       
' R  o: O8 l# q  A/ d        CoUninitialize(); //释放COM环境   1 o' E1 ^- N* q1 }9 R* o
}
# Z$ f+ o: d$ z" o, f. lvoid LinkSQL::ShowInformation()& Z1 A9 m1 f  }, e) j
{& Y- d' t) @0 Z; x9 j( Q
. k4 b# L5 X: b  z
        ListingWindow *thwLW=theSession->ListingWindow();# d4 T2 w5 V  p6 T
        thwLW->Open();# G$ S9 p5 R  Z# Z9 [) X
# q5 ]" x! z$ P
        try; k. t  d# Q5 t5 g% K
        {
( S  M1 Y3 c, X  R1 j                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    9 u/ i- x$ P9 t/ w& R
        }  r; x0 r# D. `% f
        catch(_com_error &e)
; G4 ^2 M1 E+ w9 e! J/ X0 ]" X9 r, l        {: r. W7 m) e8 Y0 ~, G
        ) t' c+ F8 R+ W4 a
                ss<<e.ErrorMessage();
/ u* x$ l: Q3 y) _6 [2 ?% b, V                thwLW->WriteLine(ss.str());
) Z( c* ]7 ^+ B" R8 f+ e                ss.str("");1 I. s5 F9 h: w6 O' Z
                return;: P( \# y! X( A1 W" h
        }  q! s. m7 R! i5 o0 w
}
7 w4 r5 N: r( z% Y//执行文件% j& ^- W# ~- e0 @' ?
        LinkSQL *theLinkSQL=new LinkSQL;
2 ?9 Y+ ]; P5 i5 x. o7 _2 x        theLinkSQL->OpenSQL();; I7 H. L8 D" ^: w7 B! y% E
        theLinkSQL->ShowInformation();+ i& O: y3 n& _) z+ e
        theLinkSQL->CloseSQL();
, y& s3 q( i  U2 J$ K- U5 `+ K        delete theLinkSQL;: u* c, x  F& V! ?0 T

( f, x5 p2 a" O4 P) U哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了