Visual C#中使用ADO访问数据库

ZDNet软件频道 时间:2002-08-30 作者:黎宇 |  我要评论()
本文关键词:liyu
本文介绍微软最新技术Visual Studio.NET的应用。结合软件人员已熟悉的ADO知识,介绍了数据访问的方法。使新旧知识能够结合使用。
查看作者文章 本文介绍微软最新技术Visual Studio.NET的应用。结合软件人员已熟悉的ADO知识,介绍了数据访问的方法。使新旧知识能够结合使用。

Visual Studio.NET是微软对Visual Studio语言进行的升级版本。它是一种完全面向对象的编程语言。微软对系统进行了很大的改进。其中对ADO的改进特别大。在Visual C#中的ADO在Visual C#.NET中不再支持。Visual C#.NET中以 ADO.NET取代以前的ADO。ADO.NET固然有较好的性能。但它编程起来却很复杂,比较麻烦,不是一般的新手所能达到的。用惯ADO的人都认为ADO简单、方便、适用。那么在Visual C#.NET中怎样应用ADO呢?

本人经过不断的摸索,发现在Visual C#.NET中ADO一样可以用,并且很好用。结合Visual C#.NET强大的类开发功能,本人把ADO开发成组件,方便大家的应用。方法如下:

启动Visual Studio.NET。在新建项目中选择Visual C#项目,在模板中选择类库,在名称中输入类库如ADOAccess.确定,则进入类库开发环境中,把Class1换名为CADOAccess。

在项目菜单中加入引用,选择COM页,找到 Microsoft ActionX Data Object 20 Library 或更高版本确定。COM是Microsoft为了区分现在的.net,兼容以前的开发方式而设置的,凡是.net之前的组成件都可在COM页中可找到。(Microsoft ActionX Data Object 20 Library是Microsoft提供的ADO组件。它极大地方便了数据库的访问,是开发数据库有关软件的最实用的工具之一)在类名上面写上using System;using ADODB; 2条引用语句,这里分别是引用System,ADO来源。

在类中定义一局部连接对象变量。private Connection mCnnDB;然后定义连接Access数据库的过程. Access数据库是Microsoft开发的本地数据库,用adUseClient指定。它通过Microsoft.Jet.OLEDB数据访问方式访问数据库,Microsoft.Jet.OLEDB又有多种版本,其中4.0是最高版本,它能访问ACCESS 2000,所以这里的数据提供者指定为Microsoft.Jet.OLEDB.4.0。指定了本地数据库和提供者后,就可打开一个数据库了,用open方法实现。完整的代码如下:list1

ODBC是一种广泛使用的连接多种数据库的方法,有万能钥匙之功效,但它需要通过ODBC先建立一个DNS,这里不作详细说明.有了DNS就可访问所连接的数据库。访问ODBC时先指明提供者,提供者只能为Microsoft 命名的MSDASQL,然后通过连接字符串指定数据源,用户名和密码,在下面的ConnectionString中指定,最后用open打开。由于ODBC分有用户名和无用户名两者,我们必须分别实现,借助类的函数名重载功能,我们编写两个同名的过程,完整的代码如下:list2

SQL Server数据库是Microsoft开发的一种广泛使用的后台数据库。访问SQL Server可以通过指明ODBC驱动程序为SQL Server来实现,即在连接字符串中要有driver={SQL Server},由于它是后台数据库,所以必须指明SQL Server所在的计算机名,通常把它称为服务器,下面的ServerName就说明这点,然后指明是连接哪个数据库。其它的类似上面的ODBC。SQL Server的用户分为WIN NT 和授权用户,WIN NT用户是不需要指定用户名和密码的超级用户,否则要指明用户名和密码,这责定于SQL Server数据库管理员,在此不作详细说明,完整的代码如下:list3

Oracle数据库是目前最有影响的一种广泛使用的后台数据库。访问Oracle先指明其提供者MSDAORA。Oracle与Sql Server不同的是它不是通过数据库来管理的,所以它不需指明数据库,但它连接时必须指明用户,即使是超级用户也如此,这是它的安全性能高于Sql Server的理现之一,所以我们只须编写一个过程。其它类似。完整的代码如下:list4

有了上面的连接数据库的方法,我们就直接可读写数据了。下面利用ADO扩充读写数据的函数。

ADO在访问表时要指明其光标类型和锁类型,且指定不同其权限就不同,权限分为读写二种,这里我们编写的是有读写权限的通用的函数,所以我们指定光标CursorType为adOpenKeyset,锁为开锁adLockOptimistic,.net需指明其来源,这是为什么开始要有 “Imports ADODB.CursorLocationEnum”语句的原因。有了这些,就可通过执行查询语句来打开一个表。打开表后,我们判断表是否为空表,不是则移动记录至尾后再现移至记录头(这是为了可以访问其中每条记录,特别是用RecordCount求记录数时不至有时返回-1的关键),最后返回一个记录集,完整的代码如下:list5

下面是扩充上面函数的功能,通过函数名重载的方法编写相同函数不同功能的方法。可以跟据条件访问单个表。List6

我们继续扩充访问表的功能。有时要打开多个表,读写其中的数据,我们可以通过建立查询视图实现,其它类似上面的OpenTable,完整的代码如下:list7

下面编写了一个用记录集填充AxMSFlexGrid网格的过程。其中函数RecordCount是我自己编写的求记录集中记录数据的函数。这里不能直接用ADO的RecordCount求得。如果记录集是空,则退出过程。否则求出记录集的记录数和字段数据用来确定AxMSFlexGrid网格的行列数据,然后读出记录集的数据直接填充到AxMSFlexGrid网格。要说明的是读出记录集的数据时要先判断是否为空值,由函数IsDBNull实现(函数IsDBNull来源于System.DBNull).最后记录集应该返回到记录首位,否则影响了原有的记录集,完整的代码如下:list8

以上代码编好后放在所定义的类中.下面的省略号代表上面的函数和过程。可直接生成为DLL组件。方法是在.net编辑环境下选择生成菜单中按生成就生成了DLL文件。然后,你可以直接调用该组件了。List9

以上代码编好后可直接生成DLL组件,即在生成菜单中按”生成”就生成了DLL文件。然后,就可以在Visual Studio.NET下直接调用该组件。现用Visual Basic.NET来测试之。方法如下:在Visual Basic.NET中建立一项目,在窗口Form1中加入一AxMSFlexGrid网格命名为MsGrid1,布置如下:

然后引用刚建立的Dll。方法是选择项目菜单的添加引用,选择项目页,按浏览找到其DLL文件,确定后引用完成。

在Form1中定义一CADOAccess对象,在Load事件中编写调用代码,分别测试其功能,代码如下:list10

说明:

1.你的机上要有Access数据库文件(e: est.mdb),MS Server数据库中有数据库test,doc_file 为其test中的表,Oracle数据库中有表DEMO.customer

2. wj-1058为MS Server服务器名,wj-1059为Oracle服务器名,"user", "pass"分别为用户名及口令

3.一次只能连接一种数据库。要连接多种数据库要重新定义ADOAccess对象。以上程序在Visual Studio.NET中调试通过。

总结

上面方法介绍了微软公司的Visual C#.NET中有关数据库的开发,ADO在Visual C#.NET中的应用,连接几种最实用的数据库,且介绍了编写组件的方法。利用该知识极大地方便了软件开发者访问数据的能力,提高了开发效率。


责任编辑:炒饭

欢迎评论或投稿


百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134