收藏 分享(赏)

VB中的ADO数据对象编程.doc

上传人:dreamzhangning 文档编号:2725436 上传时间:2018-09-26 格式:DOC 页数:16 大小:603.50KB
下载 相关 举报
VB中的ADO数据对象编程.doc_第1页
第1页 / 共16页
VB中的ADO数据对象编程.doc_第2页
第2页 / 共16页
VB中的ADO数据对象编程.doc_第3页
第3页 / 共16页
VB中的ADO数据对象编程.doc_第4页
第4页 / 共16页
VB中的ADO数据对象编程.doc_第5页
第5页 / 共16页
点击查看更多>>
资源描述

1、VB 中的 ADO 数据对象编程【知识导读】 ADO 是 ActiveX Data Objects 的缩写,是一项新的数据库的存取技术。相对于 VB5.0 中的 DAO他具有更为简化的对象模型,无论是存取本地的还是远程的数据,都提供了一致的接口。ADO 定义了一个可编程的对象集合.ADO 对象模型如图所示:对于 ADO 其中对象来说,比较重要的是:Command,Connection,Recordset 对象。(1) Connection 对象Connection 对象用于建立与数据库的连接.通过连接可从应用程序访问数据源.它保存诸如指针类型,连接字符串,查询超时,连接超时和缺省数据库这样的连

2、接信息.(2) Command 对象在建立 Connection 后,可以发出命令操作数据源.一般情况下,Command 对象可以在数据库中添加,删除或更新数据,或者在表中进行数据查询.Command 对象在定义查询参数或执行一个有输出参数的存储过程时非常有用。(3) Recordset 对象Recordset 对象只代表一个记录集,这个记录集是一个连接的数据库中的表,或者是 Command 对象的执行结果返回的记录集.在 ADO 对象模型中,是在行中检查和修改数据的最主要的方法,所有对数据的操作几乎都是在 Recordset 对象中完成的.Record 对象用于指定行,移动行,添加,更改,删

3、除记录。下面就具体地说说如何用 ADO 存取数据:在实际编程过程中使用 ADO 的一个典型的存取数据的步骤为:(1) 连接数据源(2) 打开记录集对象(3) 使用记录集(4) 断开连接那么具体怎么是用呢?分别来看。(1) 如何连接数据源利用 Connection 对象可以创建一个数据源的连接.应用的方法是 Connection 对象的 Open 方法。语法:Connection 对象.Open ConnectionString, UserID, PassWord, OpenOptions其中:Connection 对象为你定义的 Connection 对象的实例;ConnectionStrin

4、g 为可选项 ,包含了连接的数据库的信息 ;UserID 可选项,包含建立连接的用户名;PassWord 为可选项,包含建立连接的用户密码 ;OpenOptions 为可选项 ,假如设置为 adConnectAsync,则连接将异步打开.(2)打开记录集对象实际上记录集返回的是一个从数据库取回的查询结果集.因此他有两种打开方法:一种使用记录集的 Open 方法,另一种是用 Connection 对象的 Execute 方法。(a)记录集的 Open 方法语法:Recordset.Open Source, ActiveConnection, CursorType, LockType, Optio

5、ns 其中:Recordset 为所定义的记录集对象的实例。Source 可选项,指明了所打开的记录源信息.可以是合法的命令 ,对象变量名,SQL 语句,表名,存储过程调用,或保存记录集的文件名。ActiveConnection 可选项,合法的已打开的 Connection 对象的变量名,或者是包含ConnectionString 参数的字符串。CursorType 可选项,确定打开记录集对象使用的指针类型。LockType 可选项 确定打开记录集对象使用的锁定类型。(b)Connection 对象的 Execute 方法语法:Set recordset=Connection.Execute(

6、CommandText,RecordsAffected,Options) 参数说明:CommandText 一个字符串 ,返回要执行的 SQL 命令,表名,存储过程或指定文本。RecordsAffected 可选项,Long 类型的值,返回操作影响的记录数。Options 可选项,Long 类型值 ,指明如何处理 CommandText 参数。介绍完了如何打开数据库下面说说怎么使用吧.(3)使用记录集(a)添加新的记录:在 ADO 中添加新的记录用的方法为:AddNew 它的语法为:Recordset.AddNew FieldList, ValuesRecordset 为记录集对象实例Fiel

7、dList 为一个字段名,或者是一个字段数组.Values 为给要加信息的字段赋的值,如果 FiledList 为一个字段名,那么 Values 应为一个单个的数值,假如 FiledList 为一个字段数组,那么 Values 必须也为一个个数,类型与 FieldList 相同的数组。再用完 AddNew 方法为记录集添加新的记录后,应使用 UpDate 将所添加的的数据存储在数据库中.不过你最好在用 UpDate 方法之前使用 CancelUpdate 方法来取消该项操作。(b)修改记录集其实修改核对记录集中的数据重新赋值没有什么太大的区别,只要用 SQL 语句将要修改的字段的一个数据找出来

