因为项目需求,需要项目同时可以访问三个数据库,因此本人经过一番研究,得出以下代码。

  

1.建立公共连接抽象类(DataBase)

 public abstract class DataBase
{
/// <summary>
///
/// </summary>
public abstract string ConnectionString { get; } /// <summary>
///
/// </summary>
/// <param name="cmd"></param>
/// <param name="pName"></param>
/// <param name="value"></param>
/// <param name="type"></param>
/// <returns></returns> public DbParameter CreateParameter(DbCommand cmd, String pName, Object value, System.Data.DbType type)
{
var p = cmd.CreateParameter();
p.ParameterName = pName;
p.Value = (value == null ? DBNull.Value : value);
p.DbType = type;
return p;
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public abstract DbConnection CreateConnection();
/// <summary>
/// 返回List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public List<T> Select<T>(string sql, Object paramObject = null)
{ try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
var list = Dapper.SqlMapper.Query<T>(conn, sql, paramObject);
return list.ToList<T>();
} }
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message,this.GetType());
return null;
}
}
/// <summary>
/// 返回List
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="tabName">表名</param>
/// <param name="paramObject"></param>
/// <returns></returns>
public List<T> Select<T>()
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
var list = Dapper.SqlMapper.Query<T>(conn, "SELECT * FROM " + typeof(T).Name, null);
return list.ToList<T>();
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return null;
}
}
public int Insert<T>(T t)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
var id = conn.Insert(t);
return id ?? ;
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return -;
}
}
public int Delete<T>(T t)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
return conn.Delete(t);
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return -;
}
}
public int Update<T>(T t)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
return conn.Update(t);
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return -;
}
}
public string InsertByGuid<T>(T t)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
return conn.Insert<string,T>(t);
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return "";
}
}
public List<T> GetList<T>(string sql, Object paramObject = null)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
return conn.Query<T>(sql, paramObject).ToList();
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return null;
}
}
public IEnumerable<dynamic> GetList(string sql, Object paramObject = null)
{
try
{
using (DbConnection conn = CreateConnection())
{
conn.Open();
return conn.Query(sql, paramObject);
}
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return null;
}
}
/// <summary>
///
/// </summary>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public List<dynamic> Select(string sql, Object paramObject = null)
{
DbConnection conn = null;
try
{
conn = CreateConnection();
conn.Open();
var list = Dapper.SqlMapper.Query(conn, sql, paramObject);
return list.ToList<dynamic>();
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return null;
}
finally
{
if (conn != null)
conn.Close();
}
} /// <summary>
/// 获取一条数据
/// </summary>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public dynamic Single(string sql, Object paramObject = null)
{
DbConnection conn = null;
try
{
conn = CreateConnection();
conn.Open();
var list = Dapper.SqlMapper.QuerySingleOrDefault<dynamic>(conn, sql, paramObject);
return list;
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return null;
}
finally
{
if (conn != null)
conn.Close();
}
} /// <summary>
/// 获取一条数据
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public T Single<T>(string sql, Object paramObject = null)
{ DbConnection conn = null;
try
{
conn = CreateConnection();
conn.Open();
var list = Dapper.SqlMapper.QuerySingleOrDefault<T>(conn, sql, paramObject);
return list;
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return default(T);
}
finally
{
if (conn != null)
conn.Close();
}
} /// <summary>
/// 获取一行一列
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public T ExecuteScalar<T>(string sql, Object paramObject = null)
{ DbConnection conn = null;
try
{
conn = CreateConnection();
conn.Open();
T t = Dapper.SqlMapper.ExecuteScalar<T>(conn, sql, paramObject);
return t;
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return default(T);
}
finally
{
if (conn != null)
conn.Close();
}
} /// <summary>
/// 返回受影响行数
/// </summary>
/// <param name="sql"></param>
/// <param name="paramObject"></param>
/// <returns></returns>
public int Execute(string sql, Object paramObject = null)
{
DbConnection conn = null;
try
{
conn = CreateConnection();
conn.Open();
int count = Dapper.SqlMapper.Execute(conn, sql, paramObject);
return count;
}
catch (Exception ex)
{
Logs.Write(LogType.Error, ex.Message, this.GetType());
return ;
}
finally
{
if (conn != null)
conn.Close();
}
}
}

2.建立3个不同数据库连接类(OracleDataBase、SqlDataBase、MySqlDataBase)继承(DataBase)类

 public class OracleDataBase : DataBase
{
public override string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["OracleConnection"].ToString();
}
}
/// <summary>
/// 常用
/// </summary>
/// <returns></returns>
public override DbConnection CreateConnection()
{
Oracle.ManagedDataAccess.Client.OracleConnection conn = new Oracle.ManagedDataAccess.Client.OracleConnection(ConnectionString);
conn.ConnectionString = ConnectionString;
return null;
}
}
 public class SqlDataBase : DataBase
{
/// <summary>
///
/// </summary>
public override string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["SqlConnection"].ToString();
}
}
/// <summary>
///
/// </summary>
/// <returns></returns>
public override DbConnection CreateConnection()
{
SqlConnection conn = new SqlConnection(ConnectionString);
conn.ConnectionString = ConnectionString;
return conn;
} }
 public  class MySqlDataBase : DataBase
{
/// <summary>
///
/// </summary>
public override string ConnectionString
{
get
{
return System.Configuration.ConfigurationManager.ConnectionStrings["MySqlConnection"].ToString();
}
}
/// <summary>
/// 常用
/// </summary>
/// <returns></returns>
public override DbConnection CreateConnection()
{
MySql.Data.MySqlClient.MySqlConnection conn = new MySql.Data.MySqlClient.MySqlConnection(ConnectionString);
return conn;
}
}

