5_UG二次开发外部数据访问

5_UG⼆次开发外部数据访问
第5章外部数据访问
在UG的⼆次开发应⽤中,经常需要与各种外部数据打交道,⽐如,利⽤UG⼆次开发来开发标准件库时,由于标准件的数据都是以图表的形式定义在设计⼿册中,我们能够将这些数据存贮到Access、FoxPro、SQL server,甚⾄Excel中,那么如何在UG⼆次开发过程中访问这些存贮在外部数据库中的数据?
UG/OPEN API提供了丰富的访问操作函数,利⽤这些操作函数及VC++的MFC类库,可以⽅便地实现外部数据读写访问编程。主要访问的外部数据有⽂本⽂件、Excel表、关系型数据库表等,通常可以通过以下⽅法访问这些外部数据:
(1)通过ODBC访问外部数据
奔月记(2)通过ADO访问外部数据
(3)通过UG/OPEN API提供的操作函数访问外部数据
5.1 ODBC数据源访问外部数据
ODBC(Open Database connectivity 开放式数据库互连)是由微软公司提出的⼀个⽤于访问数据库的统⼀界⾯标准,它提供了⼀个⼀致的应⽤程序编程接⼝,该接⼝使⽤⼀个针对数据库的驱动程序与不同的数据库协同⼯作。
DSN(Data Source Name)是⽤于指定ODBC与相关的驱动程序相对应的⼀个⼊⼝,所有DSN的信息由系统进⾏管理,⼀般来讲当应⽤程序要使⽤ODBC访问数据库时,就需要指定⼀个DSN以便于连接到⼀个指定的ODBC驱动程序。
利⽤ODBC访问外部数据,⾸先要配置ODBC数据源,即创建ODBC的DSN;然后读取ODBC指定数据源中的数据。
5.1.1 配置ODBC数据源
限额设计1、选择"控制⾯板"中的"管理⼯具"下⾯的"数据源 (ODBC)",如下图所⽰。
2、在弹出的ODBC数据源管理器对话框中,选择系统“DSN”,并单击"添加…"按钮,将出现创建新数据源对话框,如下图所⽰。
3、在创建新数据源对话框中,选择你将访问数据源相应的驱动程序,⽐如,我们将访问Access数据库中的数据,此时可选择“Microsoft Access Driver(*.mdb)”,选择后,单击“完成”按钮,此时,出现数据源相应驱动程序的选择界⾯,如下图所⽰。
4、在驱动程序选择界⾯中,数据源名框中输⼊DSN的名称,⽐如,Screw。DSN的名称⾮常重要,它是后期访问数据源的唯⼀标识。输⼊DSN的名称后,可通过“选择(S) …”按钮选择相应数据源所在的路径,如果选择成功,将在界⾯出现已选中的数据源的完整路径和名称,如下图所⽰。
图5-5 ODBC Microsoft Access安装
5、点击“确定”按钮,此时在“系统DSN”中就会出现你刚创建的ODBC数据源名,表明配置数据源成功。中国多媒体教学学报
动态配置ODBC
中药提取5.1.2 读取ODBC数据源中的数据
读取ODBC数据源中的数据时,经常使⽤到CDatabase(数据库类)、CRecordSet(记录集类) 。CDatabase类对象提供了对数据源的连接,通过它可以对数据源进⾏操作。CRecordSet类对象提供了从数据源中提取出的记录集进⾏操作。
1、CDatabase类
⼀个CDatabase对象代表与数据源的⼀个连接。创建⼀个CDatabase对象之后,调⽤Open或OpenEx成员函数指定⼀个DSN(数据源名)。⼀旦调⽤了这两个函数之⼀,就建⽴起了与DSN的底层数据源的连接。CDatabase对象通常与⼀个或多个记录集(CRecordset对象)⼀起使⽤。下⾯的例⼦是⽤⼀个CDatabase对象来建⽴与⼀个DSN 的连接:
try{
CDatabase db;
db.Open("Screw"); // 建⽴与DSN(Screw)的连接
// Use db
...
数控回转工作台设计
db.Close(); //关闭先前建⽴的与DSN的连接
}
CDatabase构造函数并没有做很多事情,只有调⽤Open函数才能建⽴起与数据源的连接,因此,我们有必要先看⼀下这两个函数。
virtual BOOL Open(
LPCTSTR lpszDSN,
BOOL bExclusive = FALSE,
BOOL bReadOnly = FALSE,
LPCTSTR lpszConnect = _T("ODBC;"),
BOOL bUseCursorLib = TRUE
);
在Open函数原型中,有⼏个选项在打开数据库连接的时候可以指定,但通常只需要提供第⼀个参数。在前⾯的例⼦中,这第⼀个参数是我们在前⾯建⽴的DSN的名称。
bExclusive参数指定是否允许其他应⽤程序对数据源的连接。bExclusive为FALSE 时表⽰允许多个程序共享打开的数据源。
bExclusive为TRUE时,在⽼版本的类库中并不⽀持,会引发⼀个断⾔错误,在中应该⽀持。阿穆尔
bReadOnly参数允许应⽤程序指定建⽴连接之后,是否可以更新数据源。FALSE是默认值,表⽰可以通过这个连接来更新数据源。任何被创建并附属于这个CDatabase的CRecordset对象都⾃动继承这个值。
lpszConnect参数指定连接字符串。使⽤这个参数的好处是灵活性,如果数据源指定了⽤户ID和密码,可以通过lpszConnect 参数来实现。上⾯的例⼦中,如果我们的数据源指定了⽤户ID为UgUser,密码为110,那么可以有两种使⽤Open成员函数的⽅式:
db.Open(
_T("Standard Part"),
FALSE,
FALSE,
_T("ODBC;UID=UgUser;PSW=110"),
FALSE
);
db.Open(
NULL,
FALSE,
FALSE,
_T("DSN=Standard Part;UID=UgUser;PSW=110"),
FALSE
);
bUseCursorLib参数指定是否使⽤ODBC游标库,如果这个值被设置为TRUE(默认值),这个连接只允许静态快照或仅向前类型的游标。为了使⽤动态集,这个参数必须设置为FALSE。因为在后⾯我们要⽤到CRecordset类,所以上⾯程序段中的db.Open("Standard Pad")将会引起CRecordset类使⽤时的运⾏时错误(虽然与DSN的连接通过这⼀条语句能建⽴好),原因是bUseCursorLib参数未指定为FALSE。
CDatabase::OpenEx仅使⽤两个参数:⼀个连接字符串和⼀个代表连接选项的DWORD。lpszConnectString向函数传递ODBC连接字符串,dwOptions参数设置这个连接的建⽴⽅式。下⾯的值可以通过逻辑操作符OR⼀起使⽤:CDatabase::Exclusive
CDatabase::openReadOnly
CDatabase::useCursorLib
CDatabase::noODBCDialog
CDatabase::forceODBCDialog
这些值与在Open函数中的使⽤⽅法完全⼀样,唯⼀的区别是增加了noODBCDialog 和forceODBCDialog标志。这些标志确定当应⽤程序企图建⽴与数据源的连接时,ODBC Driver Manag
er是否给⽤户弹出ODBC连接对话框。
2、CRecordset类
⼀个CDatabase对象代表与数据源的⼀个连接,⽽⼀个CRecordset对象(称为记录集)代表从⼀个数据源检索出的⼀组记录。
CRecordset类⽀持动态集类型和快照类型。动态集,或称键集合驱动记录集,是数据的动态集合,它⽀持双向滚动并与数据源的其他⽤户做的更新保持同步。另⼀⽅⾯,快照则是在记录集被填充时数据的静态照⽚。这个记录集不受其他⽤户所做的更改的影响。如果使⽤快照类型记录集的应⽤程序需要查看其他⽤户做的改动,必须先关闭记录集再重新打开。快照类型记录集也⽀持双向滚动。
创建⼀个记录集最快捷的⽅式是使⽤框架向程序中添加⼀个CRecordset类。⾸先,临时创建⼀个MFC DLL项⽬。然后,在类视图中,右键单击项⽬名称,在弹出的菜单中,单击添加选项,选择添加类,此时将出现“Add Class”对话框,如下图所⽰。
在“Add Class”对话框中双击“MFC ODBC Consumer”,得到下图所⽰的MFC ODBC 使⽤者向导对话框。
选择将访问的数据源,也可以通过“新建”按钮新建⼀个ODBC的DSN。

本文发布于:2024-09-20 23:27:05,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/24932.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:数据源   连接   数据
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议