下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
在VB中进行数据库记录的查询操作,必需根据打开数据库的方式来确定。以VB3.0为例,数据集对象有Table、Dynaset、Snapshot三种,下面四种查询方法分别适用于以上面不同的对象方式打开的数据库。用SEEK方法查询。这种方法只使用于以Opentable方式打开的Table类型的数据表,而且在查询之前必须要以查询字段建立索引文件,由于已建立了索引文件,所以查询速度很快,这种方式的查询结果是将指针移到符合条件的第一个记录。例如:settb=db.opentable("demo")tb.index="nameindex”tb.seek"=","张三”用FILTER属性查询。Filter属性是Dynaset和Snapshot对象才具备的,所以也只能适用于这两者,不能用于Table0Filter是用来过滤数据的,只要我们给定过滤条件就可以将所需的记录筛选出来。需要说明的是,我们需要将以Filter属性筛选出来的数据集打开才能对其操作。例如:setdy1=db.createDynaset("demo”)dy1.filter=”姓名like’刘*’”setdy2=dy1.createDynaset()3.用FIND方法查询。FIND适用于Dynaset和Snapshot对象,有Findfirst和Findnext两个方法,每次查询到一个记录。例如:setdy=db.createDynaset(”demo”:)、=”工资>160and姓名like’刘火’”dy.findfirstsdy.findnexts4.用SQL查询。SQL是一种结构化数据查询语言,SQL也只能适用Dynaset和Snapshot数据集对象,这种方法是根据SQL条件生成一个数据集对象。例如:s="select*fromdemowhere姓名like’刘*’”setdy=db.createDynaset(s)〖注〗:本文中的db为数据库对象,打开方式为:例如:setdb=OpenDatabase(”C:\VB\SAMPLE.MDB”)。谈谈VB的数据库编程方式成都郑剑敏VB全称VisualBasic,是微软公司推出的基于Basic语言的可视化编程环境,以其简单易学功能强大而倍受广大电脑爱好者的青睐。VB的数据库编程方面按其难易程度可分为三类(由易到难);•使用数据库控制项和绑定控制项•使用数据库对象变量进行编程•直接调用ODBC2.0API在使用VB进行数据库编程时,通常,会首先选择三种基本方法之一来进行数据库应用程序的方案设计,现在就将以上三种设计方法的适应范围及其优缺点进行一个比较。1使用数据库控制项和绑定控制项1.1优点它是三种方法中编码量最小的不必了解CDBC2.0API的细节允许使用标准的和第三方厂商制订的控制项简化了错误处理支持所有的动态集方法及属性1.2缺点不能存取快照对象(snapshop)对象或表格对象(都属于记录集对象)不能存取数据库集合,比如表定义(TableDefs)字段(Fieds),索引(Indexes)及查询定义(QueryDefs)只能存取部分ODBC2.0管理函数不能进行真正的事务处理有限的错误诊断功能1.3应用对中小规模的数据库表(通常少于一千条记录)只进行简章的浏览操作基本SQL查询所对应的结果集长度有限(通常结果集的记录数小于一百,这些记录从一个或两个长度有限的表中检索出来)应用程序的数据输入/输出项较少(通常只涉及一个或两个长度有限的表、并且表中的字段数在10个左右且不具有关系完整性限制2使用数据库对象变量进行编程2.1优点可以在程序中存取ODBC2.0的管理函数可以控制多种记录集类型:Dynaset、Snapshop及Table记录集合对象可以存取存储过程和查询动作可以存取数据库集合对象,例如TableDefs、Fields、Indexes及QueryDefs具有真正的事务处理能力,包括启动事务(Begintrans)、提交事务(CommitTrans^回滚事务(Rollback)缺点比使用数据控制项的方法编码量较大只能进行间接的错误处理和错误恢复对每个数据库操作没有细粒度的控制对结果集和包含结果集的内丰资源的操作受到限制同直接使用ODBC2.0API函数的方法相比性能较低应用应用程序需要在执行期间动态地建立表、字段及索引应用程序涉及同步更新几张表(但在逻辑上保持一致性)的复杂事务应用程序使用结果集而不是Dynaset的窗体(FORMS),例如Snapshots或Tables,这里是设计要考虑的关键应用程序的表非常大,多于1000条记录应用程序具有复杂的数据输入/输出项,它涉及许多内部相关的字段并且包括数据库参照完整性或一致性规则应用程序需要执行一些额外的操作和对结果集的查询后处理,尤其是需要很高的数据格式化显示应用程序需要利用复杂的ODBC管理功能以选择、配置、校验及建立各种数据源应用程序需要在执行期间“显示”数据库的基本结构应用程序需要使用复杂的多码索引方式来检索或更新记录3直接调用ODBC2.0API3.1优点可以直接参与结果集的开发、管理及规范化对结果集游标提供了更多的控制,并且提供了更多的游标类型和执行动作能够确定ODBC驱动程序及SQL的一致性级别可以更好地控制Windows的执行调度及资源利用其他方面同其他方法差不多,因此这种方法很可能具有最好的性能3.2缺点较其他两种方法需要大量的代码代码复杂并且要求程序员具有编制API调用的经验在网络上VisualBasic运行期间库的错误处理缺乏安全性,因此代码运行期间出现的错误所造成的后果会非常严重3.3应用如果系统环境为客户机/服务器模式下的大规模多用户环境,那么应用程序必须都能够准确地解决可能出现的系统错误和失败应用程序强调资源使用,这里如何对内存、网络服务器资源进行直接控制是首要的考虑因素应用程序使用超大规模数据库,例如数据库表可能包含几万或几十万条记录VB访问数据库方法简介南京河海大学陈鹏VisualBasic(简称VB)是一种可视化的、事件驱动型的Windows应用程序开发工具,它在GUI设计、绘图、制表、运算、通信和多媒体开发方面都具有简单易行、功能强大等优点,所以越来越受到开发人员的亲睐。同时,VB在数据库开发方面也具有Foxpro所远不能及的强大功能。VB能够读取和访问Access、Excel、DbaseX、Foxpro、Btrieve和ODBC等多种数据库,并能利用VB自身所带的数据库引擎创建Access数据库。所以VB在管理信息系统(MIS)的开发和建设方面得到了是益广泛的应用。现在,笔者就VB应用数据库的一些方法作一简单的介绍。VB访问数据库通常有三种途径:第一,通过数据库控制控件DataControl访问;第二,通过VB提供的数据库对象变量编程访问;第三,通过ODBC接口访问ODBCAPI函数。在这三种方法中,第一种方法操作起来最方便、灵活、易于掌握,同时也最能体现VisualBasic面向对象的特色,故这里以Foxpro2.5的数据库为例,介绍数据库控制控件(DataControl)访问数据库的方法与步骤:一、在Form窗口中加入DataControl控件用鼠标在工具窗口的DataControl控件按钮上双击左键,该对象即出现在Form窗口的中间(控件名为Datal),用鼠标调整好控件的大小及位置。如工具箱中无此控件,可打开主菜单的Tools/Custom,在列表中选中MicrosoftDataControl复选框,确认后即可将此控件加入到工具箱中去。二、设置联接库用鼠标单击Datal,按下F4,打开属性窗口,设置Connect属性为Foxpro2.5,设置DatabaseName为c:\foxprow\student.dbf(假设磁盘上已有这个文件)。三、加入字段显示、编辑控件(数据库捆绑控件)在Form窗口中加入DGrid控件,如不在此控件,可打开主菜单Tools/Custom,在列表中选择ApexDataBroundGrid复选框,确认后即可向工具箱中加入此控件。在Form窗口中单击选中此控件(DGridl),按下F4打开属性窗口,设置Datasource属性为Datal,在Form窗口中用鼠标右键单击控件DGridl,选择RetrieveFields;再用鼠标右键单击控件DGridl,选择Edit,用鼠标调整控件及有关字段大小;再用鼠标右键单击控件DGridl,选择Properties(属性),在弹出窗口中,选择Colums标签,在下拉列表中选Columl,将Caption属性改为“学号”,选择Colum2,Caption属性改为“姓名”,选择Colum3、4将Caption属性改为“性别”、“专业”,按下“确定”按钮。再向Form窗口中加入一个按钮控件,将Caption属性设置为“退出”,双击该控件(Command!),在代码窗口中写入“END”,存盘。此时,一个具备数据库读写、浏览功能的应用程序就建立了,按下F5运行,通过单击Data!的各按钮即可看出当前记录的变化情况。在此基础上,我们还可以借助数据库控制控件的有关属性和方法进行更灵活的操作和控制。1、设置Data1.Visiable=False’将控件设为不可见2、将按钮Command2,3,4,5,6,7的Caption属性分别设置为“追加”、“首记录”、“上一条”、“下一条”、“尾记录”、“删除”,双击各按钮,分别写入事件代码:SubCommand1-Click()’关闭应用程序EndEndSubSubCommand2-Click()’追加记录Datal.Recordset.AddnewDatal.Recordset.UpdateDatal.Recordset.MoveLastEndSubSubCommand3-Click()’移向首记录Data1.Recordset.MoveFirstEndSubSubCommand4-Click()’移向上一条记录Datal.Recordset.MovePreviusIfDatal.Recordset.BofThenDatal.Recordset.MoveFirstEndIfEndSubSubCommand3-Click()’移向尾记录Datal.Recordset.MoveLastEndSubSubCommand4-Click()’移向下一条记录Datal.Recordset.MoveNextIfDatal.Recordset.EofThenDatal.Recordset.MoveLastEndIfEndSub除此之外,数据库控制控件还有Bookmark、RecordCount等许多属性与方法,能对数据库进行各种方便的操作。由此可见,数据库控制控件具有数据库操作方面的强大功能。另外,数据库控制控件的RecordSource属性可用一个SQL语句赋值,以此来有效地调用SQL语句,从而发挥SELECT语句强大的功能,更使数据库控制控件(DataControl)锦上添花。真正删除数据库的记录大家知道,缺省情况下,VB删除记录只是把记录作上个删除标志而已,并没有真正删除。要真正删除记录,你可以使用VB提供的以下方法:BeginTrans、CommitTrans、RollBack。其中,BeginTrans方法开始记录数据库的变动,CommitTrans方法确认数据库的变动,而RollBack方法则可以恢复被删除或修改的记录。它们可以嵌套使用。因此,要恢复被删除的记录,应该在使用BeginTrans方法之后及使用CommiTrans方法之前使用RollBack方法。不用DATA控件操作数据库文件大家知道,在VB中如果使用DATA控件访问数据库,那么程序执行就必须要一些大型DLL支持。这对于安装盘的发放是一个大问题。那么,在VB中能不能不用DATA控件访问数据库呢?在VB中不用DATA控件而访问数据库,只有一法:将数据库文件当成2进制文件打开。但此法最大困难就是你必须了解数据库文件的结构形式。比如:FoxBase的DBF文件(我不了解其它数据库的文件结构,大家可以去查查)它由记录头和记录构成。而记录头又由两部分构成:记录头=数据库说明+字段说明。下面列出FoxBase数据库说明:FoxBase数据库说明起始地址字节数含义11FoxBase数据库文件标志2-43最后一次修改日期,3个字节分别为年、月、日5-84文件记录总数9-102记录头长度11-122每个记录长度13-2220未使用下面列出字段说明,每个字段由32个字节构成。字段说明起始地址字节数含义1-1111字段名称121字段类型(分别为C、N、D、L等)13-164该字段在文件中地址1字段长度1小数位数19-3214未使用知道了字段信息说明,就可以使用复合变量+2进制文件来操作数据库了。Text转换为AccessMDBText文件类型在很多软件中都为一般应用程序与数据库之间架起一座桥梁。你可以使用TextISAM驱动程序和SQL来把Text文件转换成AccessMDB数据库文件,首先,为文本文件创建一个SCHEMA.INI文件。然后,你可以使用下面的代码来实现转换:DimdbAsDatabase,tblasTableDefSetdb=DBEngine.CreateDatabase(App.Path&"\mymdb.mdb",dbLangGeneral,dbVersion_0)Settbl=db.CreateTableDef("Temp")tbl.Connect="Text;database=c:\vbpj\data"tbl.SourceTableName="Customer#txt"db.TableDefs.Appendtbldb.Execute"SelectTemp.*intoNewTablefromTemp"db.TableDefs.Deletetbl.Namedb.CloseSettbl=NothingSetdb=Nothing锁住数据库中的表把表达式True=False放到表的ValidationRule属性就能锁上。HardLockTable?实现了该功能。声明PublicMyDBAsDatabaseDimDummyAsInteger函数FunctionHardLockTable(ByValwhichActionAsString,?ByValaTableAsString)AsIntegerOnErrorGoToHardLockTableErrorHardLockTable=TrueSelectCasewhichActionCase"Lock"MyDB.TableDefs(aTable).VilidationRule="True=False"MyDB.TableDefs(aTable).VdidationText=?"Thistablelockedvia"&?"ValidationRuleon"&NowCase"UnLock"MyDB.TableDefs(aTable).VdidationRule=""MyDB.TableDefs(aTable).VdidationText=""Case"TestThenUnLock"IfMyDB.TableDefs(aTable).ValidationRule="True=False"ThenMyDB.TableDefs(aTable).VdidationRule=""MyDB.TableDefs(aTable).VdidationText=""EndIfEndSelectHardLockTableErrorExit:'subFlushDBEngine'optional,seenextsuggestionExitFunctionHardLockTableError:HardLockTable=FalseMsgBoxError$&"error"&"inHardLockTabletrying"&"to"&whichAction&""&aTableResumeHardLockTableErrorExitEndFunction使用例子'上锁Dummy=HardLockTable("Lock","TestTable")'开锁Dummy=HardLockTable("UnLock","TestTable")关闭所有的数据连接如果在代码中使用了数据控件如DAO,RDO,或ADO,在退出时应该关闭所有打开的recordset,database,和workspace。虽然对象能自动注销,但是数据连接不会马上断开,可能会导致一些内存不能被系统重新分配。下面的代码可以关闭所有打开的DAOworkspace,并释放所占的内存。PrivateSubForm_Unload(CancelAsInteger)OnErrorResumeNext'DimwsAsWorkspaceDimdbAsDatabaseDimrsAsRecordset'ForEachwsInWorkspacesForEachdbInws.DatabasesForEachrsIndb.Recordsetsrs.CloseSetrs=NothingNextdb.CloseSetdb=NothingNextws.CloseSetws=NothingNext'EndSub如何删除FoxPro数据库的数据?用VB对FOXPRO数据库操作,经常会遇到这样一个问题:只能对记录进行DEL,也就是在该条记录上打一个删除标记,但不能象在数据库中那样,用"PACK"把这条记录真正删除.当记录数较多时,用DBGRID等控件做的程序都会出错.该怎样办呢?其实,VB中无法对DBF文件进行PACK。只能把ISAM的设置Deleted设为On。这样相当于FoxPro的SETDELETEDON。不信你可以试一试。VB应用小集访问VB外来数据库VB最引人注目的特点,也是其最令程序员关心的地方,就是它访问多种数据库的强大功能。VB中将非MSAccess数据库称为外来数据库(ExternalDatabase),如dBASE、FoxPro>ODBC等。VB中使用数据控制访问外来数据库同访问Access数据库类似,这里不再赘述,现在主要读一下用生成对象的方法来访问外来数据库。访问外来数据库((以dBASE为例)大致分为以下几步:第一步:建立一个Access型数据库,并在数据库中创建新表一即为附加表。通过设置附加表的各属性值,使其与你所要访问的数据库建立链接关系。程序代码如下:DimDbasDatabaseDimTdasNewTabledefSetDb=OpenDatabase("MYDB.MDB")Td.Connect="dBASE:DATABASE=c:\DATADIR”Td.SourceTableName="AUTHOR"Td.Name="dBASEAuthorTa
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年可调单夹项目可行性研究报告
- 2025至2030年中国无石棉无金属刹车片数据监测研究报告
- 2025年雪橇项目可行性研究报告
- 技术变革推动下的农村建筑墙材市场变革分析
- 多模态成像融合-深度研究
- 设计院门窗改造合同协议
- 陪护人员居间服务合同
- 少年励志故事的成长启示
- 2025年顶吹风式一体机 行业深度研究分析报告
- 外用制剂项目融资计划书
- 城市基础设施修缮工程的重点与应对措施
- GB 12710-2024焦化安全规范
- 【牛客网】2024秋季校园招聘白皮书
- 2024-2025银行对公业务场景金融创新报告
- 2025届郑州市高三一诊考试英语试卷含解析
- 《我国个人所得税制下税收征管问题研究》
- 肿瘤中医治疗及调养
- 组长竞选课件教学课件
- 2022年公务员多省联考《申论》真题(辽宁A卷)及答案解析
- 北师大版四年级下册数学第一单元测试卷带答案
- 术后肺炎预防和控制专家共识解读课件
评论
0/150
提交评论