ADO.NET学习避免Database-Agnostic形式编程

开发 后端
在ADO.NET学习中你可能遇到Database-Agnostic形式的编程,这里教你怎样避免这种形式编程方法,希望对大家有帮助。

我们在ADO.NET学习中应该总结编程技巧,这让使我们的编程速度提高,这里就我在ADO.NET学习总结的关于避免Database-Agnostic形式的编程和大家分析一下。在ADO.NET学习中数据访问是强类型的,就是说在任何时候你都必须了解你正在处理的是什么数据源(data source)。相反,在ADO中,你可以编写数据访问代码(它们充分利用了OLE DB提供者的通用模式),并将基本的数据源只看做是个参数。

ADO对象模式提供了***的连接和命令对象,它们隐藏了基本的DBMS的特征。一旦你在 Connection对象上设置了Provider属性,那么为SQL Server或Oracle创建一个命令对象就需要同样的代码。许多开发人员都通过该功能来使用生产环境外的Access数据库,以便很快地测试或演示应用程序。

#T#在ADO.NET中是不能这么做的,因为在ADO.NET中,至少连接对象必须是特定于数据源的。你不能以一种间接或通用的方式来创建连接,除非你决定运用ADO的数据访问技术——OLE DB。在ADO.NET中,你可以用OleDbConnection类创建到一个数据库的连接,这个类可以让你访问各种数据源。在.NET托管环境中运用 System.Data.OleDb名字空间中的类并不特别有效,因为它们是用OLE DB来访问数据的。你只能用OLE DB来访问那些没有.NET数据提供者的数据源。

如果你的应用程序必须访问全异的数据源(而且你知道可能涉及什么数据源——一个合理的假设),那么你可以创建一个集中的factory类,它返回一个连接对象,并通过一个通用的接口(IDbConnection接口)来管理这个连接对象。Factory类在内部运用应用程序参数来决定使用什么.NET数据提供者:'

  1. Create the connection  
  2. Dim factory As New MyAppConnectionFactory  
  3. Dim conn As IDbConnection  
  4. conn = factory.CreateConnection(connString)  
  5.  
  6. ' Create the command  
  7. Dim cmd As IDbCommand = conn.CreateCommand(query)  

一旦你得到了一个连接对象,你就可以以database-agnostic的方式来创建和执行一个命令了,而不管使用的数据源是什么。你可以使用CreateCommand方法并通过IDbCommand接口来引用命令。然后,你可以用IDbCommand接口上的ExecuteReader方法或ExecuteNonQuery方法来执行命令。如果你用ExecuteReader,你就可以得到一个data reader并可以用IDataReader接口来对它进行一般的访问了。

你不能用一个通用的数据库编程模式来填充一个DataSet对象。实际上,你不能像创建一个命令那样以一种间接的方式来创建data adapter对象。原因就是,在有些情况下,data adapter不同于命令对象,它可以在内部隐含地创建一个连接。然而,它必须以一种强类型的方式工作,而且必须知道基本的数据库服务器是什么。

责任编辑:田树 来源: 博客
相关推荐

2009-11-03 17:25:59

ADO.NET编程技巧

2009-12-21 14:55:49

ADO.NET属性

2009-12-22 17:43:26

ADO.Net技术

2009-12-28 13:47:31

ADO.NET对象

2009-12-22 16:42:57

ADO.NET研究

2009-12-24 09:26:01

ADO.Net Tea

2009-11-13 09:45:54

ADO.NET程序集

2009-12-22 09:50:23

ADO.NET学习

2009-12-22 14:46:09

ADO.NET Ent

2009-12-23 17:21:31

ADO.NET团队

2009-12-28 17:09:34

ADO.NET实例

2009-12-24 11:12:29

ADO.Net技术

2009-12-23 10:10:59

ADO.NET编程

2010-01-04 11:02:06

ADO.NET组件

2011-05-20 11:31:07

ADO.NET

2009-12-28 15:11:36

ADO.NET专家

2009-09-04 14:52:03

ADO.NET Ent

2009-11-03 16:37:10

2009-12-22 14:05:33

ADO.NET代码

2009-11-11 09:23:38

ADO.NET Con
点赞
收藏

51CTO技术栈公众号