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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件( g3 f" l0 k7 Z% r" S) F+ w1 y
#pragma once
3 l6 I0 P2 M6 O) V4 |$ i. L" Q#include "iostream"     . K( v8 T, L6 _7 r: p
#include "string"     ( {6 v6 C7 S, U! s1 [  I
#include "vector"     $ j8 }, j3 @2 K- q$ W; r# b* D" d! P

5 _0 }2 Y0 {8 y$ ^3 m//添加对ADO的支持   
3 T. I7 Z2 K* B#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF")
- f' m3 V- L* S#include <NXOpen\Session.hxx>/ v! T) ~6 A' e) R( ^

- C! D# `1 d- `8 r7 M& ?#include "uf.h": N+ q& z3 i2 d% ^" c
#include "uf_ui.h"' k) b  p; f5 o- b, H9 k
#include <NXOpen/UI.hxx>' Z2 p  ?# h; t4 z, F
#include <NXOpen/NXMessageBox.hxx>5 @0 P' W' {# W0 h- F
#include <sstream>
4 o* M% S! U+ T0 b0 }  m! W" C' m#include <NXOpen/ListingWindow.hxx>
4 E; u. k! [9 ~) I: o4 jusing namespace NXOpen;3 S# l) _# K- j, g) i/ F3 k% R. x  q
using namespace std;4 N4 |& q8 E) j
class LinkSQL& [' h5 t3 d$ U4 F; q
{. e8 l8 I5 _3 S4 w! A! c5 m
public:
1 w0 S5 x. b4 S( m        LinkSQL(void);
/ W6 b% H( q. _8 j: B  H        ~LinkSQL(void);6 L7 h$ ?* r$ S# q( m) h
        void OpenSQL();7 A0 C0 x. G. w! ~. C7 K
        void ShowInformation();' s" M4 ?3 I) P
        void CloseSQL();. Z, e. {% r; R) V' f+ K  _
private:
. N* k$ L+ ^. Z        Session *theSession;8 \( x3 s0 o& }
        UI *theUI;) j4 \" G# p/ J( C
        _ConnectionPtr pMyConnect;
4 p7 B1 t' K6 F        _RecordsetPtr pRst; - P: v+ i! X8 l4 G7 j
        stringstream ss;
7 ]8 m* B0 o- x$ l};
$ b3 U/ L! w- ^2 S8 H( }) |2 s
9 ~8 H: _8 {! ^: f# bLinkSQL:inkSQL(void). V5 ^( R/ b* R8 Y3 K
{
, e8 B0 G$ b+ T) |        CoInitialize(NULL); //初始化COM环境              9 l# z4 C; f4 l
        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
7 }: x" g! a8 B( ~0 o$ k8 A5 b! R' n        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  + f" M/ q1 K& i: k# r9 R
        theSession=Session::GetSession();
