第15章 ADO与数据绑定控件.ppt_第1页
第15章 ADO与数据绑定控件.ppt_第2页
第15章 ADO与数据绑定控件.ppt_第3页
第15章 ADO与数据绑定控件.ppt_第4页
第15章 ADO与数据绑定控件.ppt_第5页
免费预览已结束,剩余64页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第15章 ado与数据绑定控件,15.1 ado数据控件 15.2 数据绑定控件 15.3 ado对象,15.1 ado数据控件,使用ado数据访问控件,可以访问大型关系型数据库管理系统和小型个人数据库管理系统。 ado数据控件是activex控件,需要手工将其添加到工具箱中。 选择“工程”菜单下的“部件” 。,adodc控件在窗体上的形式,ado数据控件的主要属性,connectionstring属性 用于建立与数据源的连接 commandtype属性 指明命令的类型,共有四种 recordsource属性 用于设置ado结果集的内容 recordset属性 保存记录集,本身又是一个对象,connectionstring属性,单击ado数据控件属性页中的“connectionstring”属性,然后单击 按钮,commandtype属性,adcmdunknown:默认值。表示recordsource中的命令类型未知。 adcmdtable:recordsource属性的内容是一个表名。 adcmdtext:recordsource属性的内容是一个查询语句文本串。 adcmdstoredproc:recordsource属性的内容是一个存储过程名。,recordsource属性,用于设置ado结果集的内容. 这个内容可以来自于一张表,也可以来自一个查询语句,也可以来自一个存储过程的执行结果。 recordsource属性的值与commandtype属性的值有关,两者协同使用。,设置recordsource属性,在已经设置好connectionstring属性的ado数据控件上右击鼠标,在弹出的菜单中选择“adodc属性”命令,在弹出此对话框上选择“记录源”标签页。,recordset属性,是ado数据控件中实现数据记录操作的最重要的属性,而且这个属性本身又是一个对象,也有自己的属性和方法,它直接指向ado对象模型中的recordset对象。 recordset属性也称为记录集或结果集,用于存放从数据提供者那里获得的查询结果,这个结果一般存放在客户端内存中。,ado数据控件的主要方法,refresh 用于更新ado数据控件属性,使修改后的ado数据控件属性生效。 当修改了ado数据控件的connectionstring属性的值时,使用refresh方法会重新连接一次数据库; 当修改了ado数据控件的recordsource属性的值时,使用refresh方法会重新执行recordsource属性的内容,重新产生结果集。 使用refresh方法的格式为: ado数据控件名.refresh,ado数据控件的主要事件,endofrecordset事件 当在结果集中移动记录指针时,当记录指针超出了结果集的最后一条记录时,触发此事件。 error事件 只有在没有执行任何vb代码而发生了一个数据访问错误时,才会触发此事件。 willchangefield和fieldchangecomplete事件 当对结果集中的一个或多个字段值进行修改前,触发willchangefield事件;当对结果集中的一个或多个字段值修改之后,触发fieldchangecomplete事件。,ado数据控件的主要事件(续),willchangerecord和recordchangecomplete事件 当对结果集中的一个或多个记录进行修改前,触发willchangerecord事件;当对结果集中的一个或多个记录修改之后,触发recordchangecomplete事件。 willmove事件和movecomplete事件 在结果集的当前行记录指针移动之前,触发willmove事件;在结果集的当前行记录指针移动完成后,触发movecomplete事件。,recordset对象的主要属性,bof:布尔值,如果结果集中记录的当前行指针移到了第一条记录的前边,则此值为真,否则为假。 eof:布尔值,如果结果集中记录的当前行指针移到了最后一条记录的后边,则此值为真,否则为假。 recordcount:存放结果集中的记录个数。 sort:将结果集中的记录按某个字段排序。,recordset对象的主要属性(续),absoluteposition:记录当前行记录在结果集中的顺序号,结果集记录序号从1开始。 activecommand:结果集中创建的命令。 activeconnection:结果集中创建的连接。 fields:结果集中的字段集合,本身也是对象。,fields对象的主要属性,fields.name:字段名称。 fields.value:字段的值。 fields.ordinalposition:字段在fields集合中的顺序。 fields.type:字段的数据类型。 fields.size:字段的最大字节数。 fields.sourcetable:字段来自的表 fields.sourcefield:字段来自的表中的列,示例,例:利用fields对象,得到当前行记录的某字段的值,用法如下: fields(“字段名”).value 或: fields(数字).value,recordset对象的主要方法,1. move方法组 movefirst方法:将当前行记录指针移到结果集中的第一行。 moveprevious方法:将当前行记录指针向前移动一行。 movenext方法:将当前行记录指针向后移动一行。 movelast方法:将当前行记录指针移到结果集中的最后一行。,recordset对象的主要方法(续),2addnew方法 用于在结果集中添加一个新记录。 3update方法 将新记录缓冲区中的记录或者对当前记录的修改真正写到数据库中。 4delete方法 删除结果集中当前行记录指针所指的记录,并且这个删除是直接对数据库数据操作的,删除后的数据不可恢复。,recordset对象的主要方法(续),5cancelupdate方法 用于取消新添加的记录或对当前记录所做的修改。 6. find方法 用于在当前结果集中查找满足条件的记录。 find方法的格式为: ado数据控件名.recordset. find(“查找条件表达式”) 例: 查找年龄在20到25之间的学生: find(“sage = 20 and sage = 25”),15.2 数据绑定控件,数据绑定实际上就是将结果集中的数据同应用程序界面上的控件联系起来,通过这些界面上的控件将结果集中的数据显示给用户。 能够实现将结果集中的数据显示出来的功能的控件就称为数据绑定控件。 标准绑定控件:textbox、checkbox、listbox、combobox等 外部绑定控件:datacombo、datalist、datagrid、mshfgrid、microsoft chart等,datagrid控件,正式名称是:microsoft datagrid control 6(ole db), 以表格的形式显示结果集中的全部数据, 并允许用户在此控件中浏览、添加、删除和修改记录。 需手工添加到工具箱中。,datagrid控件的特殊属性,用datagrid事件确认更新,private sub dtgstudent_headclick(byval colindex as integer) with adodc1.recordset .sort = .fields(colindex).name & “ desc“ end with dtgstudent.refresh end sub,datagrid排序示例,datagrid隐藏列示例,private sub cmdsomecolumns_click() 隐藏ssex和sage列 with dtgstudent .columns(2).visible = false ssex列 .columns(3).visible = false sage列 end with cmdsomecolumns.enabled = false 显示部分列按钮 cmdallcolumns.enabled = true 显示全部列按钮 end sub,15.3 ado对象,由一组相互独立的对象组成,对象模型中的每个对象都具有各自的属性、方法和事件, 通过设置和使用这些对象的属性、方法和事件可以实现对数据库的全部操作。,ado对象模型,15.3.1 connection对象,表示一个ole db数据源的开放式连接。 是ado对象模型的基础。 在使用ado对象模型编程之前,必须先引用ado对象模型。方法为:在vb的“工程”菜单下选择“引用”命令,然后在打开的窗口中选择“microsoft activex data objects 2. library”选项(其中“”代表机器上所安装的版本号)。,connection对象的主要属性,connectionstring 用于指定连接到的数据源名称,使用方法及含义同ado数据控件。 connectiontimeout 执行open方法之后等待建立连接的秒数,默认为15秒。0表示无限期等待。 state 表示connection对象是打开还是关闭的常量。,connection对象的主要方法,open:打开带有数据源的连接,即真正的建立起到数据源的物理连接。 close:关闭一个打开的与数据源的连接,即终止与数据源的连接。 execute:在没有创建command对象的情况下执行连接中的一个命令。,使用connection对象,(1)设置connectionstring连接属性 dim adocn as new adodb.connection adocn.connectionstring = “provider=sqloledb.1;user id=loginid; initial catalog=pubs;data source=db_server_name“,使用connection对象(续),(2)使用open方法建立连接 open方法用于打开连接: adocn.open (3)使用close方法断开连接 用于关闭一个打开的connection对象,即断开与数据源的连接。 adocn.close,15.3.2 command对象,command对象代表对数据源执行的命令。 使用command命令可以查询数据,并将查询结果返回给recordset对象。,command对象的主要属性,activeconnection:指定当前使用的连接。 commandtext:命令的文本表达(sql语句、存储过程名和表名)。 commandtype:指定要执行的命令的类型,与commandtext属性的内容对应。取值如下: cmdtext:指定commandtext的内容是一个sql语句。 adcmdtable:指定commandtext的内容是一个表名。 adcmdstoredproc:指定commandtext的内容是一个存储过程名。 adcmdunknown:默认值,表示命令类型未知。,command对象的主要方法,excute 执行commandtext属性中指定的命令并返回由此生成的记录集。,使用command对象,声明对象 dim adocn as new adodb.connection dim adocm as new adodb.command 建立连接 adocn.connectionstring = “*“ adocn.open 执行命令 adocm.activeconnection = adocn adocm.commandtext = “select * from authors“ adocm.execute 关闭连接 adocn.close,15.3.3 recordset对象,代表从数据提供者那里获取的数据记录集。 recordset对象的主要功能包括: 建立记录集; 确定要操作的记录集中的记录; 通过移动指针浏览记录; 对记录集中的数据执行更改操作; 对记录集中的数据进行过滤。,recordset对象的主要属性,absoluteposition:记录集中当前记录的顺序位置。 activecommand:记录集中创建的命令。 activeconnection:记录集中创建的连接。 bof:如果当前行移动到记录集的第一条记录的前边,则为真。 eof:如果当前行移动到记录集的最后一行记录的后边,则为真。 datasource:指定要绑定的数据源。,recordset对象的主要属性(续),recordcount:记录集中记录的个数。如果ado不能判断记录集有多少条记录,可以返回adunknown(-1)。 sort:将记录集按指定字段排序。 source:记录集来源的命令和sql查询。 cursorlocation:描述记录集中使用的游标的位置的常量。 cursortype:描述记录集中使用的游标类型的常量。 locktype:控制编辑过程中设置的加锁类型。,recordset对象的主要方法,addnew:向记录集中添加一条新记录。 cancelupdate:取消对数据的修改。 close:关闭记录集。 delete:删除当前记录。 find:查找符合某些规则的记录。 move:将当前记录的位置移动一定的间隔。,recordset对象的主要方法(续),movefirst:移动到第一条记录。 movelast:移动到最后一条记录 movenext:移动到下一条记录。 moveprevious:移动到上一条记录 open:打开一个记录集。 update:当edit和addnew方法完成后要执行的方法。,recordset对象的集合,recordset对象包含的集合是fields,它是记录集中的字段集合。,cursorlocation属性,用于设置游标的位置,该属性的取值为: aduseclient:使用本地客户端游标。其特点是服务器将整个结果集传回给客户端,网络流量较大,但下载后对数据的浏览速度快。 aduseserver:默认值。使用数据源提供的服务器端游标。其特点是仅传送客户端需要的记录,网络流量小,但服务器资源消耗大。不支持bookmark和absoluteposition等属性。,cursortype属性,用于指定recordset对象希望执行的动作。 ado recordset对象支持四种游标类型: 动态游标(adopendynamic) 静态游标(adopenstatic) 键集游标(adopenkeyset) 仅向前游标(adopenforwardonly),locktype属性,用于设置多用户情况下记录集中的记录的锁定方式,用于保证各用户间的操作互不干扰。 其取值有: adlockreadonly:默认值,不能编辑记录集中的数据。 adlockpessimistic:悲观锁。 adlockoptimistic:乐观锁。 adlockbatchoptimistic:适用于使用updatebatch方法更新批量多条记录的记录集。,使用recordset对象的步骤,(1)打开记录集 使用command对象的execute方法创建recordset对象: set adorecordset = adocommand.execute 使用connection对象的execute方法创建recordset对象: set adorecordset = adoconnection.execute(“select * from authors“) 直接使用recordset对象的open方法创建recordset对象: adorecordset.open,recordset对象的open方法,语法格式为: recordset.open source, activeconnection, cursortype, locktype, options 所有这些选项都是可选的,可以在调用open方法之前,通过设置这些选项对应的属性来设置其值。 source选项指定了要从哪里获取数据,其有: 一个返回记录的command对象。 sql语句。 表名。 存储过程名。,open方法的一些选项,activeconnection选项指定了要使用的ado连接,这个选项可以是一个已打开的connection对象,也可以是一个连接字符串。 options选项为提供者提供了附加信息。这些选项包括: adcmdunknown:默认值。不向提供者提供附加信息。 adcmdtext:告诉提供者commandtext属性是文本命令。 adcmdtable:是表的名字。 adcmdstoredproc:是存储过程名。 adcmdfile:是一个文件名。,示例,dim adors as new adodb.recordset adors.activeconnection = adocn adors.cursortype = adopenforwardonly adors.cursorlocation = aduseclient adors.source = “authors“ adors.open , , , , adcmdtable,15.3.4 field对象,field对象表示记录集中数据的某个单独的列。 一旦获得了记录集,通常接下来就是使用fields集合来读取记录集中的数据。 由于fields集合是recordset对象的默认属性,因此,在使用时可以省略此名称。例如: recordset.fields(0).value recordset(0),field对象的主要属性,actualsize 字段中实际存储的数据尺寸。 definedsize 字段能存储的最大数据量。 name 字段的名称。 numericscale 十进制小数点右边的位数。,field对象的主要属性(续),originalvalue 在其他用户改变字段之前字段的值。 precision 十进制小数的精度。 type 描述字段的数据类型的常量。 value 字段中存储的数据。,使用field对象,private sub cmdgo_click() 演示引用fields字段值的不同方法 dim adocn as new adodb.connection dim adors as new adodb.recordset dim adofld as new adodb.field 打开一个recordset,访问sql server自带的northwind数据库中的customers表 adocn.open “provider = sqloledb.1;data source=(local); user id = sa; initial catalog=northwind“ adors.open “customers“, adocn,使用field对象(续),下述几种对字段的访问方法效果是一样的 使用字段的索引,明确写出集合的名字 lboresults.additem adors.fields(0).value lboresults.additem adors.fields(0) 使用字段的索引,使用默认属性 lboresults.additem adors(0).value lboresults.additem adors(0),使用field对象(续),使用字段的名字,明确写出集合的名字 lboresults.additem adors.fields(“customerid“).value lboresults.additem adors.fields(“customerid“) 使用字段的名字,使用默认属性 lboresults.additem adors(“customerid“).value lboresults.additem adors(“customerid“) end sub,15.3.5 parameter对象,parameter对象表示commad对象的一个独立参数。 这个对象是sql查询时的一个运行参数,或者是存储过程中的输入或输出参数。 大多数情况下,参数用于各种类型的参数化命令中。,parameter对象的主要属性,direction:表示一个参数是输入参数还是输出参数。 name:参数的名称。 numericscale:十进制小数点右边的位数。 precision:十进制小数的精度。 properties:描述这个参数的property对象的集合。 type:参数的数据类型。 value:参数的当前值。,使用parameter对象,private sub cmdgetparameters_click() 获得指定的存储过程的参数 dim adocm as adodb.command dim adoprm as adodb.parameter dim adors as adodb.recordset set adocm = new adodb.command set adocm.activeconnection = adocn adocm.commandtext = “reptq3“ pubs数据库中的存储过程名 adocm.commandtype = adcmdstoredproc adocm.parameters.refresh 获得存储过程参数,使用parameter对象(续),填充parameters中的每个参数 for each adoprm in adocm.parameters if adoprm.direction = adparaminput then adoprm.value = inputbox(adoprm.name, “enter parameter value“) end if next adoprm 从存储过程得到记录集 set adors = adocm.execute . end sub,15.3.7 property对象,ado 对象有两种类型的属性:内置属性和动态属性。 内置属性是在ado中实现并立即可用于任何新对象的属性,并使用“对象名.property”语法来得到和设置属性值。 动态属性由基本的数据提供者定义,并出现在相应的ado对象的properties集合中。,property对象,动态属性只能通过集合使用“对象名.properties(0)” 或“对象名.properties(“name“)”语法来引用。 property对象有四个属性: name:标识属性的字符串。 type:用于指定属性数据类型的整数。 value:包含设置属性的值。 attributes:指示特定于提供者的属性特征的长整型值。,error对象,error对象记录数据操作过程中所发生的错误信息。 由于数据访问可能会引起多个错误,因此,error对象是包含在一个errors集合中的。 如果最后一次的操作成功了,则这个集合为空,否则,可以使用for each来依次检查每个错误。,error对象的主要属性,description:错误信息的文字描述。 helpcontext:错误信息的帮助主题。 helpfile:错误信息的帮助文件。 number:错误信息编码。 source:引起错误的对象。 sqlstate:原始odbc sqlstate常量。,使用error对象,private sub cmdconnect_click() 试图要连接到数据源,但捕获到错误 dim cnn as connection dim err as error on error goto handlererr set cnn = new connection cnn.open txtconnectionstring 假设要连接的服务器不存在,使用error对象(续),exithere: exit sub handlererr: for each err in cnn.errrors msgbox “error “ & err.number & “ “ & err.description next err resume exithere end sub,15.3.9 使用ado对象模型访问

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论