电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 站长之家-> Alexa排名
非access数据库在vb中的编程及应用_visualbasic教程
作者:网友供稿 点击:0
  西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!虚拟主机可在线rar解压,自动数据恢复设置虚拟目录等.虚拟主机免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金!
文章页数:[1] 
摘要VisualBasic有着强大的数据库存取能力,不仅能够直接支持MsAccess数据库,而且通过其内部安装的ISAM驱动程序使它能间接支持FoxPro、dBASE等外来数据库。本文不仅从VB数据库体系结构的角度探讨了VB对这些外来数据库的支持,还结合了一些实例具体阐述了使用数据库存取对象变量的方法实现这些外来数据库的新建、库结构修改、显示及其运行环境设置。关键词VisualBasicAccess外来数据库数据库存取对象变量库结构 作为一个功能较完备的Windows软件开发平台,VisualBasic专业版提供了对数据库应用的强大支持。尤其提供了使用数据控件和绑定控制项,使用数据库存取对象变量(DataAccessObjectVariable),直接调用ODBC2.0API接口函数等三种访问数据库的方法。对其标准内置的MsAccess数据库,它可以提供不弱于专业数据库软件的支持,可以进行完整的数据库维护、操作及其事务处理。在VB中,将非Access数据库称为外来数据库。对于FoxPro、dBASE、Paradox等外来数据库。虽然借助VB的DataManager能够对这些数据库进行NEW、OPEN、DESIGN、DELETE等操作,但在应用程序的运行状态中并不能从底层真正实现这些功能。本文从使用数据库存取对象变量的方法出发,实现了非Access格式数据库(以FoxPro数据库为例)的建新库、拷贝数据库结构、动态调入等操作,阐述了从编程技巧上弥补VB对这些外来数据库支持不足的可行性。

一、VB数据库的体系结构具体的VB的数据库结构请先看下图。可见VB数据库的核心结构是所谓的MicroSoftJET数据库引擎,JET引擎的作用就像是一块“面板”,在其上可以插入多种ISAM(IndexedSequentialAccessMethod,即索引顺序存取方法)数据驱动程序。JET引擎为Access格式数据库提供了直接的内部(build-in)支持,这就是VB对Access数据库具有丰富支持的真正原因。VB专业版中提供了FoxPro、dBASE(或Xbase)、Paradox、Btrieve等数据库的ISAM驱动程序,这就使得VB能支持这些数据库格式。另外,其他的许多兼容ISAM的驱动程序也可以通过从厂商的售后服务得到。因而从理论上说,VB能支持所有兼容ISAM的数据库格式(前提是只需获得这些数据库的ISAM驱动接口程序)。由上可见,MsJET引擎实质上提供了:一个符合ANSI标准的语法分析器;为查询结果集的使用而提供的内存管理功能;同所支持的数据库的外部接口;为应用代码提供的内部接口。实际上,在VB中从一种数据库类型转化为另一种数据库类型几乎不需要或只需要很少的代码修改。而且,尽管dBASE、Paradox本身的DDL(DataDefinitionLanguage,即数据定义语言)和DML(DataManipulationLanguage,即数据操纵语言)是非结构化查询的,但它们仍然可以使用VB的SQL语句和JET引擎来操纵。从VB的程序代码的角度来看,ODBC,ISAM驱动程序以及MsAccess数据库的整个外部结构够可以统一为一个一致的编程接口。也即是说,提供给VB应用程序员的记录集对象视图同所使用的数据库格式及类型是相互独立的。即对FoxPro等数据库仍然可以使用众多的数据库存取对象变量,这就为非Access数据库的访问提供了最重要的方法。