: M5 t! B' a. j) q        theUI=UI::GetUI();
( H3 u  }1 {' j. _( x}
* o7 ~7 {* y4 h9 W, C( ]; L
* W  ^$ E/ p5 f  r  I9 k9 T  b, _- T- Q( E, S: ^
LinkSQL::~LinkSQL(void)  f1 ^- i1 z$ n: Z7 Q
{' i# o# S0 K& u9 o2 d9 F
}. ^) }1 c$ {/ A: h* k
void LinkSQL::OpenSQL()* ~3 _2 R! m$ j( M9 M9 G' [0 p$ a
{( w5 a( y7 Z7 R1 @
        try            
  T# Y, l0 ^0 h- n6 c! K3 v        {               
$ r# R, W3 e6 e        # u* M, D; D; B& f6 t
                /*打开数据库“SQLServer” */               4 |0 s9 y6 |1 ^9 O4 u' c
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  " e+ i8 k& h1 G) I
                    ) e9 x# y9 z: q) ~8 l
        }   
5 N2 O( ?7 c( K' }$ ^        caTCh (_com_error &e)            
7 V. F" }+ m( H7 G, R, i! p        {                2 g: }$ q% F1 x9 i) v2 S8 u
                 ; j, w% s# s; e  l
                ss<<e.ErrorMessage();     
  S2 H& ~+ p3 L8 d                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());1 I# P* x1 t* H
                ss.str("");
  `3 I2 Y& Z+ k! c                            ; v9 t! L% n8 t  I" ?) ^3 y9 E. q/ @6 h
        }            
: R: g/ E6 d$ a  ]( P( {; A                         
4 p1 Q& r' I4 p! i) C4 s}
; ^0 p9 Y  Y2 |9 |/ @( Bvoid LinkSQL::CloseSQL()4 E$ ]5 K* {2 U9 [) s2 W, e
{
; x% i) O6 o& W9 V6 U        try            
9 |$ G' Q6 w4 n2 K        {                 / E0 n9 I  r* V4 h( w
6 R+ b  \. t. ]2 H" J
                pRst->Close();     //关闭记录集                  2 h$ [. G# h$ H! w. C
                pMyConnect->Close();//关闭数据库                  8 r+ j9 d/ x3 U
                pRst.Release();//释放记录集对象指针                  4 B  w! H! k0 e1 B5 J
                pMyConnect.Release();//释放连接对象指针   
8 ^& S% B, v  G6 _7 d. m; ?" t2 I        }  7 r3 g5 y' N$ `, E5 }- }! z
        catch(_com_error &e)            
3 D5 R6 V6 W! m! |; b  Y        {                 
7 G  B* `7 D' G. |                ss<<e.ErrorMessage();     ) z  X. K# e; v" e9 d, o
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());7 l0 S/ L2 O% K" a& f3 \1 U7 b
                ss.str("");          " L! W1 E' [! Y
        }                  
, ~& L' z; C$ ?& W3 U- g        ' |- x# _3 @2 q+ r3 T7 n
        CoUninitialize(); //释放COM环境   % [5 M( F4 h6 g' q) w1 k
}6 [0 b, Y2 M4 l3 m1 |
void LinkSQL::ShowInformation()
0 z+ Z7 {' @  C' q, B: [{
4 g* }# q6 b$ y% u1 B  }: m8 g
1 M6 t) W, z" d- I! g6 a3 ~. w        ListingWindow *thwLW=theSession->ListingWindow();
2 {% @+ X4 \9 S5 r. O: l$ ]  h        thwLW->Open();4 P  P8 s& R, m  `0 V! T0 G
. X9 N; |: R1 z5 S# _- H8 a- v4 O3 Z; R
        try
) `: g  f3 E9 d" w        {+ a7 w! U# B+ N7 s
                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat    : i8 Y& p* t; j: i& M3 i
        }
6 A3 B# |6 I" G: T, P        catch(_com_error &e)
# ?, `# z" `8 ~! |  s( L& }        {9 u% g8 `1 {/ V  ~
        * E/ @% W  f. I6 u
                ss<<e.ErrorMessage();
5 A" ?* x  ^& G0 V! B1 K/ N$ C# {                thwLW->WriteLine(ss.str());; s" U7 b$ C* }
                ss.str("");) p6 i; P, X' o& n
                return;
9 J" f- I/ p- W9 @1 S% `        }
; ?, C7 U8 F" F, V6 C}
+ @% q' M9 B7 `. d5 P//执行文件, ^0 z1 T' z0 H3 ^* A/ ?1 }: M
        LinkSQL *theLinkSQL=new LinkSQL;
" [1 n, o! O  C: N! v/ V5 W% ^        theLinkSQL->OpenSQL();2 P' X9 U+ m! _" T3 l) H5 r3 n
        theLinkSQL->ShowInformation();
; Y; [0 I! Y5 Z8 J) i; j. N        theLinkSQL->CloseSQL();
9 q! ]% }1 ^( A7 ^        delete theLinkSQL;
) Y& a2 Z. C( ^1 |5 A/ O7 I! d/ _# t- s9 R' g
哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了