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

[资料] UG NX二次开发访问数据库方式--ODBC访问图文教程

[复制链接]

2014-2-22 14:35:26 5694 0

admin 发表于 2014-2-22 14:35:26 |阅读模式

admin 楼主

2014-2-22 14:35:26

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

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

x
UG NX二次开发访问数据库方式--ODBC访问图文教程
. P7 u) I* o5 M3 u
* q7 n+ b+ D% h. C
' t# M: ]) `3 F
1.1 配置ODBC数据源) O; E; E1 v: A# I/ x2 z: o3 J
1、选择"控制面板"中的"管理工具"下面的"数据源 (ODBC)",如下图所示。
& P% W7 T1 ?9 }8 r* R# g! Z2 s6 ~ 1 管理工具.png
1 f# c: Z0 m# B: W& E+ G- s1 a2、在弹出的ODBC数据源管理器对话框中,选择系统“DSN”,并单击"添加…"按钮,将出现创建新数据源对话框,如下图所示。* b, c( B9 k5 y; l1 m
2 ODBC 64位.png
' Z3 M7 u1 @2 W% L6 W3、在创建新数据源对话框中,选择你将访问数据源相应的驱动程序,比如,我们将访问Access数据库中的数据,此时可选择“Microsoft Access Driver(*.mdb)”,选择后,单击“完成”按钮,此时,出现数据源相应驱动程序的选择界面,如下图所示。
% I4 d; C, n7 y& O8 ?. Z 3 创建DSN.png 4 P5 |4 L& W1 n' p  L: K
4、在驱动程序选择界面中,数据源名框中输入DSN的名称,比如,Screw。DSN的名称非常重要,它是后期访问数据源的唯一标识。输入DSN的名称后,可通过“选择(S) …”按钮选择相应数据源所在的路径,如果选择成功,将在界面出现已选中的数据源的完整路径和名称,如下图所示。
. t! L4 F/ n: @ ! b. f' h; s) ]  N: R; ?: t0 b- n) M
5、点击“确定”按钮,此时在“系统DSN”中就会出现你刚创建的ODBC数据源名,表明配置数据源成功。
7 z9 r. O, j- U6 Y5 ?

