VB数据库ADO对象模型详解.ppt

上传人:za****8 文档编号:12668101 上传时间:2020-05-13 格式:PPT 页数:163 大小:2.55MB
返回 下载 相关 举报
VB数据库ADO对象模型详解.ppt_第1页
第1页 / 共163页
VB数据库ADO对象模型详解.ppt_第2页
第2页 / 共163页
VB数据库ADO对象模型详解.ppt_第3页
第3页 / 共163页
点击查看更多>>
资源描述
,1ADO对象模型ADO(ActiveXDataObject)活动数据访问接口是Microsoft处理数据库信息的最新技术。采用OLEDB的数据访问模式,是数据访问对象DAO、远程数据对象RDO和开放数据库互连ODBC三种方式的扩展。OLE对象链接使能,具有链接和嵌入对象的功能。ADO对象模型定义了一个可编程的分层对象集合,主要由三个对象成员Connection、Command和Recordset对象,以及几个集合对象Errors、Parameters和Fields等所组成。,6.5ADO数据控件,6.5ADO数据控件,图6.13ADO对象模型,6.5ADO数据控件,6.5ADO数据控件,2使用ADO数据控件使用ADO数据控件,必须先通过工程|部件菜单命令选项。,6.5ADO数据控件,选择MicrosoftADODataControl6.0(OLEDB),将ADO数据控件添加到工具箱,在窗体中使用ADO数据控件的方式与Data控件相似,使用ADO数据控件的基本属性,可以快速地创建与数据库的连接。,在程序中使用ADO对象,必须先为当前工程引用ADO的对象库。引用方式是执行工程菜单的引用命令,启动引用对话框,在清单中选取MicrosoftActiveXDataObjects2.0Library选项。,6.5ADO数据控件,进入,1)ADO数据控件的基本属性ConnectionString属性ADO控件没有DatabaseName属性,它使用ConnectionString属性与数据库建立连接。该属性包含了用于与数据源建立连接的相关信息。,6.5ADO数据控件,6.5ADO数据控件,RecordSource属性该属性确定可访问的数据,这些数据构成记录集对象Recordset。该属性值可以是数据库中单个表名、一个存储查询或者是使用SQL查询语言的查询字符串。,ConnectionTimeout属性用于数据连接的超时设置,若在指定时间内连接不成功显示超时信息。MaxRecords属性定义从一个查询中最多能返回的记录数。,6.5ADO数据控件,2)ADO数据控件的方法和事件ADO数据控件的方法和事件与Data控件的方法和事件完全一样。3)设置ADO数据控件的属性下面通过使用ADO数据控件连接Student.mdb数据库来说明ADO数据控件属性的设置。,6.5ADO数据控件,步骤1:在窗体上放置ADO数据控件,控件名采用默认名Adodcl。,6.5ADO数据控件,步骤2:在ADO控件按鼠标右键,选择ADO属性时,弹出属性页对话框。,6.5ADO数据控件,允许通过三种不同的方式连接数据源,表示通过一个连接文件来完成,使用ODBC数据资源名称可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制,通过选项设置自动产生连接字符串,步骤3:采用使用连接字符串方式连接数据源。,6.5ADO数据控件,单击生成按钮,打开数据链接属性对话框,步骤3:采用使用连接字符串方式连接数据源。,6.5ADO数据控件,在提供程序选项内选择一个合适的OLEDB数据源,Student.mdb是Access数据库,选择MicrosoftJet3.51OLEDBProvider选项。,单击下步按钮,步骤3:采用使用连接字符串方式连接数据源。,6.5ADO数据控件,在连接选项内,指定数据库文件,Student.mdb,为保证连接有效,可单击连接选项卡右下方的测试连接按钮,如果测试成功则关闭数据链接属性页,步骤4:在记录源属性页对话框。,6.5ADO数据控件,在命令类型下拉列表框中选择2adCmdTable选项,在表或存储过程名称下拉式列表框中选择Student.mdb数据库中的基本情况表,完成ADO数据控件的连接工作。,进入,3ADO数据控件上新增绑定控件的使用和ADO数据控件的绑定控件属性主要包括:DataSource,DataField,DataMember,DataFormatDataSource和DataField的连接功能增强了;DataMember属性允许处理多个数据集,从数据供应程序提供的几个数据成员中返回或设置一个特定的数据成员;DataFormat属性用于指定数据内容的显示格式。,6.5ADO数据控件,6.5ADO数据控件,例6.6使用ADO数据控件和DataGrid数据网格控件浏览数据库Student.mdb,并使之具有编辑功能。下图为具有增、删、改功能的数据网格绑定。,6.5ADO数据控件,标有号的记录行表示允许增加新记录,进入,DataGrid控件使用方法:需通过工程|部件菜单命令选择DataGrid控件,,6.5ADO数据控件,将DataGrid控件添加到工具箱,DataGrid控件使用方法:将DataGrid控件放置到窗体上。设置DataGrid网格控件的DataSource属性为Adodc1,实现DataGrid1绑定到数据控件Adodc1。,6.5ADO数据控件,DataGrid控件允许用户同时浏览或修改多个记录的数据。,6.5ADO数据控件,AllowAddNew(增)AllowDelete(删)AllowUpdate(改),修改功能通过DataGrid属性设置实现,可以设置的属性为:,进入,添加DataGrid网格上显示的字段,可用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择检索字段选项。VisualBasic提示是否替换现有的网格布局,单击是按钮就可将表中的字段装载到DataGrid控件中。,6.5ADO数据控件,用鼠标右键单击DataGrid控件,在弹出的快捷菜单中选择编辑选项,进入数据网格字段布局的编辑状态,此时,当鼠标指在字段名上时,鼠标指针变成黑色向下箭头。,6.5ADO数据控件,在该窗体点击鼠标右键,选择属性选项,可修改字段标题或字段的显示宽度。,进入,必须使用ADO数据控件进行绑定的控件:,6.5ADO数据控件,DataList控件DataSource,DataFiledRowSource,ListFiled,必须使用ADO数据控件进行绑定的控件:,6.5ADO数据控件,DataCombo控件DataSource,DataFiledRowSource,ListFiled,必须使用ADO数据控件进行绑定的控件:,6.5ADO数据控件,DataReport控件,在“工程”菜单上,单击“添加DataEnviroment”向工程中添加设计器。如果设计器没有在工程菜单上列出,则单击部件。单击设计器选项卡。并单击数据环境把设计器添加到菜单上。,6.5ADO数据控件,DataReport控件,点击鼠标右键,出现菜单,选择属性,出现数据链接属性对话框,选择MicrosoftJet3.51OLEDBProvider,这是为访问Jet数据库选择正确的OLEDB提供商,单击下一步,6.5ADO数据控件,DataReport控件,指定数据库,测试连接,6.5ADO数据控件,DataReport控件,点击鼠标右键,出现菜单,选择添加子命令,出现Command属性页,选择表,选择基本情况表,6.5ADO数据控件,DataReport控件,选择表,点击关联,选择学生成绩表,点击鼠标右键,出现菜单,选择添加子命令,出现Command属性页,6.5ADO数据控件,DataReport控件,父命令来自Command1,两个表通过学号相关联,6.5ADO数据控件,DataReport控件,在“工程”菜单上,单击“添加DataReport”如果不在“工程”菜单上,先选择工程,部件,设计器。添加DataReport。,6.5ADO数据控件,DataReport工作区,资源管理器列表,DataPeport需要绑定两个属性,6.5ADO数据控件,点击鼠标右键,选择插入文本框,点击鼠标右键,选择插入标签,标签CAPTION=学生成绩表,点击鼠标右键,选择插入标签,文本框两个属性绑定设置,6.5ADO数据控件,DataReport控件,在窗体中添加一个Command控件,并填写代码如下:PrivateSubCommand1_Click()DataReport1.ShowEndSub点击Command控件则可显示报表,DataReport1.Show,进入,必须使用ADO数据控件进行绑定的控件:,6.5ADO数据控件,MSChart控件DataSource,进入,基本情况表,SQL中使用SELECT语句实现查询。Data控件的RecordSource属性可以是数据表名;RecordSource属性可以是数据表中的某些行或多个数据表中的数据组合。直接在Data控件的RecordSource属性栏中输入SQL,或在代码中通过SQL语句将选择的记录集赋给数据控件的RecordSource属性。,6.6VB中的SQL实现,6.6VB中SQL的实现,例6.8使用SQL语句实现查找功能,显示某专业的学生记录。使用SQL语句查询,命令按钮Command5_Click事件代码如下:,6.6VB中的SQL实现,进入,6.6VB中的SQL实现,PrivateSubCommand5_Click()DimmzyAsStringmzy=InputBox$(请输入专业,查找窗)Data1.RecordSource=Select*From基本_情况Where专业=RecordSource属性:空缺网格控件的DataSource:Data1。分组查询:为了统计各专业的人数,对基本情况表内的记录按专业分组。使用GroupBy专业语句,将同一专业的所有记录合为一组新记录。命名别名:要记录统计结果,需要构造一个新的输出字段,使用SQL的统计函数Count()作为输出字段,它按专业分组创建统计值。由于在表中没有表示该内容的字段名,可用As短语命名一个别名,6.6VB中的SQL实现,按专业统计人数按钮的指令代码为:,6.6VB中的SQL实现,PrivateSubCommand1_Click()Data1.RecordSource=Select专业,Count(*)As人数From基本情况GroupBy专业Data1.RefreshEndSub,如需要按平均成绩统计前5名按钮指令代码为:,6.6VB中的SQL实现,PrivateSubCommand2_Click()Data1.RecordSource=SelectTop5学号,Avg(成绩)As平均成绩From学生成绩表GroupBy学号OrderByAvg(成绩)DescData1.RefreshEndSub,Avg(成绩)计算该学生的平均成绩,OrderByAvg(成绩)Desc按平均成绩的降序排列数据,GroupBy学号将同一学生的各门课程的记录合并成一条记录,Top5短语返回最前面的5条记录,恢复原表内容按钮的指令代码为:,6.6VB中的SQL实现,PrivateSubCommand3_Click()Data1.RecordSource=基本情况Data1.RefreshEndSub,进入,例6.11使用ADO数据控件,用SQL语句从Student.mdb数据库的两个数据表中选择数据构成记录集。,6.6VB中的SQL实现,进入,使用ADO数据控件Adodc1;各文本框的Datasource=Adodc1,DataField属性分别设置为学号、姓名、课程、成绩,而字段照片绑定图形框。ADO数据控件的数据源采用连接字符串的方式连接;属性设置为与数据源连接的相关信息,数据链接属性设置与Student.mdb的数据连接。,6.6VB中的SQL实现,记录源设置如下,6.6VB中的SQL实现,select学生成绩表.*,基本情况.姓名,基本情况.照片from学生成绩表,基本情况where学生成绩表.学号=基本情况.学号,进入,例6.12设计一个窗体,计算Student.mdb数据库内学生成绩表中每个学生的平均成绩,产生姓名、平均成绩和最低成绩三项数据,按平均成绩降序排列数据,并用该数据作图。,6.6VB中的SQL实现,进入,绘制图表使用MsChart。MsChart控件需要通过工程|部件命令,将MSChart控件添加到工具箱。MSChart1的DataSource绑定:Adodc1将Adodcl的RecordSource属性设置为SQL语句:,6.6VB中的SQL实现,Select基本情况.姓名,Avg(成绩)As平均成绩,Min(成绩)As最低成绩From学生成绩表,基本情况Where学生成绩表.学号=基本情况.学号GroupBy姓名OrderByAvg(成绩)Desc,学生成绩表中没有平均成绩和最低成绩这两项数据,在SELECT子句中使用统计函数Avg()和Min()产生;学生成绩表中没有姓名字段,故需要多表查询,通过条件基本情况.学号=学生成绩表.学号从基本情况表获取。GroupBy姓名可将同一学生的记录合并成一条新记录。,6.6VB中的SQL实现,在CS结构中用ODBC与数据库连接和数据操作。例6.13使用ADO数据控件和ODBC技术,设计一个简单窗体,显示Student.mdb数据库的基本情况表。,6.7VB中使用ODBC,6.7VB中使用ODBC,进入,步骤1:在窗体上放置ADO数据控件,控件名采用默认名Adodcl。,6.5ADO数据控件,步骤2:在ADO控件按鼠标右键,选择ADO属性时,弹出属性页对话框。,6.5ADO数据控件,使用ODBC数据资源名称可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制,步骤3:在创建新数据源对话框,选择数据源,6.5ADO数据控件,只有创建者能访问的数据库文件,登录该机器的任何用户都能访问的数据库文件,所有用户均可以访问的数据库文件,数据源名就是系统知道的数据库文件名。数据源名只要生成一次,此后任何应用程序都可以使用。如果系统中没有数据源名,则需生成新的数据源名,步骤4:在创建新数据源对话框,选择驱动器,6.5ADO数据控件,选择MicrosoftAccessDriver,步骤5:在属性页对话框,选择使用ODBC数据资源名称,6.5ADO数据控件,使用ODBC数据资源名称可以通过下拉式列表框,选择某个创建好的数据源名称(DSN),作为数据来源对远程数据库进行控制,6.7VB中使用ODBC,步骤6:单击“完成”按钮,生成数据源。指定的Access数据库赋予新建的数据源。出现在ODBCMicrosoftAccess安装窗口中,操作步骤如下:,设置数据源名为Student1,指定一个Access数据库Student.mdb赋予新建的数据源Student1,步骤6:展开下拉清单,并选择student1数据源。,6.7VB中使用ODBC,student1数据源已经注册到系统上,不必再次生成。它会自动出现在ADO数据控件属性页的使用ODBC数据资源名称下拉清单中,进入,例6.14ADO数据控件使用自己的高级约束数据控件,即DataList和DataCombo控件。,6.7VB中使用ODBC,进入,DataList,DataCombo,DataCombo控件属性设置DataSourceAdodc1,DataFiled出生年月RowSource=Adodc1,ListFiled出生年月DataList控件属性设置RowSource=Adodc1,ListField=学号。,6.7VB中使用ODBC,DataList控件vRowSource,ListFiled,DataCombo控件DataSource,DataFiled,ListFiled,设置下拉菜单中的字段,设置文本中显示的字段,DataList控件中所选的学号对约束数据控件没有影响。如要在DataList清单中每次选择另一学号时,同时移动ADO数据控件,需要加入一些代码:,6.7VB中使用ODBC,PrivateSubDataList1_Click()Adodc1.Recordset.Bookmark=_DataList1.SelectedItemEndSub,返回一个值,包含DataList控件中选中的记录的书签。,6.5.5ADO对象编程,6.5.5ADO对象编程,一.ADO对象(一)ADO对象介绍ADO是ActiveXDataObiect的缩写,是建立在OLEDB之上的高层数据库访问技术。ADO被设计用来同新的数据访问层OLEDBProvider一起协同工作,以提供通用数据访问(UniversalDataAccess)。OLEDB是一个低层的数据访问接口,用它可以访问各种数据源,包括传统的关系型数据库,以及电子邮件系统及自定义的商业对象.,6.5.5ADO对象编程,(二)ADO对象最基本的操作流程:初始化COM库,引入ADO库定义文件:用Connection对象连接数据库;利用建立好的连接,通过Connection、Command对象执行SQL命令,或利用Recordset对象取得结果记录集进行查询、处理;使用完毕后关闭连接释放对象。,6.5.5ADO对象编程,SubConnectionExample()DimcnnasADODB.connectionSetcnn=newADODB.connection通过ODBCDSN打开数据库cnn.openpubs,sa,检查是否成功建立连接对象ifcnn.state=adStateOpenthenmsgboxWelcometopubs!elsemsgboxSorry,nopubs!end关闭连接对象cnn.closeEndsub,使用Open方法建立到数据源的物理连接,pubs是SQLServer安装附带的数据库,sa为systemadministrator,使用Close方法切断其到数据源的物理连接,指示对象是打开的,6.5.5ADO对象编程,Set语句将对象引用赋给变量或属性。语法:Setobjectvar=Newobjectexpression|Nothing,6.5.5ADO对象编程,声明对象变量声明对象变量的方法和声明其它变量一样,要用Dim、ReDim、Static、Private和Public。仅有的不同在于可选的New关键字和Class参数。语法如下:Dim|ReDim|Static|Private|PublicvariableAsNewclass例如:DimcnnasADODB.connectionSetcnn=NewADODB.Connection例如:DimcnnAsNewADODB.ConnectionNew关键字为可选项。可隐式地创建对象的关键字。如果使用New来声明对象变量,则在第一次引用该变量时将新建该对象的实例,因此不必使用Set语句来给该对象引用赋值,两条语句等价于下面一条语句,Open方法(ADOConnection)功能:打开到数据源的连接。语法connection.OpenConnectionString,UserID,Password,OpenOptions以下参数均为可选项ConnectionString:包含连接信息的字符串。UserID:包含建立连接时所使用的用户名称。Password:字符串,包含建立连接时所用密码。OpenOptions:ConnectOptionEnum值。如果设置为adConnectAsync,则异步打开连接。如果设置为ConnectComplete当连接可用时将调用该事件。,6.5.5ADO对象编程,二.用ADO操纵数据库使用ADO操作数据库的主要步骤和方法:打开数据库。首先需要创建数据库连接对象(connection),然后调用该对象的Open方法即可打开数据库。操作数据库数据。在数据库打开之后,通过Connection、Command对象执行SQL命令,或者创建记录集(Recordset)对象,使用该对象的各种方法就可以进行数据库数据的查询、定位以及增加、删除和修改。关闭数据库。使用上面创建的数据库连接对象的close方法就可以进行数据库的关闭。,6.5.5ADO对象编程,Connection对象的创建、连接以及关闭数据库的方法:,6.5.5ADO对象编程,(一)AD0连接数据库1连接到ODBC数据源的参数设置MicrosoftODBCProvider允许ADO连接到任何ODBC的数据源。,(1)指定DSN或FileDSN的语法如下:,setcon=newADODB.connectioncon.OpenProvider=MSDASQL;DSN=name|FileDSN=filename;DATABASE=databasename;PWD=password,MSDASQL为默认值:Provider的默认参数值可以省略.,DSN或FileDSN,可通过Windows控制面板“中的ODBC管理器进行定义,setcon=newADODB.connectioncon.OpenDRIVER=drivername;SERVER=servername;DATABASE=databasename;PWD=password,6.5.5ADO对象编程,(2)无DSN(非DSN连接)的语法如下:,setcon=newADODB.connectioncon.Openprovider=Microsoft.Jet.OLEDB.4.0;DataSource=c:library.mdb;_pwd=pwdcnn1.Opencnn1.DefaultDatabase=pubs显示提供者MsgBoxcnn1provider:InitialCatalog=pubs;,sa显示提供者MsgBoxcnn3provider:uid=admin;pwd=;,方法:cnn.Opendsn=advWorks;uid=admin;pwd=;,通过以上介绍,可以总结出ADO与不同数据库连接所使用的连接字符串如下:ODBC连接ODBC-DSN连接,与IIS一同安装并位于C:InetPubASPSampAdvWorks的数据源AdvWorks.mdb,6.5.5ADO对象编程,方法:cnn.Opendriver=MicrosoftAccessDriver(*.mdb);,ODBC连接ODBCDriverforAccess,VB提供的数据源驱动程序,允许ADO访问Access数据库,6.5.5ADO对象编程,ODBC连接ODBCDriverforSQLServer,方法:cnn.Opendriver=SQLServer;server=myServerName;_,VB提供的数据源的驱动程序,允许ADO访问SQLServer数据库,6.5.5ADO对象编程,OLEDBProvider连接OLEDBProviderForMicrosoftJet,方法:con.Openprovider=Microsoft.Jet.OLEDB.4.0;_,VB提供的连接字符串,允许ADO访问MicrosoftJet数据库,6.5.5ADO对象编程,OLEDBProvider连接OLEDBProviderForODBCDatabaseAccess(Jet)方法:,cnn.OpenProvider=MSDASQL;driver=MicrosoftAccessDriver(*.mdb);_,MicrosoftODBCProvider允许ADO连接到任何ODBC的数据源,该连接字符串为ADO的默认ODBC提供者,6.5.5ADO对象编程,cnn.OpenProvider=MSDASQL;driver=SQLServer;server=myServerName;_,OLEDBProvider连接OLEDBProviderForODBCDatabaseSQLServer方法:,6.5.5ADO对象编程,(二)用记录集(Recordset)对象操纵数据记录集(Recordset)对象是ADO操作中最常用的对象。,Open方法(ADO)Recordset功能:打开游标。所谓游标是从数据源返回的满足SQL语句所规定的条件的行的集合。recordset.OpenSource,ActiveConnection,CursorType,LockTypeOpen后面的参数均为可选项参数Source:指定Command对象的变量名、SQL语句、表名、存储过程调用或基本Recordset文件名。ActiveConnection:指定有效Connection对象变量名;或字符串,包含ConnectionString参数。,CursorType:确定提供者打开Recordset时应该使用的游标类型。可为下列常量之一,健相当于书签,只可根据健集的健值,添加、改变、获取或删除基础数据库表或表的行。,行的动态集合,动态添加、改变、获取或删除基本数据库表或表的行。,打开客户端Recordset对象时唯一允许使用的游标类型,使用这个游标相当于结果集的副本。,LockType:参数指定锁定类型以支持并发,参数可为下列常量之一,6.5.5ADO对象编程,1创建、打开RecordSet对象以及浏览数据记录下面来学习一个例子:,SubADOopenRecords()DimcnnAsADODB.ConnectionDimrstAsADODB.RecordsetDimfldAsADODB.Field打开连接cnn.Openprovider=Microsoft.Jet.OLEDB.4.0;DataSource=c:northwind.mdb;,6.5.5ADO对象编程,打开方式forward_only,read_onlyrst.Openselect*fromcustomerswhereregion=WA,cnn,adOpenForwardOnly,游标只能在记录中向前滚动adLockReadOnly只读功能,ActiveConnection,这两行均为默认值,数据库northwind中的表,6.5.5ADO对象编程,Move,MoveNext,MoveFirst等方法,和DAO相同。,输出第一个记录的所有字段值ForEachfldInrst.Fieldsfld为字段Debug.Printfld.ValueNextDebug.Printrst.Closecnn.CloseEndSub,Debug.Print在调试窗口的立即面板中输出,6.5.5ADO对象编程,2查询数据记录ADO的查询数据库记录的方法和DAO有所不同,DAO可以利用Recordset对象的FindFirst、FindNext、FindLast、FindPrevious方法。ADO只有Find方法。Find(ADO)方法的调用语法是:,RstName.FindCriteria,SkipRecords,SearchDirection,Start,Criteria:字符串类型,包含用于搜索的指定列名、比较操作符和值的语句。比较只是针对于表中的单个字段。比较符仅限于=、=、#7/22/97#”)。不能使用双引号(“)。使用Like操作符,可以用星号(*)作为字符串值中的通配符。星号必须是值中的最后一个字符或值中的唯一字符,或者“_”(某字符只出现一次)。例如“statelikeM_”与Maine匹配。statelikeM*”与Massachusetts匹配。SkipRecords是长整型值,默认值为零。它指定当前行或start书签的位移以开始搜索。,searchDirection指定搜索应从当前行还是搜索方向上的下一个有效行开始。其值可为adSearchForward或adSearchBackward。搜索停止在记录集的开始还是末尾则取决于searchDirection值。start变体型书签,用作搜索的开始位置。,6.5.5ADO对象编程,3增、删、改数据记录ADO用与DAO采用相同的方法进行添加、删除操作。唯一不同点要先建立一个connection对象。ADO还提供了一种快捷的添加方式.,修改现有记录时,ADO不需要调用Edit方法,直接对当前记录某字段属性赋值之后调用update方法就可以实现。,6.5.5ADO对象编程,(三)ADO运行的查询语句使用Connection对象的Execute方法,执行在CommandText属性中指定的查询、SQL语句或存储过程。查询内容由该方法的参数确定。语法:不返回查询的命令:,connectionExecuteCommandText,RecordsAffected,Options,如果该命令为不按行返回查询,则返回时关闭Recordset对象。,6.5.5ADO对象编程,Setrecordset=connection.ExecuteCommandText,RecordsAffected,Options,按行返回查询的命令:,参数CommandText:字符串,包含要执行的SQL语句、表名、存储过程等。RecordsAffected:可选,返回操作所影响的记录数目。Options:可选,指示提供者应如何为CommandText参数赋值,可为下列值之一。,主要常量说明:adCmdText:指示提供者应将CommandText赋值为命令的文本定义。adCmdTable:指示ADO应生成SQL查询以便从CommandText命名的表中返回所有查询行。adCmdStoredProc指示提供者应将CommandText赋值为存储过程。adCmdUnknown指示CommandText参数中的命令类型未知。,Execute方法返回值:返回Recordset对象引用。如果用New关键字声明一个对象变量,VisualBasic将自动创建一个对象,并在第一次使用该变量时赋值对象引用。例如cnn就是数据库连接的对象引用,建立好连接后,所以的数据库操作都要通过这个对象引用cnn来进行。Execute方法使用如下例:,6.5.5ADO对象编程,SubExcuteX()DimcnnAsADODB.ConnectionDimstrSQLAsString定义SQL语句作为命令文本执行strSQL=“updateSPJsetPRICE=PRICE*1.06DataSource=.项目零件供应.mdb;执行查询命令cnn.ExecutestrSQLcnn.CloseEndSub,6.5.5ADO对象编程,(四)ADO控件及对象编程举例例1:使用ADO控件的属性和方法进行编程。使用绑定控件增加、删除、修改书籍(Titles)信息。,进入,6.5.5ADO对象编程,表6.9主要控件对象的属性,6.5.5ADO对象编程,6.5.5ADO对象编程,代码如下:,PrivateSubForm_Load()窗体加载Adodc1.ConnectionString=provider=Microsoft.Jet.OLEDB.4.0;DataSource=PersistSecurityInfo=FalseAdodc1.RecordSource=select*fromTitlesAdodc1.Refresh,6.5.5ADO对象编程,Fori=0To5Text1(i).Enabled=FalseNexticmdsave.Enabled=False添加记录按钮cmdcancel.Enabled=False删除记录按钮EndSub,6.5.5ADO对象编程,PrivateSubcmdadd_Click()添加记录Adodc1.Recordset.AddNewFori=0To5Text1(i).Enabled=TrueText1(i).Text=NextiText1(0).SetFocus,6.5.5ADO对象编程,cmdadd.Enabled=Falsecmddelete.Enabled=Falsecmdedit.Enabled=Falsecmdsave.Enabled=Truecmdcancel.Enabled=Truecmdmove(0).Enabled=Falsecmdmove(1).Enabled=Falsecmdmove(2).Enabled=Falsecmdmove(3).Enabled=FalseEndSub,6.5.5ADO对象编程,PrivateSubcmddelete_Click()删除记录DimmyvalAsStringmyval=MsgBox(是否要删除该记录?,vbYesNo)Ifmyval=vbYesThenAdodc1.Recordset.DeleteAdodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveLastFori=0To5Text1(i).Enabled=FalseNextiEndIfEndSub,6.5.5ADO对象编程,PrivateSubcmdedit_Click()修改记录IfAdodc1.Recordset.RecordCount0ThenFori=0To5Text1(i).Enabled=TrueNexticmdsave.Enabled=Truecmdcancel.Enabled=Truecmdadd.Enabled=Falsecmdedit.Enabled=Falsecmddelete.Enabled=False,6.5.5ADO对象编程,cmdmove(0).Enabled=Falsecmdmove(1).Enabled=Falsecmdmove(2).Enabled=Falsecmdmove(3).Enabled=FalseElseMsgBox(没有要修改的记录!)EndIfEndSub,6.5.5ADO对象编程,PrivateSubcmdsave_Click()保存记录IfText1(0).Text=ThenMsgBox书籍编号不能为空!Text1(0).SetFocusExitSubEndIfAdodc1.Recordset.UpdateFori=0To5Text1(i).Enabled=FalseNexti,6.5.5ADO对象编程,cmdsave.Enabled=Falsecmdcancel.Enabled=Falsecmdadd.Enabled=Truecmdedit.Enabled=Truecmddelete.Enabled=Truecmdmove(0).Enabled=Truecmdmove(1).Enabled=Truecmdmove(2).Enabled=Truecmdmove(3).Enabled=TrueEndSub,6.5.5ADO对象编程,PrivateSubcmdcancel_Click()放弃修改Adodc1.Recordset.CancelUpdateFori=0To5Text1(i).Enabled=FalseNexticmdsave.Enabled=Falsecmdcancel.Enabled=Falsecmdadd.Enabled=Truecmdedit.Enabled=Truecmddelete.Enabled=True,6.5.5ADO对象编程,cmdmove(0).Enabled=Truecmdmove(1).Enabled=Truecmdmove(2).Enabled=Truecmdmove(3).Enabled=TrueEndSub,6.5.5ADO对象编程,PrivateSubcmdmove_Click(IndexAsInteger)移动记录指针SelectCaseIndexCase0Adodc1.Recordset.MoveFirstCase1Adodc1.Recordset.MovePreviousIfAdodc1.Recordset.BOFThenAdodc1.Recordset.MoveFirstCase2Adodc1.Recordset.MoveNextIfAdodc1.Recordset.EOFThenAdodc1.Recordset.MoveLast,6.5.5ADO对象编程,Case3Adodc1.Recordset.MoveLastEndSelectEndSubPrivateSubcmdExit_Click()退出UnloadMeEndSub,进入,6.5.5ADO对象编程,例2:使用ADO对象进行编程,增加、删除、修改书籍(Titles)信息。控件不需要绑定,即text控件不需设置Datasource和DataField属性。,ADO对象编程注意:为了使用ADO对象编程,必须在程序中引入ADO对象。引入ADO对象的方法是选择菜单工程引用,在清单中选择MicrosoftActiveXDataObjects2.0Library。,进入,6.5.5ADO对象编程,代码如下:,DimrsAsNewADODB.Recordset声明数据库连接对象DimcnnAsADODB.Connection声明记录集对象PrivateSubForm_Load()窗体加载Setcnn=NewADODB.Connectioncnn.Opendriver=MicrosoftAccessDriver_(*.mdb);PersistSecurityInfo=FalseSetrs=NewADODB.Recordsetrs.Openselect*fromtitles,cnn,_adOpenDynamic,adLockOptimistic打开动态类型游标,开放式锁定updata时才锁定,6.5.5ADO对象编程,Ifrs.BOFAndrs.EOFThenMsgBox表中无记录!Elsers.MoveFirstCallviewdataEndIfFori=0To5Text1(i).Enabled=FalseNexticmdsave.Enabled=Falsecmdcancel.Enabled=FalseEndSub,6.5.5ADO对象编程,PrivateSubviewdata()浏览数据OnErrorResumeNextText1(0).Text=rs.Fields(书籍编号)Text1(1).Text=rs.Fields(所属主题)Text1(2).Text=rs.Fields(作者)Text1(3).Text=rs.Fields(书籍名称)Text1(4).Text=rs.Fields(价格)Text1(5).Text=rs.Fields(数量)EndSub,6.5.5ADO对象编程,PrivateSubcmdadd_Click()增加记录rs.AddNewFori=0To5Text1(i).Enabled=TrueText1(i).Text=NextiText1(0).SetFocus,6.5.5ADO对象编程,cmdadd.Enabled=Falsecmddelete.Enabled=Falsecmdedit.Enabled=Falsecmdsave.Enabled=Truecmdcancel.Enabled=Truecmdmove(0).Enabled=Falsecmdmove(1).Enabled=Falsecmdmove(2).Enabled=Falsecmdmove(3).Enabled=FalseEndSub,6.5.5ADO对象编程,PrivateSubcmddelete_Click()删除记录DimmyvalAsStringmyval=MsgBox(是否要删除该记录?,vbYesNo)Ifmyval=vbYesThenrs.Deleters.MoveNextIfrs.EOFThenrs.MoveLastCallviewdataFori=0To5Text1(i).Enabled=FalseNextiEndIfEndSub,6.5.5ADO对象编程,PrivateSubcmdedit_Click()编辑记录Ifrs.RecordCount0ThenFori=0To5Text1(i).Enabled=TrueNexticmdsave.Enabled=Truecmdcancel.Enabled=Truecmdadd.Enabled=Falsecmdedit.Enabled=Falsecmddelete.Enabled=False,指示Recordset对象中记录的当前数目,6.5.5ADO对象编程,cmdmove(0).Enabled=Falsecmdmove(1).Enabled=Falsecmdmove(2).Enabled=Falsecmdmove(3).Enabled=FalseElseMsgBox(没有要修改的记录!)EndIfEndSub,6.5.5ADO对象编程,PrivateSubcmdsave_Click()保存记录IfText1(0).Text=ThenMsgBox书籍编号不能为空!Text1(0).SetFocusExitSubEndIfrs.Fields(书籍编号)=Text1(0).Textrs.Fields(所属主题)=Text1(1).Textrs.Fields(作者)=Text1(2).Text,6.5.5ADO对象编程,rs.Fields(书籍名称)=Text1(3).Textrs.Fields(价格)=Text1(4).Textrs.Fields(数量)=Text1(5).Textrs.UpdateFori=0To5Text1(i).Enabled=FalseNexticmdsave.Enabled=Falsecmdcancel.Enabled=False,6.5.5ADO对象编程,cmdadd.Enabled=Truecmdedit.Enabled=Truecmddelete.Enabled=Truecmdmove(0).Enabled=Truecmdmove(1).Enabled=Truecmdmove(2).Enabled=Truecmdmove(3).Enabled=TrueEndSub,6.5.5ADO对象编程,PrivateSubcmdcancel_Click()放弃修改rs.CancelUpdaters.MoveFirstCallviewdataFori=0To5Text1(i).Enabled=FalseNexticmdsave.Enabled=Falsecmdcancel.Enabled=False,6.5.5ADO对象编程,cmdadd.Enabled=Truecmdedit.Enabled=Truecmddelete.Enabled=Truecmdmove(0).Enabled=Truecmdmove(1).Enabled=Truecmdmove(2).Enabled=Truecmdmove(3).Enabled=TrueEndSub,6.5.5ADO对象编程,PrivateSubcmdmove_Click(IndexAsInteger)移动记录指针SelectCaseIndexCase0rs.MoveFirstCase1rs.MovePreviousIfrs.BOFThenrs.MoveFirstCase2rs.MoveNextIfrs.EOFThenrs.MoveLast,6.5.5ADO对象编程,Case3rs.MoveLastEndSelectCallviewdataEndSubPrivateSubcmdExit_Click()UnloadMeEndSub,进入,6.5.5ADO对象编程,3.SQL与ADO对象联合编程例6-3:SQL与ADO对象联合编程,增加、删除、修改书籍(Titles)信息。,进入,6.5.5ADO对象编程,DimsqlAsStringDimmysqlAsStringDimmyvalAsStringDimeditfAsIntegerDimrsAsNewADODB.Recordset声明数据库连接对象DimcnnAsADODB.Connection声明记录集对象PrivateSubForm_Load()窗体加载Setcnn=NewADODB.Connectioncnn.Opendsn=advWorks;,代码如下:,6.5.5ADO对象编程,PersistSecurityInfo=FalseSetrs=NewADODB.Recordsetrs.Openselect*fromtitles,cnn,adOpenDynamic,adLockOptimisticIfrs.BOFAndrs.EOFThenMsgBox表中无记录!Elsers.MoveFirstCallviewdataEndIfcmdsave.Enabled=Falsecmdcancel.Enabled=FalseEndSub,6.5.5ADO对象编程,PrivateSubviewdata()浏览数据OnErrorResumeNextText1(0).Text=rs.Fields(书籍编号)Text1(1).Text=rs.Fields(所属主题)Text1(2).Text=rs.Fields(作者)Text1(3).Text=rs.Fields(书籍名称)Text1(4).Text=rs.Fields(价格)Text1(5).Text=rs.Fields(数量)EndSub,6.5.5ADO对象编程,PrivateSubcmdadd_Click()添加记录Fori=0To5Text1(i).Text=NextiText1(0).SetFocuscmdadd.Enabled=Falsecmddelete.Enabled=Falsecmdedit.Enabled=False,6.5.5ADO对象编程,cmdsave.Enabled=Truecmdcancel.Enabled=Truecmdmove(0).Enabled=Falsecmdmove(1).Enabled=Falsecmdmove(2).Enabled=Falsecmdmove(3).Enabled=Falseedirf=0设置添加标志EndSub,6.5.5ADO对象编程,PrivateSubcmddelete_Click()删除记录myval=MsgBox(是否要删除该记录?,vbYesNo)Ifmyval=vbYesThenmysql=deletefromTitleswhere书籍编号=mysql=mysql+Text1(0).Text+cnn.Executemysqlrs.Closesql=select*fromTitlesrs.Opensql,cnn,adOpenDynamic,_adLockOptimistic打开动态类型游标,开放式锁定,6.5.5ADO对象编程,Ifrs.BOFAndrs.EOFThenMsgBox表中无记录!Elsers.MoveFirstCallviewdataEndIfEndIfEndSub,6.5.5ADO对象编程,PrivateSubcmdedit_Click()修改记录Ifr
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!