二、使用非Access数据库时的参数设置及配置文件的参数读取如果在VB的程序中使用了数据库的操作,将应用程序生成EXE文件或打包生成安装程序后,则必须提供一个配置(.INI)文件,在INI文件中可以对不同类型的数据库进行设置。如果找不到这个INI文件,将会导致不能访问数据库。通常情况下,INI文件的文件名和应用程序的名称相同,所以如果没有指明,VB的程序会在Windows子目录中去找和应用程序同名的INI文件。可以使用VB中的SetDataAccessOptions语句来设置INI文件。SetDataAccessOptions语句的用法如下:SetDataAccessOptions1,IniFileName其中IniFileName参数指明的是INI文件的带路径的文件名。值得注意的是,当应用程序找不到这个INI文件时,或在调用OpenDataBase函数时对其Connect参数值没有设定为VB规定的标准值,如对FoxPro2.5格式设定为了“FoxPro;”(应为“FoxPro2.5;”),或者没有安装相应的ISAM驱动程序,则此时VB会显示一条错误信息“NotFoundInstallableISAM”。通常,INI文件在应用程序分发出去以前已经生成,或者在安装时动态生成,也可以在应用程序中自己生成。通常这种INI文件中有“[Options]”、“[ISAM]”、“[InstalledISAMs]”、“[FoxProISAM]”、“[dBASEISAM]”、“[ParadoxISAM]”等设置段,对于一个完整的应用程序则还应有一个属于应用程序自己的设置段如“[MyDB]”。可在其中设置DataType、Server、DataBase、OpenOnStartup、DisplaySQL、QueryTimeOut等较为重要的数据库参数,并以此限定应用程序一般的运行环境。WindowsAPI接口函数在Kernel.exe动态链接库中提供了一个OSWritePrivateProfileString函数,此函数能按Windows下配置文件(.INI)的书写格式写入信息。在通常情况下,应用程序还需要在运行时读取配置文件内相关项的参数。比如PageTimeOut(页加锁超时时限)、MaxBufferSize(缓冲区大小)、LockRetry(加锁失败时重试次数)等参数,通过对这些参数的读取对应用程序运行环境的设定、潜在错误的捕获等均会有很大的改善。设此应用程序的配置文件为MyDB.INI,则具体过程如下:
FuntionGetINIString$(ByvalFname$,ByvalszItem$,ByvalszDeFault$)此自定义子函数实现INI文件内设置段内参数的读取
DimTmpAsString,xAsInteger
Tmp=String(2048,32)
x=OSGetPrivateProfileString(Fname$,szItem$,szDefault$,Tmp,Len(Tmp),“MyDB.INI”)
GetINIString=Mid$(Tmp,1,x)
EndFunction

以下这些函数的声明可写在模块文件内,且每个函数的声明必须在一行内
DeclareFunctionOSGetPrivateProfileStringLib"Kernel"Alias"GetPrivateProfileString"(ByValAppName$,ByValKeyName$,ByValkeydefault$,ByValReturnString$,ByValNumBytesAsInteger,ByValFileName$)
DeclareFunctionOSWritePrivateProfileStringLib"Kernel"Alias"WritePrivateProfileString"(ByValAppName$,ByValKeyName$,ByValkeydefault$,ByValFileName$)DeclareFunctionOSGetWindowsDirectoryLib"Kernel"Alias"GetWindowsDirectory"(ByVala$,ByValb)SubForm1_Load()

