首页 VB程序设计_第七部分

VB程序设计_第七部分

举报
开通vip

VB程序设计_第七部分第七章VB数据库编程7.1三种数据库的访问方式作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。7.1.1DAO、RDO、ODBC和ADO在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。DAO:  数据访问对象是MicrosoftJet数据库引擎(最早是给MicrosoftAccess所使用,现在已经支持其它数据库)的面向对象的编程接口,像允许开发者通过ODBC直接连接到其他数据库一样,直接连接到Access表。DA...

VB程序设计_第七部分
第七章VB数据库编程7.1三种数据库的访问方式作为微软旗下一款优秀的RAD工具,VB在数据库应用开发方面的能力十分强大。7.1.1DAO、RDO、ODBC和ADO在VB的开发环境中,可以使用三种数据库访问方式,它们分别是:数据访问对象(DAO)、远程数据对象(RDO)和ADO对象模型。DAO:  数据访问对象是MicrosoftJet数据库引擎(最早是给MicrosoftAccess所使用,现在已经支持其它数据库)的面向对象的编程接口,像允许开发者通过ODBC直接连接到其他数据库一样,直接连接到Access 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 。DAO最适用于单系统应用程序或在小范围本地分布使用。其内部已经对Jet数据库的访问进行了加速优化,而且其使用起来也是很方便的。所以如果数据库是Access数据库且是本地使用的话,建议使用这种访问方式。  VB已经把DAO模型封装成了Data控件,分别设置相应的DatabaseName属性和RecordSource属性就可以将Data控件与数据库中的记录源连接起来了。以后就可以使用Data控件来对数据库进行操作。RDO  RDO(RemoteDataObjects)远程数据对象是一个到ODBC的、面向对象的数据访问接口,它同易于使用的DAOstyle组合在一起,提供了一个接口,形式上展示出所有ODBC的底层功能和灵活性。尽管RDO在很好地访问Jet或ISAM数据库方面受到限制,而且它只能通过现存的ODBC驱动程序来访问关系数据库。但是,RDO已被 证明 住所证明下载场所使用证明下载诊断证明下载住所证明下载爱问住所证明下载爱问 是许多SQLServer、Oracle以及其他大型关系数据库开发者经常选用的最佳接口。RDO提供了用来访问存储过程和复杂结果集的更多和更复杂的对象、属性,以及方法。和DAO一样,在VB中也把其封装为RDO控件了,其使用方法与DAO控件的使用方法完全一样。ODBC  ODBC(OpenDatabaseConnectivity,开放数据库互连)是微软公司开放服务结构(WOSA,WindowsOpenServicesArchitecture)中有关数据库的一个组成部分,它建立了一组规范,并提供了一组对数据库访问的 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 API(应用程序编程接口)。这些API利用SQL来完成其大部分任务。ODBC本身也提供了对SQL语言的支持,用户可以直接将SQL语句送给ODBC。  一个基于ODBC的应用程序对数据库的操作不依赖任何DBMS,不直接与DBMS打交道,所有的数据库操作由对应的DBMS的ODBC驱动程序完成。也就是说,不论是FoxPro、Access还是Oracle数据库,均可用ODBCAPI进行访问。由此可见,ODBC的最大优点是能以统一的方式处理所有的数据库。关于ODBC,有下列几个概念需要了解:ODBC驱动程序。是一些DLL,提供了ODBC和数据库之间的接口。数据源。数据源包含了数据库位置和数据库类型等信息,实际上是一种数据连接的抽象。  ODBC连接目前仅仅限于关系型数据库,对于其他数据源比如EXCEL、文本文件都不能进行访问,而且有很多DBMS(数据库管理系统)都不能充分的支持其所有的功能。相比之下,OLEDB可以存取任何形式的数据,所以其功能是相当的强大,它也指导了目前技术发展的方向。ADO  ADO(ActiveXDataObject)是DAO/RDO的后继产物。ADO2.0在功能上与RDO更相似,而且一般来说,在这两种模型之间有一种相似的映射关系。ADO“扩展”了DAO和RDO所使用的对象模型,这意味着它包含较少的对象、更多的属性、方法(和参数),以及事件。作为最新的数据库访问模式,ADO的使用也是简单易用,所以微软已经明确表示今后把重点放在ADO上,对DAO/RDO不再作升级,所以ADO已经成为了当前数据库开发的主流。ADO涉及的数据存储有DSN(数据源名称)、ODBC(开放式数据连接)以及OLEDB三种方式。后面的例程将详细讲解这三种方式的具体访问实现。  要使用ADO,必须清楚ADO的对象层次结构,其大体上分为以下7个对象层次:  1、Command对象:包含关于某个命令,例如查询字符串、参数定义等的信息。Command对象在功能上和RDO的rdoQuery对象相似。  2、Connection对象:包含关于某个数据提供程序的信息。Connection对象在功能上和RDO的rdoConnection对象是相似的,并且包含了关于结构描述的信息。它还包含某些RDOEnvironment对象的功能,例如transaction控件。  3、Error对象:包含数据提供程序出错时的扩展信息。Error对象在功能上和RDO的rdoError对象相似。4、Field对象:包含记录集中数据的某单个列的信息。Field对象在功能上和RDO的rdoColumn对象相似。5、Parameter对象:包含参数化的Command对象的某单个参数的信息。该Command对象有一个包含其所有Parameter对象的Parameters集合。Parameter对象在功能上和RDO的rdoParameter对象相似。  6、Property对象:包含某个ADO对象的提供程序定义的特征。没有任何等同于该对象的RDO,但DAO有一个相似的对象。  7、Recordset对象:用来存储数据操作返回的记录集。此对象和Connection对象是所有对象最重要的两个对象。  对于初级用户来说,只需要掌握其中的Connection对象和RecordSet对象就可以实现基本的数据库操作,在后面的介绍里面我将给出详细的介绍。下面给出一些开发经验和小技巧,以供参考:经验一:如果数据量不大,而且要求开发周期短的情况,建议使用DAO+Access虽然DAO功能并不强大,但是其对Jet引擎进行了加速优化处理,所以这种搭配应该是比较好的选择。经验二:RDO当前已经用的很少了,一般用ADO来替代。经验三:(本经验很重要)使用ADO开发时,连接数据库的方式有三种(前面已经叙述了),其中DSN需要用户首先使用要将所要操纵的数据库设置为数据库源并给其命名。方法是在控制面板->管理工具->数据源(ODBC)下面进行配置。比如设置的数据源名称为data,那么可以通过下面几行代码来连接数据库:DimconnAsNewADODB.ConnectionDimrsAsNewADODB.Recordset连接数据库conn.Open"dsn=data"'打开数据源(即选定操作的数据对象)rs.OpenSQL语句,conn但是如果是使用ODBC和OLEDB的方式进行连接,那么大家一定知道在连接字符串上那一长串的代码,不要说对于初学者,就是对于那些经验丰富的程序员来说,也很难记住这一串代码。那么如何可以记住这一串代码呢?其实,方法很简单,只要添加一个ADOData控件,然后在其属性框中使用向导进行设置后,那么最后向导就会自动生成一段ConnectionString,只需要将这一行代码拷贝下来然后放到conn.open之后的连接字符串参数的位置上就可以了。这条经验希望读者能够记住,实际开发中很实用。经验四:使用VB在SQL中处理含单引号的字符串时,对字符串数据都用单引号引起来,如:Select*fromMyTableWhereID='FirstID‘程序示例:创建一个DataGrid控件,一个标签,四个单选框,两个按钮。如下图所示:整个程序的功能是用不同的连接方式来显示数据库中的 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 ,其程序代码如下:PrivateSubCommand1_Click()DimselitemAsInteger'判断连接数据库的方式IfOption1.Value=TrueThenselitem=1ElseIfOption2.Value=TrueThenselitem=2ElseIfOption3.Value=TrueThenselitem=3Elseselitem=4EndIfEndIfEndIf'选取不同的数据库连接方式SelectCaseselitemCase1:'使用DAO的数据库连接方式CallShowByDAOCase2:'使用ADO的数据库连接方式CallShowByADOCase3:'使用ODBC的数据库连接方式CallShowByODBCCase4:'使用OLEDB的数据库连接方式CallShowByOLEDBEndSelectEndSubPrivateSubCommand2_Click()EndEndSubPrivateSubShowByDAO()'使用DAO的数据库连接方式DimdbAsDatabaseDimrsAsRecordsetDimsqlstr$'存放查询语句Setdb=OpenDatabase("c:\bookbase.mdb")sqlstr="select*fromstudent"Setrs=db.OpenRecordset(sqlstr)CallGridShow(rs)'显示结果EndSubSubShowByADO()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.Recordset'使用数据源来连接数据库conn.Open"dsn=bookbase"rs.Open"select*fromstudent",connCallGridShowOfADO(rs)EndSubSubShowByODBC()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.Recordset'使用数据源来连接数据库conn.Open"DataSource=bookbase"rs.Open"select*fromstudent",conn'显示结果CallGridShowOfADO(rs)EndSubSubShowByOLEDB()DimconnAsNewADODB.ConnectionDimrsAsNewADODB.Recordset'使用数据源来连接数据库conn.Open"Provider=Microsoft.Jet.OLEDB.4.0;DataSource="+App.Path&"\bookbase.mdb"rs.Open"select*fromstudent",conn'显示结果CallGridShowOfADO(rs)EndSubSubGridShow(rsAsRecordset)'对dao方式进行显示工作MSFlexGrid1.TextMatrix(0,0)="学号"MSFlexGrid1.TextMatrix(0,1)="姓名"MSFlexGrid1.TextMatrix(0,2)="性别"MSFlexGrid1.TextMatrix(0,3)="成绩“rs.MoveLastMSFlexGrid1.Rows=rs.RecordCount+1MSFlexGrid1.Cols=rs.Fields.CountDimi%i=1rs.MoveFirstWhile(Notrs1.EOF)MSFlexGrid1.TextMatrix(i,0)=rs.Fields(0)MSFlexGrid1.TextMatrix(i,1)=rs.Fields(1)MSFlexGrid1.TextMatrix(i,2)=rs.Fields(2)MSFlexGrid1.TextMatrix(i,3)=rs.Fields(3)rs.MoveNexti=i+1WendEndSubSubGridShowOfADO(rsAsADODB.Recordset)'对ado方式进行显示工作MSFlexGrid1.TextMatrix(0,0)="学号"MSFlexGrid1.TextMatrix(0,1)="姓名“MSFlexGrid1.TextMatrix(0,2)="性别"MSFlexGrid1.TextMatrix(0,3)="成绩"'rs.MoveLastMSFlexGrid1.Rows=rs.RecordCount+1MSFlexGrid1.Cols=rs.Fields.CountDimi%i=1rs.MoveFirstWhile(Notrs.EOF)MSFlexGrid1.TextMatrix(i,0)=rs.Fields(0)MSFlexGrid1.TextMatrix(i,1)=rs.Fields(1)MSFlexGrid1.TextMatrix(i,2)=rs.Fields(2)MSFlexGrid1.TextMatrix(i,3)=rs.Fields(3)rs.MoveNexti=i+1WendEndSub注意:以上程序有些错误,需要更正,此任务作为周三上机实验内容,请同学们积极参与研究。Winsock1.SendData“MSG|FromA:FormB,换你了|EOF"DoEventsWinsock1.SendData"Click|"&Index&"|EOF"picDraw2(Index).Picture=LoadPicture(App.Path&"\BallGreen.bmp")picDraw2(Index).Tag="FormA"ForI=0To8picDraw2(I).Enabled=FalseNextConnections=Connections+1EndSub其中,ThedoEventsmethodallowsforpendingWindowsmessagestobeprocessed.PrivateSubpicRefresh()DimIAsIntegerForI=0To8picDraw2(I).Tag=""picDraw2(I).Picture=LoadPicture()picDraw2(I).Enabled=TrueNextConnections=0Text5.Text=""EndSubPrivateSubWinsock1_DataArrival(ByValBytesTotalAsLong)DimstrVarDimIAsInteger,IndexAsIntegerOnErrorGoToErrors:DimsVarAsStringWinsock1.GetDatasVar,vbStringstrVar=Split(sVar,"|")SelectCaseTrim(strVar(0))Case"Click"Index=CInt(strVar(1))ForI=0To8picDraw2(I).Enabled=TrueNextpicDraw2(Index).Picture=LoadPicture(App.Path&"\BallRed.bmp")picDraw2(Index).Tag="FormB"Connections=Connections+1CheckConnectCase"MSG"Text5.Text=strVar(1)&vbCrLf&Text5.TextCase"ReFresh"picRefreshEndSelectErrors:EndSubPrivateSubCheckConnect()DimIAsInteger'判断纵/横向是否已经连线ForI=0To2IfpicDraw2(I*3).Tag="FormB"AndpicDraw2(I*3+1).Tag="FormB"AndpicDraw2(I*3+2).Tag="FormB"ThenGoToGoReFreshIfpicDraw2(I).Tag="FormB"AndpicDraw2(I+3).Tag="FormB"AndpicDraw2(I+6).Tag="FormB"ThenGoToGoReFreshNext'判断左上到右下是否已经连线IfpicDraw2(0).Tag="FormB"AndpicDraw2(4).Tag="FormB"And_picDraw2(8).Tag="FormB"ThenGoToGoReFresh‘判断右上到左下是否已经连线IfpicDraw2(2).Tag="FormB"AndpicDraw2(4).Tag="FormB"And_picDraw2(6).Tag="FormB"ThenGoToGoReFreshIfConnections=9ThenMsgBox"棋盘结束,不分输赢",vbInformation,"结束比赛“GoToGoEndEndIfExitSubGoReFresh:MsgBox"FormA您已经输了",vbInformation,"输了"GoEnd:picRefreshWinsock1.SendData"ReFresh|ALL|EOF"EndSub问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 :1.关于被控制端,需要改动哪些部分?2.主控制端和被控制端有什么质的区别么?
本文档为【VB程序设计_第七部分】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
男男
暂无简介~
格式:ppt
大小:172KB
软件:PowerPoint
页数:21
分类:
上传时间:2022-11-15
浏览量:0