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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件
* g! F4 E* s7 f8 Z#pragma once0 |! [) l6 W8 H' Q  R4 |+ W
#include "iostream"     
# m, d7 i) z% ^  O# ?#include "string"     
: O" P3 @& B& V/ D% Y% R: N$ j7 a#include "vector"     - m5 B1 I8 y6 r* b

2 q4 a4 L6 r0 k: i//添加对ADO的支持   
. f8 Q3 n1 d) n$ D#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
. r' ^# P+ \$ ]9 g) n- A' `) p. R#include <NXOpen\Session.hxx>
2 n$ K2 l( Z% s1 ^! B8 T2 m, d- _. |( `! x) X2 y0 \
#include "uf.h"/ n$ H% m: t" j1 Z* l; M( X4 q
#include "uf_ui.h"9 s. V, e0 L/ H0 ]- a4 n
#include <NXOpen/UI.hxx>
% C. ]( b( X8 l; Y#include <NXOpen/NXMessageBox.hxx>
- U: ]6 O9 ^, @8 a#include <sstream>3 _  X% |5 w" U4 t/ b: D# Q
#include <NXOpen/ListingWindow.hxx>
$ S4 r$ Q- O7 Nusing namespace NXOpen;( g. z, w* {" |6 j' z& i' f
using namespace std;+ y. ?2 d, d4 m) j% ]
class LinkSQL
6 u. j) T4 J" [- p{
0 |. A! _( ~) h/ b" j! e' Epublic:* @# B1 M1 ~8 @/ D
        LinkSQL(void);