8、重新赋值就可以了.这里不再细说了。(c)删除记录在 ADO 中删除记录集中的数据的方法为:Delete 方法,这与 DAO 对象的方法相同,但是在 ADO中它的能力增强了,可以删掉一组记录了.它的语法如下:Recordset.Delete AffectRecords 其中的,AffectRecords 参数是确定 Delete 方法作用的方式的 ,它的取值如下:adAffectCurrent 只删除当前的记录adAffectGroup 删除符合 Filter 属性设置的那些记录.为了一次能删除一组数据,应设置 Filter属性.(d)查询记录在 ADO 中查询的方法很灵活,有几种查询的方法.使

9、用连接对象的 Execute 方法执行 SQL 命令,返回查询记录集.使用 Command 对象的 Execute 方法执行 CommandText 属性中设置的 SQL 命令,返回查询记录集.第一个方法的具体语法在前面数据连接时已经介绍过了,下面就第二方法具体说一下.Command 对象的 Execute 方法的语法如下:Command.Execute RecordsAffected, Parameters, Options 不返回记录集或者 Set Rscordset=cmmnad.Execute(RecordsAffected,Parameters,Options) 返回记录集 Comm

10、andText 的语法为 :Command.CommandText=stringvariable 其中: stringvariable 为字符串变量,包含 SQL 语句,表名或存储过程.(4) 断开连接在应用程序结束之前,应该释放分配给 ADO 对象的资源,操作系统回收这些资源并可以再分配给其他应用程序。使用的方法为:Close 方法。语法如下:Object.Close Object 为 ADO 对象 【编程内容】1、 利用 SQL Server2000 数据查询分析器建立数据库应用结构drop database testgocreate database testgouse testgocr

