非Access数据库在VB中的编程及应用

上传人:l****6 文档编号:38057078 上传时间:2018-04-26 格式:DOC 页数:4 大小:32KB
返回 下载 相关 举报
非Access数据库在VB中的编程及应用_第1页
第1页 / 共4页
非Access数据库在VB中的编程及应用_第2页
第2页 / 共4页
非Access数据库在VB中的编程及应用_第3页
第3页 / 共4页
非Access数据库在VB中的编程及应用_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《非Access数据库在VB中的编程及应用》由会员分享,可在线阅读,更多相关《非Access数据库在VB中的编程及应用(4页珍藏版)》请在金锄头文库上搜索。

1、1非 Access 数据库在 VB 中的编程及应用摘要 Visual Basic 有着强大的数据库存取能力,不仅能够直接支持 Ms Access 数据库,而且通过其内部安装的 ISAM 驱动程序使它能间接支持 FoxPro、dBASE 等外来数据库。本文不仅从 VB 数据库体系结构的角度探讨了 VB 对这些外来数据库的支持,还结合了一些实例具体阐述了使用数据库存取对象变量的方法实现这些外来数据库的新建、库结构修改、显示及其运行环境设置。关键词Visual Basic Access, 外来数据库,数据库正文存取对象变量库结构作为一个功能较完备的 Windows 软件开发平台,Visual Bas

2、ic 专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(Data Access Object Variable),直接调用 ODBC 2.0 API 接口函数等三种访问数据库的方法。对其标准内置的 Ms Access 数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在 VB 中,将非 Access 数据库称为外来数据库。对于FoxPro、dBASE、Paradox 等外来数据库。虽然借助 VB 的 Data Manager 能够对这些数据库进行 NEW、OPEN、DESIGN、DELETE 等操作,但在应用

3、程序的运行状态中并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非 Access 格式数据库(以 FoxPro 数据库为例)的建新库、拷贝数据库2结构、动态调入等操作,阐述了从编程技巧上弥补 VB 对这些外来数据库支持不足的可行性 。 一 、 VB 数据库的体系结构具体的 VB 的数据库结构。VB 数据库的核心结构是所谓的 MicroSoft JET 数据库引擎,JET 引擎的作用就像是一块“面 板“,在其上可以插入多种 ISAM(Indexed Sequential Access Method,即索引顺序存取方 法) 数据驱动程序。JET 引擎为 Access 格

4、式数据库提供了直接的内部(build-in)支持,这就是 VB 对 Access 数据库具有丰富支持的真正原因。VB 专业版中提供了 FoxPro、dBASE(或 Xbase)、Paradox、Btrieve 等数据库的ISAM 驱动程序,这就使得 VB 能支持这些数据库格 式。另外,其他的许多兼容ISAM 的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB 能支持所有兼容 ISAM 的数据库格式(前提是只需获得这些数据库的 ISAM 驱动接口程序)。由上可见,Ms JET 引擎实质上提供了:一个符合 ANSI 标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数

5、据库的外部接口;为应用代码提供的内部接口。实际上,在 VB 中从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管 dBASE、Paradox 本身的 DDL (Data Definition Language,即数据定义语言)和 DML(Data Manipulation Language,即数据操纵语言)是非结构化查询的,但它们仍然可以使用 VB 的 SQL语句和 JET 引擎来操纵。从 VB 的程序代码的角度来看,ODBC,ISAM 驱动程序以及 Ms Access 数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给 VB 应用程3序员的记

6、录集对象视图同所使用的数据库格式及类型是相互独立的。即对 FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非 Access 数据库的访问提供了最重要的方法。 二 、使用非 Access 数据库时的参数设置及配置文件的参数读取如果在 VB 的程序中使用了数据库的操作,将应用程序生成 EXE 文件或打包生成安装程序后,则必须提供一个配置 (.INI)文件,在 INI 文件中可以对不同类型的数据库进行设置。如果找不到这个 INI 文件, 将会导致不能访问数据库。通常情况下,INI 文件的文件名和应用程序的名称相同,所以如果没有指明,VB 的程序会在 Windows 子目录中去找和应用

7、程序同名的 INI 文件。可以使用 VB 中的 SetDataAccessOptions语句来设置 INI 文件。 SetDataAccessOptions 语句的用法如下:SetDataAccessOptions 1 ,IniFileName 其中 IniFileName 参数指明的是 INI 文件的带路径的文件名。值得注意的是,当应用程序找不到这个 INI 文件时,或在调用 OpenDataBase 函数时对其 Connect 参数值没有设定为 VB 规定的标准值,如对 FoxPro 2.5 格式设定为了“ FoxPro;“(应为“ FoxPro 2.5; “),或者没有安装相应的 ISA

