对于使用ADO.NET通用接口创建对象

对于使用ADO.NET通用接口创建对象,第1张

使用ADO NET通用接口的另一个好处是它能被继承用于建立强类型的DataSet 强类型DataSet的好处包括设计时的检查和强类型DataSet 的Visual Studio NET语句填充

对于ADO NET通用接口的相关使用还是比较常见 就使用ADO NET DbProviderFactories并扩充兼容mysql我深入的研究了一下 我们现在一起来看看吧 ADO NET 为各种ADO NET类引入了一个提供程序工厂的模型以及通用基类

ADO NET通用接口的限制 接口不易扩展 ADO NET 无法创建某些类的实例 ADO NET 无法判断可用的 NET数据提供程序 提供工厂模型如何解决上述限制 通过抽象积累来扩展ADO NET模型

使用ADO NET DbProviderFactories类来创建对象 提供程序工厂模型的限制 许多查询结构都是数据库特有的 为参数化查询设置CommandText时 可能需要提供程序特有的代码 指定参数数据类型可能需要提供程序特有的代码 为了使开发的代码通用

不局限于特定的数据库 本次开发中决定使用DbProviderFactory+标准SQL 以开发一个适用于mysql和 sqlserver的封装 但DbProviderFactories 并没有提供对mysql的DbProviderFactory的支持 所以需要扩充ADO NET通用接口兼容mysql 而且在 中mysql和sqlserver的ParameterMarkerFormat都有bug ADO NET通用接口所以扩展类要解决这个bug

public static class DbProviderFactoriesEx

{

public static DbProviderFactory GetFactory(string providerName)

{

if (providerName == null)  throw new ArgumentNullException( providerName )

DbProviderFactory dbFactory  switch (providerName)

{

case MySql Data MySqlClient :  return new MySqlClientFactory()  default:  return DbProviderFactories GetFactory(providerName)

}

}

public static string GetParameterMarkerFormat(DbConnection connect)

{

if (connect == null)

throw new ArgumentNullException( connect )

Type type = connect GetType()

if (type == typeof(MySql Data MySqlClient MySqlConnection))

return ?{ } //mysql bug

if (type == typeof(System Data SqlClient SqlConnection))

return @{ } //ms bug  connect Open()

string result = connect GetSchema( DataSourceInformation ) Rows[ ][ ParameterMarkerFormat ] ToString()

connect Close()  return result

}

lishixinzhi/Article/program/net/201311/11404

ADO.NET是一组用于和数据源进行交互的面向对象类库。通常情况下,数据源是数据库,但它同样也能够是文本文件、Excel表格或者XML文件。 ADO.NET允许和不同类型的数据源以及数据库进行交互。然而并没有与此相关的一系列类来完成这样的工作。因为不同的数据源采用不同的协议,所以对于不同的数据源必须采用相应的协议。一些老式的数据源使用ODBC协议,许多新的数据源使用OleDb协议,并且现在还不断出现更多的数据源,这些数据源都可以通过.NET的ADO.NET类库来进行连接。

简单的说,这是说怎么样和数据库交互(增 删 改 查),

我是从“上海全鼎软件学院”毕业的————————


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/9391121.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存