PLM之家精品课程培训,联系电话:18301858168 QQ: 939801026

  • NX二次开培训

    NX二次开培训

    适合初级入门或想深入了解二次开发的工程师,本培训结合ufun,NXOpen C++,大量的实例及官方内部的开发技术对于老鸟也值得借鉴!.

    NX CAM二次开发培训报名 NX二次开发基础培训报名
  • PLM之家Catia CAA二次开发培训

    Catia二次开发培训

    Catia二次开发的市场大,这方面开发人才少,难度大。所以只要你掌握了开发,那么潜力巨大,随着时间的积累,你必将有所用武之地!

  • PLM之Teamcenter最佳学习方案

    Teamcenter培训

    用户应用基础培训,管理员基础培训,管理员高级培训,二次开发培训应有尽有,只要你感兴趣肯学习,专业多年经验大师级打造!

  • PLM之Tecnomatix制造领域培训

    Tecnomatix培训

    想了解制造领域数字化吗?想了解工厂,生产线设计吗?数字化双胞胎,工业4.0吗?我们的课程虚位以待!

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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件& q) `+ R$ \' i
#pragma once
! \  [  o9 K+ v3 d#include "iostream"     - [. r8 L/ \) [8 Z/ w. y
#include "string"     
4 `/ C) k, t# Q- R#include "vector"     
! B& f- [8 z% a8 D& }; p6 h& C/ {$ z) M% e+ y
//添加对ADO的支持   
$ l7 ?8 b- g  x$ [7 L9 W& C8 k" F, f#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 1 ]" J0 }, e" L( }; p8 y' `0 g3 b
#include <NXOpen\Session.hxx>
; Q! F) ~, q3 Q/ w. R* G9 L0 U& K! {% Q. Z+ F
#include "uf.h"6 j2 x* @/ Z+ }& E6 K
#include "uf_ui.h"
1 R- H! F1 Z4 f#include <NXOpen/UI.hxx>  M! v  C) y# I+ B: L( {+ o
#include <NXOpen/NXMessageBox.hxx>
" h  N# T3 p7 B#include <sstream>
# w$ M8 ?, {( x  [0 G0 K! l#include <NXOpen/ListingWindow.hxx>
7 m' u4 S* M% v  l$ S* Fusing namespace NXOpen;* ~9 b9 s4 l( E3 Y6 M. v3 c; B
using namespace std;
1 B3 Y/ n) q' ]( e) F- zclass LinkSQL6 ]- ^* f8 M7 k: V. q- q2 R
{9 ^; ]: a( q6 ]& B& G1 C
public:
& V- L. ^. H* z$ n3 s        LinkSQL(void);3 u6 O3 ?, g& D* f: {9 D
        ~LinkSQL(void);
' t4 {9 p1 ]/ o9 A. e& d  Q& c" Q        void OpenSQL();
& w( o; E' r/ Y" c8 v4 B4 a        void ShowInformation();2 |! t  e% o6 G3 m5 q7 J
        void CloseSQL();
" K  {1 Y8 z1 \3 N, C* h6 ~private:
' f0 V) ]& J0 S4 a& ]! _0 W8 x        Session *theSession;
2 r4 @( O. g( h% E& Z        UI *theUI;
$ _/ [( s) o" [- ^$ \# c        _ConnectionPtr pMyConnect;
- A# f6 O+ `2 j: k        _RecordsetPtr pRst;
* w' [% n, S3 _  R) b/ r        stringstream ss;
# j. B0 {8 Q1 d  _; T9 C7 w1 C9 z};
! v5 t0 L( I! J; S
5 q+ h/ \/ E- `7 \  a2 dLinkSQL:inkSQL(void)- I6 n3 M6 S, b8 }/ C; E
{
5 k5 j7 s! M( ?, ?* D9 F$ h        CoInitialize(NULL); //初始化COM环境              ( F9 }6 ?* d; k6 p3 J9 H
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
3 W1 b+ X4 Q# ~6 Y  W6 W6 h        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  
9 b: z# D$ J9 v& B. a- O        theSession=Session::GetSession();
% A+ F% j0 b# w: c/ }, c% e% N        theUI=UI::GetUI();
# j+ _# R  m# ~$ _4 d}
$ B, p! b7 u8 s: o6 Q$ ~1 p4 f- G3 G
5 M; K- i( w7 b0 _& I  @8 |
LinkSQL::~LinkSQL(void); i6 ~/ a3 h1 d8 z! z' @
{
6 O1 d0 H4 T4 a) h6 J# w! _}
: e% J4 |3 F. x, j0 H: ~7 \void LinkSQL::OpenSQL(), T  @. Z( b7 K6 `
{( Q) J) ~! i9 W- z, q2 I2 d
        try             5 k8 f# ]# l( ?5 _$ M
        {                6 p5 u) i7 v0 ~9 |2 H* J
        ( n) c( R  C) Z+ B$ T
                /*打开数据库“SQLServer” */               
/ a) Z- L! Q7 R3 _7 s                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  $ F/ {, ^! y+ z5 e" L
                    
+ v" |4 F, z9 w- q5 Q2 i        }   
" i, O9 S2 @/ f* ~5 E        caTCh (_com_error &e)            
, u( g- D0 f) d1 x5 O        {                2 W* b" H% ?' |  @3 P8 I5 m) T7 |
                 
# n; e8 z1 I5 b                ss<<e.ErrorMessage();     
+ z0 {5 i% c" A  y: k                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
4 Z' x% ~* s0 h2 ~+ x) m6 A                ss.str("");% ~5 v( K+ B' x9 Z) |8 h7 L
                           
! i  C' i+ K! U# ?6 d! x5 f+ g/ B! e; g$ {        }            
) a& n4 K, M. m& X, Z3 ~                         : o* K" P" n3 b6 ]0 b' V$ e( U! c
}
4 S+ J5 C$ ]4 i( V$ ^  A% avoid LinkSQL::CloseSQL()
& Q; R: ^$ ]" h0 q" f' O{
& o) \0 X3 E$ }+ H# g" A  g        try             4 ~: x6 X5 z' u. a* x4 j# l% g
        {                 9 O* f9 I" x4 i; Y- @
* W0 Q5 r/ }* W! |# o1 `
                pRst->Close();     //关闭记录集                  & S" l% S, M- u( c, H9 f9 ^; |
                pMyConnect->Close();//关闭数据库                  
, G. ]6 C: v2 g  [* Y2 N                pRst.Release();//释放记录集对象指针                  
: X+ d) B1 E  A4 y9 o0 R                pMyConnect.Release();//释放连接对象指针   " E/ ~/ `9 y4 _( B0 r
        }  0 z! C& r  p* b# d$ R
        catch(_com_error &e)            
