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

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

[复制链接]

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

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

xiao2076 楼主

2014-10-17 08:11:57

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

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

x
//类文件: H9 f4 Q9 S' G& H, z
#pragma once
- u+ i& f. S, W2 z" U  W#include "iostream"     
. R8 Z) H9 ^9 ]0 D3 W) R#include "string"     , D% S. t- f/ K; C  }
#include "vector"     3 ^/ L& J) j/ D, D
; K  r7 A3 ^/ x
//添加对ADO的支持   
7 ~8 j$ B+ [- u8 {1 w2 {9 T6 H" R#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") % ?7 Q5 P* s! Y6 r$ g; \6 G* x
#include <NXOpen\Session.hxx>' i8 r2 v3 V" Y4 ?% s
  U$ q9 }8 B& o
#include "uf.h". L: O! Z3 Q/ n! y3 g' v
#include "uf_ui.h"
8 {6 p$ y2 q/ V#include <NXOpen/UI.hxx>+ H7 V" L" Z+ I. A' x; y
#include <NXOpen/NXMessageBox.hxx>, V# H8 E/ r  Z: B. E" e' U1 a
#include <sstream>8 F6 j" {8 r, W# q* L4 K' p
#include <NXOpen/ListingWindow.hxx>: r1 k# O$ _+ O1 o2 y# c
using namespace NXOpen;
5 P( `: J  N3 `/ [% ~using namespace std;! @4 s0 N1 [& @2 W# U$ K
class LinkSQL5 ~7 C6 A* u1 w- I: ^& _( J5 T
{
7 `0 Q) w2 q  mpublic:
& g% X8 z8 N! @2 q2 l8 L2 a        LinkSQL(void);
2 r  T( v; a( }        ~LinkSQL(void);) t* `5 [0 b' T  s1 c
        void OpenSQL();
2 p; k! W( N9 `* o. |3 f1 v        void ShowInformation();
5 l9 w1 e- e6 E  A        void CloseSQL();
9 o3 |6 O6 q# R, Eprivate:  w/ ]$ Y7 u$ r! ]( s2 A
        Session *theSession;
% n3 r6 E# Y1 ^1 b. z        UI *theUI;' L4 k7 N& e% a1 Z$ A
        _ConnectionPtr pMyConnect;
& @4 Q! o; X$ D        _RecordsetPtr pRst;
% i  ~! g. Y) A: \        stringstream ss;& k# N6 B3 O5 L
};4 [' E  @5 @6 I& w* ^
! L+ ?' h' n0 h+ w
LinkSQL:inkSQL(void)* c0 ^# x* a6 f& k7 x. o9 o. @6 B' @
{3 M- v* |3 O' G& M6 S0 _
        CoInitialize(NULL); //初始化COM环境              
4 w7 f/ ?! p: _        _ConnectionPtr pMyConnect(__uuidof(Connection));//定义连接对象并实例化对象   
5 u- o; z) |6 O! Y; ?        _RecordsetPtr pRst(__uuidof(Recordset));//定义记录集对象并实例化对象  & Q8 W* p( {  Z3 n1 W, f  W5 F
        theSession=Session::GetSession();+ }' w! Y4 O+ {" e
        theUI=UI::GetUI();
0 `, _. B" a4 r& ?  P* W# D3 V}
, h+ v) I: A( @
9 x: T: @  r. `! C9 v0 q0 c; Z) b
' V4 \* w) {. ~9 T% [LinkSQL::~LinkSQL(void)5 z. e7 P7 _" Z: D7 F' l' [
{
. ~+ o! |- L+ a8 ^. \) F# R. K}6 r" I* @6 [# \5 T
void LinkSQL::OpenSQL()
, d8 h& _9 k4 t9 h% P{  d5 z: `, N8 E5 p
        try             ) Y) a; {" [, Y* @, S
        {                ! X. a, J0 J+ X' O* \
       
/ X# I' s! Y2 F6 n4 j* l                /*打开数据库“SQLServer” */               % T' E: H% d! ?
                pMyConnect->Open("rovider=SQLOLEDB; Server=192.128.28.32;Database=test; uid=sa; pwd=123;","","",adModeUnknown);  
0 r  j- b. W4 Q+ J0 @- n: ]                    
3 P0 f$ h) `( j& T/ [) d, L        }   
, e  L* N: s( [- E3 _- P" {+ z        caTCh (_com_error &e)             ; r. M7 z) n2 R
        {               
5 \" ~7 O! }5 E8 B" J7 x                 ) q2 ?5 i9 A7 z! \
                ss<<e.ErrorMessage();       j! [0 ~6 z3 S  X* |( Z
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
' _! e- c* |( j( V                ss.str("");4 }- |8 S- |9 m0 m2 }8 g
                            " V" K$ W: J5 I& j+ E; r0 E  k
        }             / \5 x# I6 ?, D7 p! g) ]
                         
8 g. J  d/ A! B7 s; l: ~) U; p}' x1 f* J4 G# C2 x, [# S# `. ~
void LinkSQL::CloseSQL()' Z0 r" u% J" C9 P- F
{; `( N2 ?  ~. L7 W2 R1 ]& y
        try             8 b6 v: l$ b* P; |
        {                 
  ^+ G9 H. a8 n1 c( |" J# X' I; I: i" l
                pRst->Close();     //关闭记录集                  8 X+ x7 U  a3 `5 `
                pMyConnect->Close();//关闭数据库                  
2 R. E  i* v/ b: d9 L5 T                pRst.Release();//释放记录集对象指针                  
# i9 ?$ r+ h+ j2 M5 a                pMyConnect.Release();//释放连接对象指针   " }+ L" O) S& i/ j
        }  ' Y+ e" L& q4 x, x% ~! Q$ V
        catch(_com_error &e)             ; I2 E% i. o% D0 \) Z8 x+ S
        {                 & U+ j% P4 ?9 c
                ss<<e.ErrorMessage();     ' i+ \8 y- [9 Y" b5 w9 \" v
                theUI->NXMessageBox()->Show("系统信息",NXMessageBox:ialogTypeError,ss.str());
# c% R0 O& h+ E$ n                ss.str("");         
7 S# t2 B9 a- j& x        }                   3 Z: \  I, e. R7 X8 x2 [) b1 D( t
        ) n7 s: \. d7 J
        CoUninitialize(); //释放COM环境   
- J+ p( i6 ?  f9 G5 m2 J0 G2 i7 f}
$ N$ F7 s0 P) q+ Jvoid LinkSQL::ShowInformation()
! ]  S3 d& C, Y' A0 h( x{
7 N3 o1 p5 L; S* G6 [7 c  m7 P3 B+ }% Q& P4 c! B$ D: U
        ListingWindow *thwLW=theSession->ListingWindow();: ]) q( q3 i7 b5 \! I) ^
        thwLW->Open();
- |/ L, |" T5 ?5 `; c  N, x4 _. p; k+ Y+ C( z) h& a- Q& ?; f/ `
        try
& S: {, b5 h" z4 F) l( Q, I  I        {' M( j- m% ^* s& q' K- I
                pRst = pMyConnect->Execute("select * from 表格1",NULL,adCmdText);//执行SQL: select * from gendat   
: N/ d3 n- f+ q        }
8 ?9 h4 N5 D7 d' P, c        catch(_com_error &e)
) m% X- @9 ~# }: H8 a8 G. ^  v% K        {
6 f, @/ v  E" m' [5 R8 C. P       
4 M6 S3 S7 u  K& Q) O                ss<<e.ErrorMessage();# u7 ?* W4 t, v& l  f( R) N
                thwLW->WriteLine(ss.str());2 g7 W* D1 G* u! F5 Q. G6 M
                ss.str("");
7 O1 J  J" a" `" h. m/ h                return;
* |) X- E" X4 E' W4 A; w# K        }% f8 |2 f# K' a! e, \. S* d; U& h) U" R
}
7 W+ [; N5 ?, s; O3 A+ j//执行文件
; [/ _8 N' w& f6 ~        LinkSQL *theLinkSQL=new LinkSQL;8 b& u3 i# k: m, N# m/ ?4 F0 `- O+ `
        theLinkSQL->OpenSQL();
' E! Q: v$ ]5 f+ }5 U0 [3 G        theLinkSQL->ShowInformation();; b! }2 ]" b" E
        theLinkSQL->CloseSQL();6 p( ~! v: N  m# t# S# o* j5 n6 K1 o
        delete theLinkSQL;  }5 X3 d) e; S0 o$ g. ?
- j! T/ H- I- [4 F
哪个地方出错了,在控制台程序的时候没问题,在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二次开发专题模块培训报名开始啦

    我知道了