11、eate table student(sno nvarchar(7) primary key,sname nvarchar(10) not null,ssex nvarchar(2) check(ssex=男 or ssex=女),sage tinyint check(sage=15 and sage=45 ThenMsgBox “请输入学生的正确年龄!“, vbOKOnly + vbExclamation, “提示“txtSage.SetFocusExit SubEnd Ifcn.Open strConnrs.Open strSql & “ where sno=“ & txtSno.Text

12、 & “, cn, adOpenKeyset, adLockOptimisticIf rs.RecordCount 0 ThenMsgBox “你输入的学生记录编号已存在,请重新输入“, vbOKOnly + vbExclamation, “提示“txtSno.SetFocusElseIf Option1.Value = True Thentemp = “insert into student values(“ & Trim(txtSno.Text) & “,“ & Trim(txtSname.Text) & _“,“ & Trim(Option1.Caption) & “,“ & Trim(

13、txtSage.Text) & “,“ & Trim(txtSdept.Text) & “)“Elsetemp = “insert into student values(“ & Trim(txtSno.Text) & “,“ & Trim(txtSname.Text) & _“,“ & Trim(Option2.Caption) & “,“ & Trim(txtSage.Text) & “,“ & Trim(txtSdept.Text) & “)“End Ifcn.Execute tempIf cn.Errors.Count = 0 ThenMsgBox “添加学生记录成功!“, vbOKO

14、nly, “提示“ElseMsgBox “添加学生记录失败!“, vbOKOnly, “提示“End IfCall setEmptycmdDelete.Enabled = TruecmdUpdate.Enabled = TruecmdSave.Enabled = FalseCall setEnabled(False)End Ifrs.Closecn.CloseCall fillGridEnd SubPrivate Sub UpdateRecord()Dim temp As StringIf (Not IsNumeric(txtSage.Text) Or Val(txtSage.Text) 45

15、 ThenMsgBox “请输入学生的正确年龄!(年龄从 15 岁到 45 岁)“, vbOKOnly + vbExclamation, “提示“txtSage.SetFocusExit SubEnd Ifcn.Open strConnrs.Open “select * from student where sno =“ & Trim(txtSno.Text) & “, cn, adOpenKeyset, adLockOptimisticIf rs.RecordCount 0 ThenIf Option1.Value = True Thentemp = “update student set

16、sname=“ & Trim(txtSname.Text) & “,ssex=“ & Trim(Option1.Caption) & _“,sage=“ & Trim(txtSage.Text) & “,sdept=“ & Trim(txtSdept.Text) & “ where sno=“ & Trim(txtSno.Text) & “Elsetemp = “update student set sname=“ & Trim(txtSname.Text) & “,ssex=“ & Trim(Option2.Caption) & _“,sage=“ & Trim(txtSage.Text)

17、& “,sdept=“ & Trim(txtSdept.Text) & “ where sno=“ & Trim(txtSno.Text) & “End Ifcn.Execute tempMsgBox “修改学生记录成功!“, vbOKOnly, “提示“cmdDelete.Enabled = TruecmdAddNew.Enabled = TruecmdSave.Enabled = FalseCall setEnabled(False)End Ifrs.Closecn.CloseCall fillGridEnd SubPrivate Sub setText()txtSno.Text = rs

18、.Fields(0)txtSname.Text = rs.Fields(1)If Trim(rs.Fields(2) = “男“) ThenOption1.Value = TrueElseOption2.Value = TrueEnd IftxtSage.Text = rs.Fields(3)txtSdept.Text = rs.Fields(4)End SubPrivate Sub setEmpty()txtSno.Text = “txtSname.Text = “Option1.Value = TruetxtSage.Text = “txtSdept.Text = “End SubPriv

19、ate Sub setEnabled(ByVal b As Boolean)txtSno.Enabled = btxtSname.Enabled = bOption1.Enabled = bOption2.Enabled = btxtSage.Enabled = btxtSdept.Enabled = bMSHFlexGrid1.Enabled = Not bEnd SubPrivate Sub fillGrid()cn.Open strConnrs.Open strSql, cn, adOpenKeysetSet MSHFlexGrid1.DataSource = rsCall setTex

20、trs.Closecn.CloseEnd Sub8、 编写窗体加载的 Form_Load 事件过程代码Private Sub Form_Load()Dim i As Integercn.Open strConnrs.Open strSql, cn, adOpenKeysetSet MSHFlexGrid1.DataSource = rsFor i = 0 To 4Combo1.AddItem rs.Fields(i).NameNextCombo1.ListIndex = 0Combo2.ListIndex = 0rs.Closecn.ClosesetEnabled (False)End Sub

21、9、编写查询记录按钮的事件过程代码Private Sub cmdFind_Click()Dim strTemp As StringDim a(4) As Stringa(0) = “sno“a(1) = “sname“a(2) = “ssex“a(3) = “sage“a(4) = “sdept“If Trim(Combo1.Text) = “年龄“ ThenIf Not IsNumeric(txtFind.Text) ThenMsgBox “请输入正确的年龄!“, vbOKOnly + vbExclamation, “提示“txtFind.SetFocusExit SubEnd IfstrT

22、emp = a(Combo1.ListIndex) & “ “ & Combo2.Text & “ “ & Trim(txtFind.Text)ElseIf Trim(txtFind.Text) = “ ThenMsgBox “请输入要查询的信息!“, vbOKOnly + vbExclamation, “提示“txtFind.SetFocusExit SubEnd IfstrTemp = a(Combo1.ListIndex) & “ “ & Combo2.Text & “ “ & Trim(txtFind.Text) & “End Ifcn.Open strConnrs.Open strS

23、ql & “ where “ & strTemp, cn, adOpenKeysetIf rs.RecordCount 0 Theni = MsgBox(“真的要删除该记录吗?“, vbYesNo + vbExclamation, “提示“)If i = vbYes Thencn.Execute “delete from student where sno=“ & Trim(txtSno.Text) & “MsgBox “删除学生记录成功!“, vbOKOnly, “提示“End IfElseMsgBox “请选择要删除的学生记录!“, vbOKOnly + vbExclamation, “提

24、示“End Ifrs.Closecn.CloseCall fillGridEnd Sub14、编写保存记录按钮的事件过程代码Private Sub cmdSave_Click()If flag = 1 ThenCall AddNewRecordElseIf flag = 2 ThenCall UpdateRecordEnd IfEnd Sub15、编写 MSHFlexGrid1 网格控件单击事件过程代码Private Sub MSHFlexGrid1_Click()cn.Open strConnrs.Open strSql & “ where sno=“ & MSHFlexGrid1.Text

25、Matrix(MSHFlexGrid1.Row, 1) & “, cn, adOpenKeysetIf rs.RecordCount 0 ThensetTextEnd Ifrs.Closecn.CloseEnd Sub16、编写窗体卸载的 Form_Unload 事件过程代码Private Sub Form_Unload(Cancel As Integer)If Not rs Is Nothing ThenIf rs.State = adStateOpen Then rs.CloseEnd IfSet rs = NothingIf Not cn Is Nothing ThenIf cn.State = adStateOpen Then cn.CloseEnd IfSet cn = NothingEnd Sub17、自由发挥,完善代码,测试功能【实验作业】1、 总结数据库应用的特征。2、 完成 VB 数据库应用程序设计。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报