ADO技术在VB访问SQL数据库中的应用

  • 格式:doc
  • 大小:23.00 KB
  • 文档页数:7

龙源期刊网 http://www.qikan.com.cn ADO技术在VB访问SQL数据库中的应用 作者:柏建普 杜娟 来源:《电脑知识与技术》2013年第29期

摘要:随着数据库开发技术的广泛应用,利用Visual Basic进行C/S应用程序开发是目前较为典型的做法。该文通过一个仓库信息管理系统的设计和开发,详细介绍了在VB环境下,利用ADO接口技术实现与SQL Server 2005数据库连接及访问的过程。

关键词:VB;数据库访问;ADO技术 中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2013)29-6481-05 在数据库应用系统的开发中,数据库访问技术是一个重要的组成部分,它是连接前端应用程序和后台数据库的关键环节。和VC、Delphi等高级语言相比, VB具有不可取代的简单易用性和真正的“所见即所得”的特性。VB不但为用户提供了较为完善的文件访问和处理功能,同时具备了强大的数据库管理功能,利用数据库技术处理大型的管理信息系统(MIS)远比通过文件处理的效率高[2]。

1 Visual Basic 数据库访问技术 使用VB6.0可以创建将每个步骤封装在数据访问系统中的部件。从数据源开始,Microsoft可视化数据工具提供了在SQL和Oracle系统中查看并操作表、视图、存储过程和数据库结构描述的功能[1]。数据源是数据提供程序和数据使用者之间的桥梁,可以通过ADO(Microsoft ActiveX Data Objects)创建数据源。ADO是VB在任何数据源中访问数据的主要方法。

开发基于VB的数据库应用,可以通过数据访问对象DAO (Data Access Object)、远程数据对象RDO(Remote Data Object)和ActiveX数据对象ADO(ActiveX Data Objects)等三种数据访问接口。数据访问接口是一个对象模型,它代表了访问数据的各个方面。使用VB,可以在任何应用程序中通过编程控制连接、语句生成器和供使用的返回数据[1]。

对于这三种数据接口,每一种方法都代表着数据访问技术发展的不同阶段以及逐步完善的过程。ADO技术是最新的接口技术,比RDO和ADO更加的简单、灵活,通过较少的对象,实现了更多的属性、方法及事件的融合。在简化编程的同时,实现了更高效率的数据访问。

2 ADO数据访问技术 ADO Data控件时VB6.0提供的一个ActiveX控件,使用ADO Data控件可以快速建立数据绑定的控件和数据提供者之间的连接[3]。

2.1 VB环境下ADO Data控件的添加 龙源期刊网 http://www.qikan.com.cn 利用ADO Data控件可以实现本地数据库或远程数据的连接;可以打开用户指定的数据库表,定义基于SQL语言的查询、增删数据库表中的记录集合;还可以传递字段数值给数据绑定的控件,也可以在控件中显示或修改数值。

要使用ADO Data控件,需要现在VB下的“工程”菜单上选择“部件”选项,然后在“部件”对话框中选择“Microsoft ADO Data Control 6.0(OLEDB)”选项,单击确定按钮后,即可在VB的控件工具箱内使用ADO Data控件。通过该控件就可以直接访问记录集,移动记录指针,实现对数据库的操作,不再需要程序代码的编写。

2.2 ADO Data控件的主要属性 2.2.1 ConnectionString 属性 连接属性用来建立到数据源的连接信息。由于VB的ADO对象模型可以连接不同类型的数据库,所以在使用ADO Data控件时也可通过这个属性设置要连接的数据库。可以通过三种连接资源选项建立与数据源的连接,即使用Data Link文件、使用ODBC数据资源名称和使用连接字符串三个选项完成数据链接。

2.2.2 RecordSource 属性 记录源属性用于设置要连接的表或者SQL查询语句。命令类型选择默认,在命令文本(SQL)中输入SQL语句。如:select * from oper

2.2.3 CommandType 属性 用来指定RecordSource属性的取值类型。可以直接在属性窗口的CommandSource属性的下拉列表中选择需要的类型,有以下4个不同的取值:

