VB中基于ADO的数据库访问
在VB中常用的数据库访问接口有三种,即DAO、RDO、ADO三种对象模式。三种模式的具体解释见上篇文章: DAO/RDO/ADO,ODBC,OLEDB之间的关系 本篇文章我们重点介绍一下ADO的应用。 一:ADO的简介 ADO(ActiveX Data Object)是由微软公司开发的最新的数据库访问接口技术,因为ADO技术对OLEDB(Object Link and Embedding DataBase)进行了封装并实现了OLEDB所有的功能,所以ADO通过OLEDB可以访问任何类型的数据源,并且减少了编程量。ADO访问数据库的体系可以概括为: 二:基本流程: ADO访问数据库的目标是访问、编辑和更新数据源,因此使用ADO进行数据访问时,一般需要经过一下步骤: (1)创建一个数据源的连接,连接数据库。 Set objCn = NewConnection strcn ="provider=microsoft.jet.oledb.4.0;persist security info=false;" &_ "data source=" &App.Path & "实例1.mdb" objCn.ConnectionString = strcn objCn.Open (2)设置一个命令来访问数据源的数据。 (3)执行命令。 Set objCmd = New Command Set objCmd.ActiveConnection = objCn With objCmd .CommandText = "select * from 系统用户where 用户名 like ?" & "and 身份 like ?" .CommandType = adCmdText End With Dim Parm As New Parameter Set Parm =objCmd.CreateParameter("用户名",adVarChar,adParamInput,10) objCmd.Parameters.Append Parm Set Parm =objCmd.CreateParameter("身份",10) objCmd.Parameters.Append Parm (4)如果命令的执行导致返回数据库中表的某些行,则将他们保存在缓存中,产生相应的数据集对象,以便对其进行操作。 (5)通过数据集对象进行各种操作,包括修改,添加,删除等。
Private Sub Form_Load() Set objCn = New Connection objCn.Open "DSN=实例2DSN" Set objRS = New Recordset With objRS .CursorLocation = adUseClient .CursorType = adOpenDynamic .LockType = adLockOptimistic .Open "select * from 系统用户",objCn End With txtUsername =objRS.Fields("用户名").Value txtPassword =objRS.Fields("口令").Value txtMsg = objRS.AbsolutePosition &"/" & objRS.RecordCount '直接跳至某条记录 End Sub (6)更新数据源,即将修改的结果返回数据源。 objRS.Update (7)结束连接 Set objRS = Nothing objCn.Close Set objCn = Nothing 以上是ADO连接数据库的大概步骤,而实际应用时应根据具体情况灵活应用,有时可能只需执行部分步骤即可达到要求。 三:具体方法 在VB中,使用ADO访问数据库主要有两种方式:一种是使用ADO Date控件,通过对控件的绑定来访问数据库中的数据。一种是使用ADO对象模型,即编程访问方式(上面的举得例子就是这种方式) 1.使用ADO Data控件 可以快速建立数据绑定控件和数据提供者之间的连接。 在实现数据访问时,只需设置好ADO Data控件的数据相关的属性,无需编写程序代码或者只需少量的代码就可以实现数据访问,同时也可以结合DataGrid控件来实现数据的显示和修改。 具体步骤不在呈现! 2.使用ADO对象模型访问数据库 如上图,ADO对象模型共包括七个对象,三个主要对象和四个依赖于主要对象的对象集合,他们的关系可以概括为: 下面我们举一个简单的例子,访问数据库并执行一个简单的查询命令: 声明变量: Dim objRS AsRecordset '用于保存数据源记录集 Dim objCn AsConnection '用于创建数据源连接 Dim isNeedSave AsBoolean '用于标识是否需要执行保存操作 Private SubForm_Load() 建立数据库连接: Set objCn = New Connection '实例化Connection对象 strcn ="Provider=Microsoft.Jet.OLEDB.4.0;" & _ "Data Source=" & App.Path & "数据库db1.mdb" objCn.Open strcn '建立数据库连接 '创建客户端的记录集 Set objRS = New Recordset With objRS .CursorLocation = adUseClient '指定游标位置
.CursorType = adOpenStatic '指定使用键集游标 .LockType = adLockOptimistic '指定锁定类型 .Open "SELECT * FROM 系统用户",objCn End With
'显示第一个记录数据 txtUserName =objRS.Fields("用户名").Value txtPassword =objRS.Fields("口令").Value txtMsg = objRS.AbsolutePosition &"/" & objRS.RecordCount End Sub ’善后工作: Private SubForm_Unload(Cancel As Integer) Set objRS = Nothing '释放记录集对象 objCn.Close '释放数据库连接 Set objCn = Nothing '释放连接对象 End Sub 两种ADO数据库访问方式的特点: (1)使用ADO控件几乎封装了相应代码的所有功能,简化编程。但是也造成了它的灵活性较差,一般一个ADO Data控件只能在同一个数据源上打开一个记录集或者执行一个查询命令。而使用ADO对象模型就要灵活的多,可以建立独立的连接对象,可以在同一个数据源上打开多了记录集或执行多个命令。可动态的指定数据库的来源地。 (2)使用ADO Data控件可以简化操作过程,但功能上有所限制,很多功能都是静态的,在运行时很难改变。而使用ADO对象模型能够自由的控制各种操作。 (3)使用ADO Data控件在数据表记录的浏览、添加。修改上提供了简化操作,但如果数据库过大的话,就会造成效率低下。 也就是说:ADO控件最大的优点就是操作简单,但是灵活性和功能以及效率上没有ADO对象模型好。在使用时我们应该根据具体情况而定,用ADO Data控件访问小型的数据库应用程序,而大型的数据库应用程序的开发采用ADO对象模型来实现。 只是学习了一些皮毛,不对的地方欢迎大家指正! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |