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

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

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

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

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

  不局限于特定的数据库,本次开发中决定使用DbProviderFactory+标准SQL,以开发一个适用于mysql和 sqlserver的封装,但DbProviderFactories 并没有提供对mysql的DbProviderFactory的支持,所以需要扩充ADO.NET通用接口兼容mysql,而且在ADO.net 2.0中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 "?{0}";//mysql bug

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

  return "@{0}";//ms bug connect.Open();

  string result = connect.GetSchema("DataSourceInformation").Rows[0]["ParameterMarkerFormat"].ToString();

  connect.Close(); return result;

  }

  }

时间: 2024-08-03 00:03:06

对于使用ADO.NET通用接口创建对象的相关文章

微信公众平台通用接口API指南

  下述文档已过期,新版文档请访问 http://www.cnblogs.com/txw1958/p/weixin-access-token.html  微信公众平台目前分成消息接口和通用接口两大模块. 接入消息接口的微信公众账号,当关注该公众账号的粉丝向其发送消息,微信服务器会对公众账号所对应的服务器地址推送一个特定结构的消息体,公众账号开发者可以通过响应包进行对该条消息的回复. 通用接口的作用是实现诸如获取粉丝资料,上传媒体文件以便消息接口回复图片.语音和视频等多媒体消息等功能,丰富消息接口

Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明

原文:Senparc.Weixin.MP SDK 微信公众平台开发教程(八):通用接口说明 一.基础说明     这里说的"通用接口(CommonAPIs)"是使用微信公众账号一系列高级功能的必备验证功能(应用于开发模式).     我们通过微信后台唯一的凭证,向通用接口发出请求,得到访问令牌(AccessToken),然后使用访问令牌去使用各项需要身份验证的高级功能,例如自定义菜单.获取用户信息.单发消息.群发消息等等.     目前所有的服务号和通过认证的订阅号,都可以在微信公众账

有没有身份证的通用接口

问题描述 有没有身份证的通用接口,或是可以读酒店中公安局身份登记系统的身份证信息.或是身份证阅读器厂家有没有这样的通用接口? 解决方案 解决方案二:叫公安给你帮你写个接口~解决方案三:引用1楼superior_yong的回复: 叫公安给你帮你写个接口~ 呵呵.这个玩笑开大了.主要这样的,每次客人在酒店入住时用身份证要刷公安系统,完了还要在我们的系统上再刷一次,操作麻烦,这样酒店也要起用两个设备.有没有办法解决这样的情况.做过的人指点一下.解决方案四:这个只有公安系统才有的吧.解决方案五:身份证读

网络子系统14_邻居子系统通用接口

//创建一个新的邻居项 //参考 深入理解linux网络技术内幕 // 1.邻居子系统为具体的邻居协议,提供通用的功能接口 // 2.系统中所有的邻居协议被链接在neigh_tables链表中 // 3.neigh_table代表一个具体的邻居协议 // 4.具体邻居协议在运行时的行为,可以通过struct neigh_parms调节, // neigh_params与设备关联,每个邻居协议neigh_table提供一个默认的neigh_params. //注册一个邻居协议到系统中 // 1.与

关于Spring中为什么要用接口创建对象求助大家

问题描述 有个接口叫UserManager,它的实现类是UserManagerImpl.配置文件中配置<beanid="userManager"class="com.Login.UserManagerImpl"/>.并且没有在配置文件中配置强制使用CGLIB.但是我想问的是为什么在客户端运行时代码写成:UserManageruserManager=(UserManager)beanFactory.getBean("userManager&quo

网络子系统30_桥接子系统通用接口

// 添加网桥设备 // 参数: // name,需要全局唯一 // 调用路径:socket ioctl->br_add_bridge // 函数主要任务: // 1.创建一个新的网络设备 // 2.初始化网络设备的通用字段以及网桥设备的字段 // 3.向系统注册网络设备 1.1 int br_add_bridge(const char *name) { struct net_device *dev;//net_bridge->dev int ret; dev = new_bridge_dev

网络子系统39_inet_peer缓存通用接口

// 查找inet_peer // 参数: // daddr,ip地址 // create,指示daddr不存在时,是否新建 // 注:inet_peer在内存中组织为平衡树的形式 1.1 struct inet_peer *inet_getpeer(__be32 daddr, int create) { struct inet_peer *p, *n; struct inet_peer **stack[PEER_MAXDEPTH], ***stackptr; //获取读锁 read_lock_

浅析Java设计模式编程中的单例模式和简单工厂模式_java

单例模式动机 有时候只有一个类的实例是很重要的.比如,一个系统应该只有一个窗口管理实例. 单例模式是最简单设计模式:类负责实例化自己,确保只有一个实例,并且提供一个访问这个实例的入口. 目的 1. 确保只有一个实例被创建. 2. 提供访问这个实例的入口. 使用final确保被创建一次,private的构造函数确保不被实例化.public的getInstance方法确保外部能够访问.下面是饿汉模式: public class Singleton { private static final Sin

Java设计模式编程中的工厂方法模式和抽象工厂模式_java

工厂方法模式 动机 创建一个对象往往需要复杂的过程,所以不适合包含在一个复合工厂中,当有新的产品时,需要修改这个复合的工厂,不利于扩展. 而且,有些对象的创建可以需要用到复合工厂访问不到的信息,所以,定义一个工厂接口,通过实现这个接口来决定实例化那个产品,这就是工厂方法模式,让类的实例化推迟到子类中进行. 目的 1. 定义一个接口,让子类决定实例化哪个产品. 2. 通过通用接口创建对象. 实现 1. 产品接口和具体产品很好理解. 2. 工厂类提供一个工厂方法,返回一个产品对象.但是这个工厂方法是