8、M 驱动程序,则此时 VB 会显示一条错误信息“ Not Found Installable ISAM “。通常,INI 文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序中自己生成。 通常这种 INI文件中有“ Options“、“ISAM“、“ Installed ISAMs“、“FoxPro ISAM“、“dBASE ISAM “ 、“ Paradox ISAM “等设置段,对于一个完整的应用程序则还应有一个属于应用 程序自己的设置段如“ MyDB”。可在其中设置DataType、Server、DataBase、 OpenOnStartup、DisplaySQL、

9、QueryTimeOut 等较为重要的数据库参数,并以此限定应用程序一般的运行环境。 Windows API 接口函4数在 Kernel.exe 动态链接库中提供了一个 OSWritePrivateProfileString 函数,此函数能按 Windows 下配置文件(.INI)的书写格式写入信息。在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。设此应用程序的配置

10、文件为 MyDB.INI,则具体过程如下:Funtion GetINIString$( Byval Fname$ ,Byval szItem$ ,Byval szDeFault$ ) 此自定义子函数实现 INI 文件内设置段内参数的读取 Dim Tmp As String,x As Integer Tmp = String( 2048,32 ) x = OSGetPrivateProfileString(Fname$,szItem$ , szDefault$,Tmp,Len(Tmp) ,“ MyDB.INI “ ) GetINIString = Mid$( Tmp,1,x ) EndFunct

11、ion 以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内 Declare Function OSGetPrivateProfileString% Lib “Kernel“ Alias “GetPrivateProfileString“ (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal ReturnString$, ByVal NumBytes As Integer, ByVal FileName$) Declare Function OSWritePrivateProfileString% Lib “Kernel

12、“ Alias “WritePrivateProfileString“ (ByVal AppName$, ByVal KeyName$, ByVal keydefault$, ByVal FileName$) Declare Function OSGetWindowsDirectory% Lib “Kernel“ Alias “GetWindowsDirectory“ (ByVal a$, ByVal b%) Sub Form1_Load( ) Dim st As String Dim x As Integer Dim tmp As String tmp = String$( 255, 32

13、) INI 文件内为各种数据库格式指明已安装的相应 ISAM 驱动程序 x = OSWritePrivateProfileString(“ Installable ISAMS“, “Paradox 3.X“, “PDX110.DLL“, “MyDB.INI“ ) x = OSWritePrivateProfileString( “Installable ISAMS“, “dBASE III“, “XBS110.DLL“, “MyDB.INI“ ) x = OSWritePrivateProfileString( “Installable ISAMS“, “dBASE IV“, “XBS110.

14、DLL“, “MyDB.INI“ ) x = OSWritePrivateProfileString( “Installable ISAMS“, “FoxPro 2.0“, “XBS110.DLL“, “MyDB.INI“ ) x = OSWritePrivateProfileString( “Installable ISAMS“, “FoxPro 2.5“, “XBS110.DLL“, “MyDB.INI“ ) x = OSWritePrivateProfileString( “Installable ISAMS“, “Btrieve“, “BTRV110.DLL“, “MyDB.INI“

15、) x = OSWritePrivateProfileString( “dBase ISAM“, “Deleted“, “On“, “MyDB.INI“ ) 指明 INI 文件的位置 x = OSGetWindowsDirectory( tmp, 255 ) st = Mid$( tmp, 1, x ) SetDataAccessOption 1, st + “mydb.ini“ 获得 INI 文件一些参数 gwMaxGridRows 5= Val(GetINIString( “ MyDB.INI “ ,“MaxRows“, “250“ ) glQueryTimeout = Val(GetIN

16、IString( “ MyDB.INI “ ,“QueryTimeout“, “5“ ) glLoginTimeout = Val(GetINIString( “ MyDB.INI “ ,“LoginTimeout“, “20“ ) End Sub 三 、数据存取对象变量对外来数据库编程的方法及其实例在 VB 专业版数据库编程的三种方法中,第二种-使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。 它能够在程序中存取 ODBC 2.0 的管理函数;可以控制多种记录集类型:Dynaset,Snapshot 及 Table 记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如 TableDefs,Fields,Indexes 及 QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。由于 VB 中的记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access 数据库中也可以使用数据库存取对象变量的方法。因而 对 Fox

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 学术论文 > 其它学术论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号