3.访问不同的连接

  public List<T> GetList<T>()
{
var db = new SqlDataBase();
return db.Select<T>();
}
public List<T> GetList<T>()
{
var db = new OracleDataBase();
return db.Select<T>();
}
public List<T> GetList<T>()
{
var db = new MySqlDataBase();
return db.Select<T>();
}

以上代码就是访问不同的数据库的列表信息,其他增删改和上面的差不多写法,如果还有其他问题,请评论!

dapper之连接数据库(Oracle,SQL Server,MySql)的更多相关文章

  1. Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决

    Java与SQL Server, MySql, Oracle, Access的连接方法以及一些异常解决 I. 概述 1.1 JDBC概念 JDBC(Java Database Connectivity ...

  2. 数据库管理工具神器-DataGrip,可同时管理多个主流数据库[SQL Server,MySQL,Oracle等]连接

    前言 DataGrip:Jet Brains出品的一款数据库管理工具(没错,是Jet Brains出品,必属精品).DataGrip整合集成了当前主流数据库(如:SQL Server, MySQL, ...

  3. SQL Server,MySQL,Oracle三者的区别

    SQL Server,MySQL,Oracle三者的区别 2016-10-14 转自:SQL Server,MySQL,Oracle三者的区别 目录 1 Oracle.Sql Server.MySql ...

  4. Oracle,SQL Server 数据库较MySql数据库,Sql语句差异

    原文:Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 Oracle,SQL Server 数据库较MySql数据库,Sql语句差异 1.关系型数据库 百度百科 关系数据库 ...

  5. mysql,oracle,sql server数据库默认的端口号,端口号可以为负数吗?以及常用协议所对应的缺省端口号

    mysql,oracle,sql server数据库默认的端口号? mysql:3306 Oracle:1521 sql server:1433 端口号可以为负吗? 不可以,端口号都有范围的,0~65 ...

  6. 介绍几种大型的Oracle/SQL Server数据库免费版

    我们知道,Oracle和SQL Server等大型数据库也都存在一些免费的版本,这些免费的版本已经能够满足许多中小项目的需求.对于在校大学生来说,从学习的目标上来讲,安装免费版的大型数据库也就足够用了 ...

  7. SQL Server | Mysql 对表的unique 的实现方式

    在ANSI SQL 标准中unique 有两种实现方式 1.是可以插入多个空值.也就是说多个null值看成是互不相同的. 2.是只可以插入一个空值,也主是说把所有的空值看也是相同的. 在SQL Ser ...

  8. Bootstrap + AngularJS+ Ashx + SQL Server/MySQL

    去年年底12月,为适应移动端浏览需求,花了1个月时间学习Bootstrap,并将公司ASP网站重构成ASP.NET. 当时采取的网站架构: Bootstrap + jQuery + Ashx + SQ ...

  9. iBatis自动生成的主键 (Oracle,MS Sql Server,MySQL)【转】

    iBatis的sqlMap配置文件的selectKey元素有个type属性,可以指定pre或者post表示前生成(pre)还是后生成(post). Oracle设置 <!-- Oracle SE ...

  10. oracle 以及 sql server mysql 空值默认值修改

    在SQL Server Oracle MySQL当数据库中查出某值为NULL怎么办? 1.MSSQL: ISNULL() 语法 ISNULL ( check_expression , replacem ...

随机推荐

  1. React-leaflet在ant-design pro中的基本使用

    react-leaflet的github地址:https://github.com/PaulLeCam/react-leaflet react-leaflet-markercluster点聚合gith ...

  2. 将maven项目导入到eclipse中

    一,前言 本文来演示一下如何将一个新的maven项目到入到eclipse中. 在文章使用命令行创建maven web项目中我们使用maven命令行,创建了web工程,接下来为了开发方便我要将新建的工程 ...

  3. mongodb 获取自增数

    mongodb db.getCollection('user').findAndModify({update:{$inc:{'level':1}},query:{"name":&q ...

  4. Win系统下使用命令链接MySQL数据库

    方法一: 1:打开[开始]>[运行]输入[cmd]单击[确定]后出现CMD命令黑色窗口,这就是我们说的CMD命令行 2:默认进入C盘,于是我们可以进入E盘,点击回车.因为我的数据库是存放在E盘的 ...

  5. Spring 梳理 - ContentNegotiatingViewResolver

    ContentNegotiatingViewResolver,这个视图解析器允许你用同样的内容数据来呈现不同的view.它支持如下面描述的三种方式: 1)使用扩展名http://localhost:8 ...

  6. API离线查看工具【包括!!所用常用!!开发语言的API】

    我相信对于每一个开发人员来说,都是不喜欢死记硬背API的,一些常用的方法或者接口我们是可以直接信手捏来的,或者说直接使用开发工具的自动代码提示,也能很快的找到自己想用的API,如果是自己从未使用过的, ...

  7. Android类似日历的翻转控件

    最近写了个翻转面板的控件拿出来与大家分享一下,类似日历的那种,写的比较简单有需要的可以直接拿去用.直接上效果图吧,代码我放在百度云了,有问题的话直接回复就好呢,大家一起交流下. http://pan. ...

  8. Java 学习笔记之 线程安全

    线程安全: 线程安全的方法一定是排队运行的. public class SyncObject { synchronized public void methodA() { try { System.o ...

  9. Android NDK(二) CMake构建工具进行NDK开发

    本文目录 一Androidstudio中需要的插件 二项目配置 ①build.gardle配置 ②CMakeLists.txt ③Android和Cpp的代码 ④so文件生成 ⑤so文件的位置 一.A ...

  10. mac 安装redis及phpredis扩展

    下载phpredis扩展安装包.git clone https://github.com/nicolasff/phpredis.git: 解压后,进入该目录: 依次执行以下操作完成安装: /Appli ...