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

一.config配置文件:

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

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

二.SqlHelper:

        private static string connstr;
/// <summary>
/// 从配置文件中获取连接字符串名,使用什么数据库
/// <appSettings>中key名:database,value值:数据库
/// <connectionStrings>name:constr
/// </summary>
static SqlHelper()
{
connstr = ConfigurationManager.ConnectionStrings["constr"].ConnectionString; //获取config文件中连接字符串
string databaseType = ConfigurationManager.AppSettings["database"].ToUpper();
DBdatabase.database = AdoHelper.EnumParse<DatabaseList>(databaseType); //将字符串转换成枚举类型
} /// <summary>
/// 获取相应数据库的连接
/// </summary>
/// <returns></returns>
public static IDbConnection getConnection()
{
string value = DBdatabase.database.ToString();
DatabaseList database= AdoHelper.EnumParse<DatabaseList>(value);
switch(database)
{
case DatabaseList.MYSQL:
return new MySqlConnection(connstr);
case DatabaseList.SQLSERVER:
return new SqlConnection(connstr);
default:
throw new Exception("数据库类型目前不支持!");
}
} /// <summary>
/// 将数据加载到本地,在本地对数据进行操作
/// </summary>
/// <param name="Sql">Sql语句</param>
/// <param name="parameter">参数化查询</param>
/// <returns>返回从数据库中读取到的DataTable表</returns>
public static DataTable ExecuteQuery(string Sql, params IDbDataParameter[] parameter)
{
using (IDbConnection conn=getConnection())
using (IDbCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = Sql;
for (int i = ; i < parameter.Length; i++)
{
cmd.Parameters.Add(parameter[i]);
}
DataTable tab = new DataTable();
using (IDataReader reader = cmd.ExecuteReader())
{
tab.Load(reader);
return tab;
}
}
}
/// <summary>
/// 用于执行增加和删除语句
/// </summary>
/// <param name="Sql">Sql语句</param>
/// <param name="parameter">参数化查询</param>
/// <returns>有多少语句执行成功</returns>
public static int ExecuteNonQuery(string Sql, params IDbDataParameter[] parameter)
{
using (IDbConnection conn = getConnection())
using (IDbCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = Sql;
for (int i = ; i < parameter.Length; i++)
{
cmd.Parameters.Add(parameter[i]);
}
return cmd.ExecuteNonQuery();
}
}
/// <summary>
/// 执行语句后,返回第一行第一列的数据
/// </summary>
/// <param name="Sql"></param>
/// <param name="parameter"></param>
/// <returns>object类型的值</returns>
public static object ExecuteScalar(string Sql, params IDbDataParameter[] parameter)
{
using (IDbConnection conn=getConnection())
using (IDbCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = Sql;
for (int i = ; i < parameter.Length; i++)
{
cmd.Parameters.Add(parameter[i]);
}
return cmd.ExecuteScalar();
}
}
/// <summary>
/// 在数据库中,进行数据库的查询操作
/// </summary>
/// <param name="Sql"></param>
/// <param name="parameter"></param>
/// <returns></returns>
public static IDataReader ExecuteReader(string Sql, params IDbDataParameter[] parameter)
{
using (IDbConnection conn = getConnection())
using (IDbCommand cmd = conn.CreateCommand())
{
conn.Open();
cmd.CommandText = Sql;
for (int i = ; i < parameter.Length; i++)
{
cmd.Parameters.Add(parameter[i]);
}
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
}
}
/// <summary>
/// 判断是什么数据库
/// </summary>
public class DBdatabase
{
public static DatabaseList database { get; set; }
}
public class AdoHelper
{
/// <summary>
/// 将字符串转换成枚举类型
/// </summary>
/// <typeparam name="T">枚举类型</typeparam>
/// <param name="value">字符串值</param>
/// <returns></returns>
public static T EnumParse<T>(string value)
{
return (T)Enum.Parse(typeof(T), value);
} /// <summary>
/// 对数据库进行操作
/// </summary>
/// <param name="conn">获取一个连接</param>
/// <returns></returns>
public static IDbCommand CreateCommand(IDbConnection conn)
{
IDbCommand cmd = conn.CreateCommand();
conn.Open();
return cmd;
}
}
/// <summary>
/// 数据库类型
/// </summary>
public enum DatabaseList
{
MYSQL = ,
SQLSERVER =
}

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. UITextField 之 失去焦点 收起键盘

    1. 代理 UITextFieldDelegate 2. 设置代理 textfield.delegate = self; 3. 代理事件处理 #pragma mark - textfiled代理 -( ...

  2. UWP项目的包无法通过本地校验程序

    在UWP工程中,我们打出的包Appx需要通过本地的校验程序校验通过后才可以进行商店的提交.在校验程序汇报的不通过原因当中,除了显而易见的因为美术资源不规范.代码调用不合法API等原因之外,还有一些奇怪 ...

  3. vim列编辑

    命令模式下:ctrl + v(我在gvim,win7中是ctrl +shift + q)进入列编辑模,选中要编辑的行(j 上,k下) 输入 “I” (大写的 I,光标定位到选中的第一行),输入要编辑的 ...

  4. Spring学习笔记IOC与AOP实例

    Spring框架核心由两部分组成: 第一部分是反向控制(IOC),也叫依赖注入(DI); 控制反转(依赖注入)的主要内容是指:只描述程序中对象的被创建方式但不显示的创建对象.在以XML语言描述的配置文 ...

  5. DPM,DEM,DDPM的区别

    此文来自我在CFD中国论坛中的一篇回复:http://www.cfd-china.com/topic/58/dem%E5%92%8Cdpm/21 正好这几天在研究fluent里的DEM,DPM和DDP ...

  6. 【python基础】之元组 集合 字典

    元组 元组:元组和列表类似.但是元组中的元素是固定的(不能给一个元组添加,删除和替换元素以及重新排序) 1.创建元组 t1 = () #创建一个空元组 t2 = (1, 2, 3) t3 = tupl ...

  7. C语言函数名与函数指针详解

    一.通常的函数调用 一个通常的函数调用的例子: /* 自行包含头文件 */ void MyFun(int x); /* 此处的声明也可写成:void MyFun(int) */ int main(in ...

  8. Angular企业级开发(6)-使用Gulp构建和打包前端项目

    1.gulp介绍 基于流的前端自动化构建工具,利用gulp可以提高前端开发效率,特别是在前后端分离的项目中.使用gulp能完成以下任务: 压缩html.css和js 编译less或sass等 压缩图片 ...

  9. 获取Pid

    Java程序中获取当前进程的进程ID 标签: javainterfacesystemcompilationjvmjni 2011-12-29 16:31 15182人阅读 评论(2) 收藏 举报  分 ...

  10. webAppbuilder微件使用教程1 快速入门

    by 李远祥 webAppbuilder是arcgis portal 和arcgis.com 上用来配置应用程序的利器.合理利用webAppbuilder的微件功能,可以实现应用程序的零代码定制,并能 ...