在上篇关于SQLHelper类中,主要针对SQLServer数据库进行的。在使用别的数据库,就要修改部分代码!所以今天就写一个支持多数据库的封装!主要用到枚举,读取config文件!接口的简单用法。获取连接等...

一.config配置文件:

  1. <connectionStrings>
  2. <add name="constr" connectionString="server=127.0.0.1;user id=用户名;password=密码;database=数据库名"/>
  3. </connectionStrings>
  4. <appSettings>
  5. <add key="database" value ="MYSQL"/>
  6. </appSettings>

关于连接字符串在SQLHelper帮助类_ 上 进行介绍  http://www.cnblogs.com/fengxuehuanlin/p/5271944.html

二.SqlHelper:

  1. private static string connstr;
  2. /// <summary>
  3. /// 从配置文件中获取连接字符串名,使用什么数据库
  4. /// <appSettings>中key名:database,value值:数据库
  5. /// <connectionStrings>name:constr
  6. /// </summary>
  7. static SqlHelper()
  8. {
  9. connstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; //获取config文件中连接字符串
  10. string databaseType = ConfigurationManager.AppSettings["database"].ToUpper();
  11. DBdatabase.database = AdoHelper.EnumParse<DatabaseList>(databaseType); //将字符串转换成枚举类型
  12. }
  13.  
  14. /// <summary>
  15. /// 获取相应数据库的连接
  16. /// </summary>
  17. /// <returns></returns>
  18. public static IDbConnection getConnection()
  19. {
  20. string value = DBdatabase.database.ToString();
  21. DatabaseList database= AdoHelper.EnumParse<DatabaseList>(value);
  22. switch(database)
  23. {
  24. case DatabaseList.MYSQL:
  25. return new MySqlConnection(connstr);
  26. case DatabaseList.SQLSERVER:
  27. return new SqlConnection(connstr);
  28. default:
  29. throw new Exception("数据库类型目前不支持!");
  30. }
  31. }
  32.  
  33. /// <summary>
  34. /// 将数据加载到本地,在本地对数据进行操作
  35. /// </summary>
  36. /// <param name="Sql">Sql语句</param>
  37. /// <param name="parameter">参数化查询</param>
  38. /// <returns>返回从数据库中读取到的DataTable表</returns>
  39. public static DataTable ExecuteQuery(string Sql, params IDbDataParameter[] parameter)
  40. {
  41. using (IDbConnection conn=getConnection())
  42. using (IDbCommand cmd = conn.CreateCommand())
  43. {
  44. conn.Open();
  45. cmd.CommandText = Sql;
  46. for (int i = ; i < parameter.Length; i++)
  47. {
  48. cmd.Parameters.Add(parameter[i]);
  49. }
  50. DataTable tab = new DataTable();
  51. using (IDataReader reader = cmd.ExecuteReader())
  52. {
  53. tab.Load(reader);
  54. return tab;
  55. }
  56. }
  57. }
  58. /// <summary>
  59. /// 用于执行增加和删除语句
  60. /// </summary>
  61. /// <param name="Sql">Sql语句</param>
  62. /// <param name="parameter">参数化查询</param>
  63. /// <returns>有多少语句执行成功</returns>
  64. public static int ExecuteNonQuery(string Sql, params IDbDataParameter[] parameter)
  65. {
  66. using (IDbConnection conn = getConnection())
  67. using (IDbCommand cmd = conn.CreateCommand())
  68. {
  69. conn.Open();
  70. cmd.CommandText = Sql;
  71. for (int i = ; i < parameter.Length; i++)
  72. {
  73. cmd.Parameters.Add(parameter[i]);
  74. }
  75. return cmd.ExecuteNonQuery();
  76. }
  77. }
  78. /// <summary>
  79. /// 执行语句后,返回第一行第一列的数据
  80. /// </summary>
  81. /// <param name="Sql"></param>
  82. /// <param name="parameter"></param>
  83. /// <returns>object类型的值</returns>
  84. public static object ExecuteScalar(string Sql, params IDbDataParameter[] parameter)
  85. {
  86. using (IDbConnection conn=getConnection())
  87. using (IDbCommand cmd = conn.CreateCommand())
  88. {
  89. conn.Open();
  90. cmd.CommandText = Sql;
  91. for (int i = ; i < parameter.Length; i++)
  92. {
  93. cmd.Parameters.Add(parameter[i]);
  94. }
  95. return cmd.ExecuteScalar();
  96. }
  97. }
  98. /// <summary>
  99. /// 在数据库中,进行数据库的查询操作
  100. /// </summary>
  101. /// <param name="Sql"></param>
  102. /// <param name="parameter"></param>
  103. /// <returns></returns>
  104. public static IDataReader ExecuteReader(string Sql, params IDbDataParameter[] parameter)
  105. {
  106. using (IDbConnection conn = getConnection())
  107. using (IDbCommand cmd = conn.CreateCommand())
  108. {
  109. conn.Open();
  110. cmd.CommandText = Sql;
  111. for (int i = ; i < parameter.Length; i++)
  112. {
  113. cmd.Parameters.Add(parameter[i]);
  114. }
  115. return cmd.ExecuteReader(CommandBehavior.CloseConnection);
  116. }
  117. }
  118. }
  119. /// <summary>
  120. /// 判断是什么数据库
  121. /// </summary>
  122. public class DBdatabase
  123. {
  124. public static DatabaseList database { get; set; }
  125. }
  126. public class AdoHelper
  127. {
  128. /// <summary>
  129. /// 将字符串转换成枚举类型
  130. /// </summary>
  131. /// <typeparam name="T">枚举类型</typeparam>
  132. /// <param name="value">字符串值</param>
  133. /// <returns></returns>
  134. public static T EnumParse<T>(string value)
  135. {
  136. return (T)Enum.Parse(typeof(T), value);
  137. }
  138.  
  139. /// <summary>
  140. /// 对数据库进行操作
  141. /// </summary>
  142. /// <param name="conn">获取一个连接</param>
  143. /// <returns></returns>
  144. public static IDbCommand CreateCommand(IDbConnection conn)
  145. {
  146. IDbCommand cmd = conn.CreateCommand();
  147. conn.Open();
  148. return cmd;
  149. }
  150. }
  151. /// <summary>
  152. /// 数据库类型
  153. /// </summary>
  154. public enum DatabaseList
  155. {
  156. MYSQL = ,
  157. SQLSERVER =
  158. }