/ l% ?) k8 b5 Z' b' A1.2 读取ODBC数据源中的数据: f  k# R; S( ]# a) k! ?
读取ODBC数据源中的数据时,经常使用到CDatabase(数据库类)、CRecordSet(记录集类) 。CDatabase类对象提供了对数据源的连接,通过它可以对数据源进行操作。CRecordSet类对象提供了从数据源中提取出的记录集进行操作。
0 O3 o) }# h% `/ w+ D1、CDatabase类/ H3 v  x+ T. Z5 H# J6 L! \
一个CDatabase对象代表与数据源的一个连接。创建一个CDatabase对象之后,调用Open或OpenEx成员函数指定一个DSN(数据源名)。一旦调用了这两个函数之一,就建立起了与DSN的底层数据源的连接。CDatabase对象通常与一个或多个记录集(CRecordset对象)一起使用。下面的例子是用一个CDatabase对象来建立与一个DSN的连接:0 ~3 c/ K7 [' l
    try{4 Y/ f  ^) @* h' F; M2 w
        CDatabase db;! z0 F) r. ^% Z; G3 b
        db.Open("Screw"); // 建立与DSN(Screw)的连接1 ?8 c2 s9 |" M# f* _+ i+ P
        // Use db0 S, M* f( ]4 \& o" w) t0 _8 o
        .... J# c  W1 ?" O$ L0 r' Z+ c  {% k5 f% z
        db.Close();  //关闭先前建立的与DSN的连接" ^- M6 I/ I: M4 a) ^4 r
    }( Q. N7 x6 X+ O( H7 S3 X5 k: u- O9 Y
CDatabase构造函数并没有做很多事情,只有调用Open函数才能建立起与数据源的连接,因此,我们有必要先看一下这两个函数。7 u! v5 k" O: V, t- ^- e- R. o
    virtual BOOL Open() K, e7 E! S8 ?1 E  [5 h
        LPCTSTR lpszDSN,! X5 W% m: a2 t  w7 A
        BOOL bExclusive = FALSE,
4 x6 g8 N/ s6 U/ A0 w- F        BOOL bReadOnly = FALSE,% f% J3 C! P! B) F! K6 e  X
        LPCTSTR lpszConnect = _T("ODBC;"),& D& }; x/ Q6 }! P
        BOOL bUseCursorLib = TRUE" i* ^( q! b, I+ T, H1 a
);
6 f& g' f, ^5 _; m在Open函数原型中,有几个选项在打开数据库连接的时候可以指定,但通常只需要提供第一个参数。在前面的例子中,这第一个参数是我们在前面建立的DSN的名称。
1 `' y4 g) F1 Q# \bExclusive参数指定是否允许其他应用程序对数据源的连接。bExclusive为FALSE时表示允许多个程序共享打开的数据源。bExclusive为TRUE时,在老版本的类库中并不支持,会引发一个断言错误,在.net中应该支持。( U/ c& m; [: S' G0 \% [9 F7 X
bReadOnly参数允许应用程序指定建立连接之后,是否可以更新数据源。FALSE是默认值,表示可以通过这个连接来更新数据源。任何被创建并附属于这个CDatabase的CRecordset对象都自动继承这个值。7 L# \& v: d  P( o/ y% c* t) J
lpszConnect参数指定连接字符串。使用这个参数的好处是灵活性,如果数据源指定了用户ID和密码,可以通过lpszConnect参数来实现。上面的例子中,如果我们的数据源指定了用户ID为UgUser,密码为110,那么可以有两种使用Open成员函数的方式:
3 Z6 C8 o, I$ \+ R2 s* x    db.Open() N. R; l( r! @; M+ R- R2 ^
        _T("Standard Part"),# H* w- [0 ~0 n7 W' b# k
        FALSE,
0 ^3 m& N  m  s% q- C        FALSE,
. u1 G/ B9 w' j: B$ l& b6 g        _T("ODBC;UID=UgUser;PSW=110"),5 @4 x: D, i6 U- a8 z! e; u
        FALSE
- C$ o/ _' b) F/ G& R        );7 }! }' m% K. \/ G
    db.Open(3 H: u: w0 p) N8 W8 }
        NULL,
/ k/ r% E( o4 e% k0 U! w4 P        FALSE,: j: Q1 ~: T) W; |
        FALSE,
  [! W% t: k6 X3 |, D4 Q0 e: {        _T("DSN=Standard Part;UID=UgUser;PSW=110"),
! a: o6 x" X' P7 {& J2 f0 z        FALSE5 g" |$ u0 F# X/ d9 C. T. E
);
+ X; {9 Q, g' H" n6 }; wbUseCursorLib参数指定是否使用ODBC游标库,如果这个值被设置为TRUE(默认值),这个连接只允许静态快照或仅向前类型的游标。为了使用动态集,这个参数必须设置为FALSE。因为在后面我们要用到CRecordset类,所以上面程序段中的db.Open("Standard Pad")将会引起CRecordset类使用时的运行时错误(虽然与DSN的连接通过这一条语句能建立好),原因是bUseCursorLib参数未指定为FALSE。

5 ?4 g. S5 q) l% n5 _CDatabase::OpenEx仅使用两个参数:一个连接字符串和一个代表连接选项的DWORD。lpszConnectString向函数传递ODBC连接字符串,dwOptions参数设置这个连接的建立方式。下面的值可以通过逻辑操作符OR一起使用:7 R( P# @* v7 G, Z. M
CDatabase::Exclusive
# F4 r) z! c+ }! T7 ECDatabase::openReadOnly  c# j* ~4 m1 M1 R% w+ V, y; N
CDatabase::useCursorLib2 f2 H0 \, s- L$ C$ \, _8 n. g( i$ |
CDatabase::noODBCDialog; b: i5 ]. U) F' Q2 j; M
CDatabase::forceODBCDialog
' M8 J8 f3 {, u- [
这些值与在Open函数中的使用方法完全一样,唯一的区别是增加了noODBCDialog和forceODBCDialog标志。这些标志确定当应用程序企图建立与数据源的连接时,ODBC Driver Manager是否给用户弹出ODBC连接对话框。
1 w& g- X$ N" ^7 b2、CRecordset类0 ^; C* l% j' v9 W9 e% v
一个CDatabase对象代表与数据源的一个连接,而一个CRecordset对象(称为记录集)代表从一个数据源检索出的一组记录。+ t( L) A6 _. k) f) O6 @
CRecordset类支持动态集类型和快照类型。动态集,或称键集合驱动记录集,是数据的动态集合,它支持双向滚动并与数据源的其他用户做的更新保持同步。另一方面,快照则是在记录集被填充时数据的静态照片。这个记录集不受其他用户所做的更改的影响。如果使用快照类型记录集的应用程序需要查看其他用户做的改动,必须先关闭记录集再重新打开。快照类型记录集也支持双向滚动。

4 ]& D, |" Z& [, i/ F2 Z
, S$ K3 ^; E* O8 r
3 l5 o2 C6 Y; k% \& {! E. W

& F# H1 v; i! h
1 h& q! Q; `! H) G% ?5 n
1 b9 _) ^' `3 F; {+ E7 I1 {
! ^/ P5 v, v+ m

3 `1 q- e- N$ S9 [* V6 \  E
( E0 W7 u4 K7 d& i- }5 D  v

: e4 [1 M8 D. T7 ?, ]! a
上海点团信息科技有限公司,承接UG NX,CATIA,CREO,Solidworks 等CAx软件,Teamcenter,3D Experience等PLM软件,工业4.0数字化软件的实施\二次开发\培训相关业务,详情QQ 939801026 Tel 18301858168 网址 doTeam.tech
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 注册

返回列表 本版积分规则

  • 发布新帖

  • 在线客服

  • 微信

  • 客户端

  • 返回顶部

  • x
    温馨提示

    本网站(plmhome.com)为PLM之家工业软件学习官网站

    展示的视频材料全部免费,需要高清和特殊技术支持请联系 QQ: 939801026

    PLM之家NX CAM二次开发专题模块培训报名开始啦

    我知道了