adCmdUnknow 默认值,表示命令文本中的命令类型未知。 adCmdTable 表示将命令类型作为其列全部由内部生成的SQL查询返回的表格的名称进行计算。

adCmdText 表示将命令文本作为命令或存储过程调用的文本化定义进行计算。 adCmdStoreProc 表示将命令文本作为存储过程名进行计算。 3 数据源的创建 3.1 创建SQL Server 数据库 龙源期刊网 http://www.qikan.com.cn 在SQL Server 2005中设计一个仓库信息管理数据库,数据库命名为WMS,其中设计包含如下数据表:Client(客户表)、Storehouse(仓库信息表)、Oper(用户表)、ProType(产品类目表)、Product(产品信息表)、StoreIn(入库操作信息表)、TakeOut(出库操作信息表)、ProInStore(库存产品信息表)。

3.2 创建数据源 第一步 打开控制面板中的管理工具,双击数据源(ODBC),显示ODBC数据源管理器,选择“系统DSN”选项卡,如图1所示。

从系统数据源列表中选择“WMS”选项(这是在SQL Server中建立的数据库的名称),单击“配置”按钮,出现如图2所示的界面。

图2 创建新数据源界面 第二步 从驱动程序列表中选择“SQL Server”选项,单击“完成”按钮,按照界面提示,保持数据源名称为“WMS”,其他选择默认选项完成数据源的创建。直至ODBC Microsoft SQL Server 安装界面的出现,表示成功配置了新的数据源,如图3所示。

第三步 单击“测试数据源”按钮,出现如图4所示的SQL数据源测试界面,界面信息显示命名为WMS的数据源测试成功,这样在应用程序中就可以使用这个数据源了。

4 VB环境下利用ADO Data控件访问数据库 4.1 数据库表设计 打开SQL Server 2005,在仓库信息管理数据库WMS中添加oper表。该表用来存放本系统用户的信息。基本数据包括用户名、密码和用户级别三项,用户级别分为“一般操作员”和“系统管理员”两类。oper表结构如图5所示。

4.2 系统实现 4.2.1 新建工程 打开VB编辑器,点击新建工程,工程命名为Warehouse.vbp。首先在工程中添加公共模块Moudule1.Bas,其中包含一些被本工程中一些窗体所调用的全局变量和过程;然后在工程中添加各个窗体,系统结构如图4.2所示。

公共模块Moudule1.Bas代码如下: Public userlever As String '保存用户级别 龙源期刊网 http://www.qikan.com.cn Public flag As String '记录操作标记 Public tna As String '保存表名:用于调用edrec1 Public cap As String '保存标题名:用于调用edrec1 Public recs As Integer '保存记录集中记录个数 Sub main() '主过程 pass.Show vbModal '以有模式方式调用pass窗体 End Sub Public Function exesql(ByVal sql As String) As ADODB.Recordset sql = Trim$(sql) Set conn = New ADODB.Connection Set rst = New ADODB.Recordset conn.ConnectionString = "DSN=WMS;UID=sa;PWD=;" conn.Open Set rst.ActiveConnection = conn rst.LockType = adLockOptimistic rst.CursorType = adOpenKeyset rst.Open sql Set exesql = rst Set res = Nothing Set conn = Nothing End Function Public Sub deldata(ByVal tn As String) 龙源期刊网 http://www.qikan.com.cn '删除指定表中所有记录,对于oper表添加一个系统用户 Dim sql As String sql = "delect" & Trim$(tn) Set conn = New ADODB.Connection conn.ConnectionString = "DSN=WMS;UID=;PWD=;" conn.Open conn.Execute sql If Trim(tn) = "oper" Then sql = "insert oper values('1234','1234','系统管理员')" conn.Execute sql End If conn.Close End Sub Public Sub endata(keyasc As Integer) If keyasc = 13 Then SendKeys "{TAB}" End If End Sub 4.2.2 登录窗口设计 pass窗体用来接受用户的用户名及口令输入,并判断用户的合法性。如果是合法用户,系统会自动释放该窗体并启动main窗体;否则释放窗体而不启动main窗体。该窗体运行结果如图6所示。

图6 系统登录界面