DimstAsString
DimxAsInteger
DimtmpAsString
tmp=String$(255,32)在INI文件内为各种数据库格式指明已安装的相应ISAM驱动程序
x=OSWritePrivateProfileString("InstallableISAMS","Paradox3.X","PDX110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("InstallableISAMS","dBASEIII","XBS110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("InstallableISAMS","dBASEIV","XBS110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("InstallableISAMS","FoxPro2.0","XBS110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("InstallableISAMS","FoxPro2.5","XBS110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("InstallableISAMS","Btrieve","BTRV110.DLL","MyDB.INI")
x=OSWritePrivateProfileString("dBaseISAM","Deleted","On","MyDB.INI")指明INI文件的位置
x=OSGetWindowsDirectory(tmp,255)
st=Mid$(tmp,1,x)SetDataAccessOption1,st "\mydb.ini"获得INI文件一些参数
gwMaxGridRows=Val(GetINIString(“MyDB.INI”,"MaxRows","250"))
glQueryTimeout=Val(GetINIString(“MyDB.INI”,"QueryTimeout","5"))
glLoginTimeout=Val(GetINIString(“MyDB.INI”,"LoginTimeout","20"))
EndSub

三、数据存取对象变量对外来数据库编程的方法及其实例在VB专业版数据库编程的三种方法中,第二种—使用数据库存取对象变量(DAO)的方法最具有功能强大、灵活的特点。它能够在程序中存取ODBC2.0的管理函数;可以控制多种记录集类型:Dynaset,Snapshot及Table记录集合对象;可以存储过程和查询动作;可以存取数据库集合对象,例如TableDefs,Fields,Indexes及QueryDefs;具有真正的事物处理能力。因而,这种方法对数据库处理的大多数情况都非常适用。由于VB中的记录集对象与所使用的数据库格式及类型是相互独立的,所以在非Access数据库中也可以使用数据库存取对象变量的方法。因而对FoxPro等外来数据库而言,使用数据库存取对象变量的方法同样也是一种最佳的选择。有一点需要注意的是,VB的标准版中仅能使用数据控件(DataControl)对数据库中的记录进行访问,主要的数据库存取对象中也仅有Database、Dynaset对象可通过数据控件的属性提供,其它的重要对象如TableDef、Field、Index、QueryDef、Snapshot、Table等均不能在VB的标准版中生成,所以使用数据存取对象变量的方法只能用VB3.0以上的专业版。
(一)、非Access数据库的新建及库结构的修改VB专业版中的数据库存取对象变量可以分为两类,一类用于数据库结构的维护和管理,另一类用于数据的存取。其中表示数据库结构时可以使用下面的对象:
DataBase、TableDef、Field、Index,以及三个集合(Collection):TableDefs、Fields和Indexes。
每一个集合都是由若干个对象组成的,这些数据对象的集合可以完全看作是一个数组,并按数组的方法来调用。一旦数据库对象建立后,就可以用它对数据库的结构进行修改和数据处理。对于非Access数据库,大部分都是对应于一个目录,所以可以使用VB的MkDir语句先生成一个目录,亦即新建一个数据库。而每一个非Access数据库文件可看作是此目录下的一个数据表(Table),但实际上它们是互相独立的。下面是新建一个FoxPro2.5格式数据库的程序实例。
SubCreateNew()
DimDb1Asdatabase,TdAsTableDefs
DimT1AsNewTabledef,F1AsNewField,F2AsNewField,F3AsNewField
DimIx1AsNewIndex
DimPathAsString
ConstDB_TEXT=10,DB_INTEGER=3ChDir"\"
Path$=InputBox("请输入新路径名:","输入对话框")
MkDirPath$新建一个子目录
SetDb1=OpenDatabase(Path$,True,False,"FoxPro2.5;")
SetTd=Db1.TableDefs
T1.Name="MyDB"新建一个数据表,数据表名为MyDB
F1.Name="Name",F1.Type=DB_TEXT,F1.Size=20F2.Name="Class",F2.Type=DB_TEXT,F2.Size=20F3.Name="Grade",F3.Type=DB_INTEGERT1.Fields.AppendF1向数据表中添加这些字段
T1.Fields.AppendF2->


文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·vb从零开始编外挂(二)_visualbasic教程
·photoshop基础教程:跟我学调色练习13-浪漫暖色调_photoshop教程
·photoshop基础教程:跟我学调色练习11-过度曝光艺术效果_photoshop教程
·用photoshop为美女打造靓丽烫发效果_photoshop教程
·photoshop简单方法绘光滑可爱的小球炸弹_photoshop教程
·photoshop简单表现大光圈造朦胧背景_photoshop教程
·photoshop打造水城威尼斯水中倩影_photoshop教程
·photoshop把漂亮mm照片变成画像_photoshop教程
·图案填充_autocad教程
·属性的编辑_autocad教程

最新文章
·alexa:戏曲性地调整_alexa排名
·alexa排名的影响因素_alexa排名
·alexa排名全新机制详解_alexa排名
·alexa排名对新闻类网站的参考作用_alexa排名
·提高alexa排名的九个方法_alexa排名
·265步hao123后尘被清空数据,谁来代替alexa排名?_alexa排名
·hao123 alexa排名恢复仅仅是暂时的_alexa排名
·alexa部分国内被清零的数据被调整,hao123重现_alexa排名
·对alexa世界排名作弊方法的分析_alexa排名
·网站alexa排名下降的原因及解决方案_alexa排名


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号