: z5 {5 T# d, k/ B/ P  b: i        ~LinkSQL(void);' b5 u: M4 U+ T3 T1 m9 G4 D7 p  X/ K& U3 V
        void OpenSQL();
! ?  D' e' p, F9 `& [        void ShowInformation();
! w! M3 B' C0 _5 A' }        void CloseSQL();
- V* E2 }3 G2 r6 pprivate:
1 O# d2 \3 q3 B# q( l9 z        Session *theSession;, r+ ~4 {8 L3 e
        UI *theUI;
1 u3 p: A9 |8 b, ~        _ConnectionPtr pMyConnect;
% T* @. @3 I- C0 @        _RecordsetPtr pRst; : M; o  w, i' E, B# ^6 z! e
        stringstream ss;! z( V! x) H' \. s: |2 e
};' D/ R3 c( f) U+ N, Z' n

) l4 K2 _/ Q, ELinkSQL:inkSQL(void)+ J; N' F# C% G
{
2 z( H' _2 S5 ^' g3 q2 I        CoInitialize(NULL); //初始化COM环境              & d( \* o% a! }5 i
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象    + I1 h. n( H+ a" q) J! a
        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  
( \# N% X. c" M; {. o- ~( ^        theSession=Session::GetSession();
5 R2 h( o5 ^1 ~; j" v0 `, `        theUI=UI::GetUI();
5 v- V  ^" _* J  u8 C}7 r9 x' o% y$ ^* z2 V
0 y5 b0 [% @1 ~/ g* p/ O" |
/ S/ j& g9 V/ N9 ^- S6 M0 m: s
LinkSQL::~LinkSQL(void)7 x+ F8 q! J5 B5 X5 e
{
/ A; r' a7 u/ l$ c}
: h: m9 j( a  G' D( t) ]( W& uvoid LinkSQL::OpenSQL()5 i2 f# M8 |; z& D
{$ N# m+ \- l$ X' E* S8 W
        try             $ \$ O5 |4 ~0 r7 i
        {               
7 G# ^+ ~# c9 r1 s5 g* Q8 j       
" y3 O  C2 U4 B! t( ?# |2 m2 @9 `) u                /*打开数据库“SQLServer” */               & q, J5 R  X* Y5 r$ L
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  
4 d; g. M, F/ d/ s                    2 [. B+ j% c3 {: E' ]% e/ i* E
        }   5 A4 ]8 }& h! u$ {% C4 u/ s+ v
        caTCh (_com_error &e)            
6 S) G- z+ q9 x  x        {                , T  l' S* k6 V- j$ r2 @- f
                 " `) G& W2 E: |% j2 W$ B
                ss<<e.ErrorMessage();     
- H' `" B- j$ y% h7 v" H2 _0 w                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
- J3 A+ w% q- m: B                ss.str("");5 k& }/ c+ Q1 K5 V; _( ^: y9 A/ C
                           
& j% @$ x( p# ?: t3 F& K, t        }             # }* [3 b2 }) b1 A
                         
( ?0 {0 j% T% ~}7 X0 {% [  {  b$ t! Y% h
void LinkSQL::CloseSQL()
1 c  L  ?0 K9 E* n( q{
; J9 \) i4 A) E2 G        try            
4 O4 f' Q! n1 {0 R- W        {                 
3 t5 C0 S5 f) d/ W$ C. u  K, Y
7 I) [+ b; r) W0 d3 E                pRst->Close();     //关闭记录集                  ( O/ g' w1 U' o. ?
                pMyConnect->Close();//关闭数据库                  
9 r0 P5 p$ e+ v+ L                pRst.Release();//释放记录集对象指针                  
) N& p# W' Y& i; s4 v                pMyConnect.Release();//释放连接对象指针   
4 e' p# U" q# N8 A1 A        }  / _4 X' e& v6 _/ e$ J# h2 q* n( V/ \
        catch(_com_error &e)             $ |( V* ^: |) q
        {                 
# l- A) l0 v: @  @* T5 ?9 v4 M                ss<<e.ErrorMessage();     
  ~7 y1 Q0 y2 _2 g1 K+ [                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
7 h; k& S( l8 i5 g9 Q. m0 ^& Q7 {/ I                ss.str("");          + f' y4 u' k9 |7 {
        }                   & t) ]& Z* e. D( W
       
# a; u2 t. u! n+ y2 W        CoUninitialize(); //释放COM环境   ! a9 D* P. S5 P
}
: M4 Y5 g4 B+ O: p9 C* O3 x# Vvoid LinkSQL::ShowInformation()7 }2 [, t; W1 f# b$ B
{6 Z* R2 [$ ?! P8 ]- L5 I4 |5 N

' Q& S. z+ t* ?        ListingWindow *thwLW=theSession->ListingWindow();
* a6 [/ k4 ^! w        thwLW->Open();% l2 B( J( L, O+ ]" u, p2 I) \5 ]! r

7 p- ~3 ]# Z: k2 E; ^6 o0 u        try% V1 Y$ {* r5 a# {: V
        {
3 e! {  L& z- c/ N  Y, O                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    3 N6 l" P: t9 w9 t& w
        }
! U! Y. j7 c6 D7 \6 R        catch(_com_error &e); B* h' q1 O9 g: T
        {
; m0 ^% W; T$ r       
1 v( e3 F5 u8 Z3 S8 W; Z                ss<<e.ErrorMessage();
; p* W7 n* {0 q" n                thwLW->WriteLine(ss.str());
1 ]2 n/ Q  b: b  S                ss.str("");
: }% M! ^+ H7 o5 J                return;
3 P! X4 M( x% l9 d, l        }
6 }! L8 m3 f" m/ [7 N! c}
3 s" R1 ^( T, _. P8 J//执行文件
' Z0 U* ~, f, t* S: M! K2 W        LinkSQL *theLinkSQL=new LinkSQL;: _$ ]3 F9 }$ s4 ?( ^) K
        theLinkSQL->OpenSQL();
/ Y$ X% Z+ w) n" N3 J  O) h+ e5 y3 E        theLinkSQL->ShowInformation();
, q0 y( l; g0 O* e* n: J3 K3 \        theLinkSQL->CloseSQL();* E* _. K. ~7 H0 i5 T" y
        delete theLinkSQL;$ [  l7 V9 j1 a! n4 U" E

! _5 Y( i& k8 x% }: L! @哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了