SQLHelper帮助类_下(支持多数据库的封装)的更多相关文章

  1. SqlHelper帮助类_上(SQLServer数据库含Connection详解)

    在操作数据库时,经常会用到自己封装的SqlHelper.这里主要对SQLServer数据库的Sqlhelper,主要用于在同一个连接中完成CRUD! 一.ADO.NET中的Connection详解: ...

  2. 非常不错的ASP操作数据库类,支持多数据库MSSQL,ACCESS,ORACLE,MYSQL等

    可同时操作多个不同类型的数据库. 完全不用考虑数据类型的差别,再也不用想字符型字段加不加单引号. 调用非常简单,对数据库的主要操作一般只需要一行代码. 支持mssql事务回滚. 可自动生成和输出sql ...

  3. EFCore高级Saas系统下一个DbContext如何支持多数据库迁移

    EFCore高级玩法单DbContext支持多数据库迁移 前言 随着系统的不断开发和迭代默认的efcore功能十分强大,但是随着Saas系统的引进efcore基于表字段的多租户模式已经非常完美了,但是 ...

  4. fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配

    一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...

  5. 【原】thinkphp修改Redis操作类,支持选择数据库功能及添加其他方法

    版本3.2.2(ThinkPHP\Library\Think\Cache\Driver\Redis.class.php), 一:官方默认不支持选择数据库功能及,现就可选择数据库功能进行说明. 1 co ...

  6. 微软版的SqlHelper.cs类

    一,微软SQLHelper.cs类 中文版: using System; using System.Data; using System.Xml; using System.Data.SqlClien ...

  7. 微软SQLHelper.cs类 中文版

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Co ...

  8. C#_ 项目打包附加数据库

    C#_ 项目打包附加数据库 2010-07-11 23:22:45|  分类: Winfrom|举报|字号 订阅     实现效果:安装项目时直接附加数据库. 1.首先在需要部 署的项目的解决方案资源 ...

  9. 微软SQLHelper.cs类

    using System; using System.Data; using System.Xml; using System.Data.SqlClient; using System.Collect ...

随机推荐

  1. wukong搜索引擎源码解读

    转自:https://ayende.com/blog/171745/code-reading-wukong-full-text-search-engine I like reading code, a ...

  2. EverNote剪藏插件安装问题

    安装EverNote印象笔记的剪藏插件时出现插件不能使用的问题,可以采用如下的方法(可以参考知乎的解决办法:https://www.zhihu.com/question/29875051) (下载地址 ...

  3. 1.4.2.4. SAVING(Core Data 应用程序实践指南)

    现在,要添加一个保存修改的方法.其实很简单,就是调用持久化存储协调器的save方法. - (void)saveContext { ) { NSLog(@"Running %@ '%@'&qu ...

  4. nginx集群tomcat

    一.准备工作 下载nginx,http://nginx.org/,本文采用nginx-1.8.0,下载之后直接解压,免安装 下载tomcat,以配置3台tomcat服务器做负载均衡为例 二.修改tom ...

  5. Linux释放内存脚本

    vi recover_mem.sh #!/bin/bash  ################## #author:rrhelei@126.com# ################## #系统分配的 ...

  6. Spring context:component-scan中使用context:include-filter和context:exclude-filter

    Spring context:component-scan中使用context:include-filter和context:exclude-filter XML: <?xml version= ...

  7. 负载均衡软件LVS分析一(概念)

    一. LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是www.linuxvirtualserver. ...

  8. ASP.NET Zero--15.一个例子(8)商品分类管理-权限控制

    1.添加权限常量 打开文件AppPermissions.cs [..\MyCompanyName.AbpZeroTemplate.Core\Authorization\AppPermissions.c ...

  9. 使用SpringMvc调用POI jar导出excel的源码

    @RequestMapping(value = "/result/export") public String export(ResultIn in,HttpServletRequ ...

  10. iOS 获取公历、农历日期的年月日

    iOS 获取公历.农历日期的年月日 介绍三种方法获取 Date (NSDate) 的年月日. 用 date 表示当前日期.测试日期为公历 2017 年 2 月 5 日,农历丁酉年,鸡年,正月初九. l ...