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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
6 m+ G, R) r, ]! [1 W#pragma once$ G5 t- Q# E& c9 {% c
#include "iostream"     
0 p7 c4 `$ @9 S" w( C5 }0 O$ M7 W#include "string"     ' W( H  m& ~. l- u) f3 z! U
#include "vector"     
! `( h9 C* a. s. c" F" j* N: w1 t# F2 o: {! G. ~
//添加对ADO的支持   
1 D4 V$ n4 L, X+ |" X7 u#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
  T  Z6 O- `6 t$ X4 Z#include <NXOpen\Session.hxx>
  b9 o! Y8 \4 v% ]8 T0 d; g2 L- h) O2 }: z
#include "uf.h"/ N( K6 v9 h& i; M8 R
#include "uf_ui.h"
+ U9 n( v0 ]! y& ?#include <NXOpen/UI.hxx>+ j5 i' ~! \& {  f
#include <NXOpen/NXMessageBox.hxx>
& R+ _" O  c! m, @: g#include <sstream>
6 L8 C8 i. V* c5 r! b3 \0 A0 d#include <NXOpen/ListingWindow.hxx>
3 A5 v- z' [4 v& h: S5 }) kusing namespace NXOpen;* L9 a& {5 Z- G" `* I2 G
using namespace std;
  A4 ~" x9 v/ Kclass LinkSQL
3 H/ [* L; b! f' h% @+ _{0 G& @' O3 _% w8 b4 z* b
public:$ f0 \5 V- b* [
        LinkSQL(void);8 w2 k/ M9 i+ s1 M4 ^/ @) C9 T% a
        ~LinkSQL(void);. {* F( y( B- p7 [7 I, I
        void OpenSQL();, r) k1 T$ K3 A5 L0 G
        void ShowInformation();* |3 J6 x5 ]2 L! J# S4 r. J
        void CloseSQL();
. Y4 G; a# o3 a8 `9 L9 sprivate:
  X+ Q% e, \- A5 b        Session *theSession;
2 c  o8 f' ~2 E5 @$ E& h0 g! `        UI *theUI;
+ v! C5 ]% E  B4 _( p% m- {% T8 q! g        _ConnectionPtr pMyConnect;
8 l- R( n+ ]! e! G! _6 R/ p        _RecordsetPtr pRst; 1 l) \3 ?' i2 u% ^0 q) z
        stringstream ss;3 r5 e7 ]" r. D; A5 f7 B0 F
};  {- b0 [( j9 e8 V0 M
7 O9 i% }8 Y+ ]
LinkSQL:inkSQL(void)0 p- p/ H1 W8 r' b  g  G5 D% m
{
- A. a/ y2 J- q5 t* S        CoInitialize(NULL); //初始化COM环境              
$ ]* I- I% R4 g9 x        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
6 j. y% N6 |& K" `9 `6 N* x7 f        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  
) B* `' s! D6 F" j# q( h# y7 Y% c        theSession=Session::GetSession();
, K" M" X: I! A& q9 H        theUI=UI::GetUI();. f: E- [$ l: p5 e5 h
}0 Q! J/ J0 D2 }; m0 D  S* V! Q$ {  K
: p; P$ t5 B% l6 E5 I7 d4 ^1 b: f2 I

+ X* l* ^/ Q! e. SLinkSQL::~LinkSQL(void)1 ~+ m" f+ |+ ~$ m, |, Y6 w
{: _" P) X; O& O2 \3 O% [% P) C
}
! a$ l. d  n" m! q. Evoid LinkSQL::OpenSQL()
! u; Q/ E2 B4 @5 E9 H{
% L. k2 g* w, z1 s        try            
* Z3 R1 J, u4 V5 @7 H        {                8 H' N/ W6 b5 [7 _% X
        ' |' D' v* `' n+ G7 t
                /*打开数据库“SQLServer” */               
( x) [" f% K; D) _. W  Q                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  , [0 J4 ~, u$ i9 c
                    - Q  M! J7 G# r+ |
        }   
8 o3 ]+ t3 a1 s9 v6 Y( K  E/ c        caTCh (_com_error &e)            
. P1 v1 m9 n- e. r2 K        {               
$ _2 ~2 H% L8 m2 a7 _                 7 B$ A. W" z. I
                ss<<e.ErrorMessage();     
+ _5 f. L3 |' @! ]9 ^2 j                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());2 H8 `6 U, |' P( p6 ^
                ss.str("");0 D  j7 Q; k5 R, P
                            ) W; a  F& |, K3 a$ U
        }             7 I* D3 ^, p! J5 Y
                         
+ b% M3 C) `+ x4 B! s1 O3 \}5 y0 x$ b* r" x1 W# }4 K2 V
void LinkSQL::CloseSQL(). ?# W- k+ ^+ o: q$ `9 `4 A
{7 f6 H+ f' O# L: ]- @* V/ [* _
        try            
& }) I" w* G' ?- w& u& Y4 |        {                 
- v: B" u# L- N+ f! d; @3 ]6 {6 _0 p) t
+ {* o7 A/ M* J$ o                pRst->Close();     //关闭记录集                  
  Z# k) a2 `1 j7 r# e) a+ v; S/ }                pMyConnect->Close();//关闭数据库                  ' v1 N1 \+ I' S* A$ f
                pRst.Release();//释放记录集对象指针                  
$ z- S! p# ~9 x( q                pMyConnect.Release();//释放连接对象指针   / z' ~* F1 Q- J
        }  0 b  h% X2 W: V+ d6 M& a
        catch(_com_error &e)            
, Z) n6 v: T) ~% I9 e+ f% U        {                 
( R1 {5 a7 S2 P                ss<<e.ErrorMessage();     ' J: i4 w- m, Y- H1 j; `
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
+ |/ P, w. J# [8 c. e2 Z$ W                ss.str("");          1 Q' A2 I, ~; x9 ?. y
        }                  
( ^3 L; Q0 k9 u9 X       
) O4 x4 [' U! M, B        CoUninitialize(); //释放COM环境   
  G+ N7 l9 R; k7 f0 {}; E2 x2 }2 g5 A; ?
void LinkSQL::ShowInformation()
; h  N; T# H4 B{4 K8 G% G# g1 x% h0 A8 K$ g6 w

" z( \) N' }2 w- a) q, i        ListingWindow *thwLW=theSession->ListingWindow();9 C" @% P' T+ ?1 `$ A
        thwLW->Open();- R; i, ^* t  B7 k" B/ U0 Q5 C

$ L9 x: Q. D6 x! L        try
' m/ }9 N: [. c        {
6 w; U& i& S  \+ @! N3 I+ U4 J8 a                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat   
) s9 B, U. T  c" _  l/ ^& j        }
: q0 M' o4 |- G  G        catch(_com_error &e)% l5 t4 n9 v. J6 D
        {
% ?, |: q- D3 @. e3 S3 H" q       
. i. K+ z  \. p" ]                ss<<e.ErrorMessage();
6 t3 r0 E- _3 T) O$ P% m0 @; U                thwLW->WriteLine(ss.str());- @! C0 c7 V  D& W( c) P2 u
                ss.str("");
! v4 G( B# [, Z& e& Q4 B                return;
: R9 i6 b3 b$ ]5 F$ F$ ]9 S8 L4 g        }/ K5 C( u9 D5 B, ~: c
}4 ]% ]! x1 a- v0 G7 z, k7 G
//执行文件0 D4 }% `; E/ M3 X" V5 d
        LinkSQL *theLinkSQL=new LinkSQL;
3 X! h+ Z& d& D2 Q. o  `1 R% c) z        theLinkSQL->OpenSQL();7 O4 E& j6 _" r: {+ D4 n; O8 W# j
        theLinkSQL->ShowInformation();2 H. |5 b- i$ Z  n: @4 M
        theLinkSQL->CloseSQL();% P, `, @2 E6 L+ H* [6 Y9 ?
        delete theLinkSQL;. J# Z) J; k0 N$ h/ ~
1 U# Q$ x$ W, O1 _# 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二次开发专题模块培训报名开始啦

    我知道了