. n4 I  S" s) B& d        {                 
3 E$ B! M: i3 Y+ V" Y, o( T3 o                ss<<e.ErrorMessage();     
2 d- j2 P; v! O" v  Q. l                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());0 c8 X. g. g$ M5 r2 @' H
                ss.str("");         
3 A9 \5 b3 y$ A, t4 K. o        }                     Q9 o3 q# _; N, y
        ! ^" y9 s! z& p' C  a
        CoUninitialize(); //释放COM环境   
$ ^3 I8 Y, p: p  x; d1 h, ]}
* }1 @. M6 {' }void LinkSQL::ShowInformation()3 \- N. ~) X9 D: v8 F7 Q) `! h! `. P
{% y6 j1 x: X" |- y' O1 Y
! Q3 \9 {. a. o# Z" h
        ListingWindow *thwLW=theSession->ListingWindow();1 u, i) c8 y! ?+ @) e, {; D
        thwLW->Open();
$ X2 x4 {- e. [( ?- R* |8 p  s1 X$ |6 G: W- e2 ]* k/ I' A
        try# `9 b, j% S" x5 V' H6 R: }& {- p0 D
        {# H& J1 I! p# C# _7 D
                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    / b% @1 I& s) b& p. }( `
        }. L/ v2 g0 x! T; A& F' I
        catch(_com_error &e)
! Q% i' n. {0 ~        {7 R6 |' X* x$ ^9 f$ ^( a  Z9 K
       
5 d, W1 n; F, n# d4 ^3 A! m. f$ n                ss<<e.ErrorMessage();0 i9 I' {3 a2 ?& ?* Q
                thwLW->WriteLine(ss.str());! E9 Y1 m. `4 R$ A
                ss.str("");8 @' q  Y& _7 `
                return;
. Y1 @( u2 D7 j6 z! p        }
% k; m* i, A1 J6 K! c$ v2 H}
/ R* |' x; j. V//执行文件0 B3 [4 |4 k! U3 @/ }9 R" x
        LinkSQL *theLinkSQL=new LinkSQL;
1 H4 s  V% x  _8 w        theLinkSQL->OpenSQL();
$ I6 B1 l9 T# k) v: q. P( X; }        theLinkSQL->ShowInformation();5 O# w, S; g; l! u. [
        theLinkSQL->CloseSQL();' L4 Q9 g  P, w
        delete theLinkSQL;
( d3 y9 _, O2 e, q$ [
) \. h9 @" |: d4 n2 a) ^哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了