1.生成对象工厂

/// <summary>
/// 生成对象工厂
/// </summary>
public class DBFactory
{
/// <summary>
/// 创造实例
/// </summary>
/// <typeparam name="T">类型</typeparam>
/// <param name="assemblyString">程序集名称</param>
/// <param name="typeName">类的全名</param>
/// <param name="parameters">构造函数参数</param>
/// <returns></returns>
public T Creatobject<T>(string assemblyString, string typeName, Object[] parameters)
{
try
{
return (T)System.Reflection.Assembly.Load(assemblyString).CreateInstance(typeName, true, System.Reflection.BindingFlags.Default, null, parameters, null, null);
}
catch (Exception ex)
{
string s = ex.Message;
}
return default(T);
}
}//end

2.数据库接口

 public interface IDataBase
{
/// <summary>
/// 关闭数据库
/// </summary>
/// <param name="Link"></param>
void CloseDataBase(DbConnection Link);
/// <summary>
/// 获取命令
/// </summary>
/// <param name="query"></param>
/// <returns></returns>
DbCommand GetSqlStringCommand(string query);
/// <summary>
/// 增加输入参数
/// </summary>
/// <param name="cmd"></param>
/// <param name="ParmsName"></param>
/// <param name="ParmsType"></param>
/// <param name="value"></param>
void AddInParameter(DbCommand cmd, string ParmsName, DbType ParmsType, object value);
/// <summary>
/// 增加输出参数
/// </summary>
/// <param name="cmd"></param>
/// <param name="ParmsName"></param>
/// <param name="ParmsType"></param>
/// <param name="value"></param>
void AddOutParameter(DbCommand cmd, string ParmsName, DbType ParmsType, object value); /// <summary>
/// 执行获取DataSet
/// </summary>
/// <param name="cmd"></param>
/// <returns></returns>
DataSet ExecuteDataSet(DbCommand cmd);
/// <summary>
/// 执行sql语句返回受影响的行数
/// </summary>
/// <param name="cmd"></param>
/// <returns></returns>
int ExecuteNonQuery(DbCommand cmd);
/// <summary>
/// 获取存储过程执行命令
/// </summary>
/// <param name="ProcName"></param>
/// <returns></returns>
DbCommand GetStoredProcCommand(string ProcName);
/// <summary>
/// 获取输出参数值或者输出参数的字典
/// </summary>
/// <param name="cmd"></param>
/// <param name="ParmsName"></param>
/// <returns></returns>
object GetParameterValueOrKeyValue(DbCommand cmd, string ParmsName = "");
}//end

3.mysql 实现接口

 /// <summary>
/// mysql 实现接口
/// </summary>
public class MySQLHelper : IDataBase
{
internal MySqlConnection Link;
public MySQLHelper()
{ }
public MySQLHelper(string ConnectionStrings)
{
this.Link = null;
CreateDataBaseByConnectionStringsName(ConnectionStrings);
}
/// <summary>
/// 创建数据库连接,传入配置文件字段名
/// </summary>
/// <param name="ConnectionStringsName">数据库配置字段</param>
/// <returns></returns>
private void CreateDataBaseByConnectionStringsName(string ConnectionStringsName)
{
MySqlConnection link = new MySqlConnection();
string ConnectionStrings = ConfigurationManager.ConnectionStrings[ConnectionStringsName].ToString();
link.ConnectionString = ConnectionStrings;
try
{
link.Open();
this.Link = link;
}
catch (Exception e) { throw new Exception(e.Message); }
}
public void CloseDataBase(System.Data.Common.DbConnection Link)
{
MySqlConnection Link_ = (MySqlConnection)Link;
if (Link_ != null && Link_.State == ConnectionState.Open)
{
Link_.Close();
}
} public System.Data.Common.DbCommand GetSqlStringCommand(string query)
{
MySqlCommand cmd = null;
if (Link != null && query != "")
cmd = new MySqlCommand(query, Link);
return cmd;
} public void AddInParameter(System.Data.Common.DbCommand cmd, string ParmsName, System.Data.DbType ParmsType_, object value)
{
try
{
MySqlDbType ParmsType = BuildDbType(ParmsType_.ToString());
MySqlParameter parameter = new MySqlParameter(ParmsName, ParmsType);
parameter.Direction = ParameterDirection.Input;
if (value == null)
parameter.Value = DBNull.Value;
else
parameter.Value = value;
cmd.Parameters.Add(parameter);
}
catch (Exception e) { throw new Exception(e.Message); }
} public System.Data.DataSet ExecuteDataSet(System.Data.Common.DbCommand cmd_)
{
DataSet ds = null;
MySqlCommand cmd = cmd_ as MySqlCommand;
try
{
MySqlDataAdapter adapter = new MySqlDataAdapter(cmd);
ds = new DataSet();
adapter.Fill(ds);
cmd.Parameters.Clear();
}
catch (Exception e) { throw new Exception(e.Message); }
return ds;
} public int ExecuteNonQuery(System.Data.Common.DbCommand cmd)
{
int returnCount = ;
try
{
returnCount = cmd.ExecuteNonQuery();
}
catch (Exception e) { throw new Exception(e.Message); }
return returnCount;
}
/// <summary>
/// 创建 DbType 类型
/// </summary>
/// <param name="t">System数据类型</param>
/// <returns></returns>
private MySqlDbType BuildDbType(string t)
{
switch (t)
{
case "Byte":
return MySqlDbType.Byte;
case "Byte[]":
return MySqlDbType.Binary;
case "Int32":
return MySqlDbType.Int32;
case "Int64":
return MySqlDbType.Int64;
case "UInt16":
return MySqlDbType.UInt16;
case "UInt32":
return MySqlDbType.UInt32;
case "UInt64":
return MySqlDbType.UInt64;
case "Decimal":
return MySqlDbType.Decimal;
case "Double":
return MySqlDbType.Double;
//case "Guid":
// return MySqlDbType.Guid;
//case "Xml":
// return MySqlDbType.Xml;
case "Object":
return MySqlDbType.Binary;
case "Boolean":
return MySqlDbType.Bit;
case "String":
return MySqlDbType.String;
case "DateTime":
return MySqlDbType.DateTime;
default:
return MySqlDbType.String;
}
}
}//end

4.sqlserver  实现接口

public class sqlserver : IDataBase
{
internal SqlConnection Link;
public sqlserver()
{ }
public sqlserver(string ConnectionStrings)
{
this.Link = null;
CreateDataBaseByConnectionStringsName(ConnectionStrings);
}
/// <summary>
/// 创建数据库连接,传入配置文件字段名
/// </summary>
/// <param name="ConnectionStringsName">数据库配置字段</param>
/// <returns></returns>
private void CreateDataBaseByConnectionStringsName(string ConnectionStringsName)
{
SqlConnection link = new SqlConnection();
string ConnectionStrings = ConfigurationManager.ConnectionStrings[ConnectionStringsName].ToString();
link.ConnectionString = ConnectionStrings;
try
{
link.Open();
this.Link = link;
}
catch (Exception e) { throw new Exception(e.Message); }
}
public void CloseDataBase(System.Data.Common.DbConnection Link)
{
SqlConnection Link_ = (SqlConnection)Link;
if (Link_ != null && Link_.State == ConnectionState.Open)
{
Link_.Close();
}
} public System.Data.Common.DbCommand GetSqlStringCommand(string query)
{
SqlCommand cmd = null;
if (Link != null && query != "")
cmd = new SqlCommand(query, Link);
return cmd;
} public void AddInParameter(System.Data.Common.DbCommand cmd, string ParmsName, System.Data.DbType ParmsType, object value)
{
try
{
SqlParameter parameter = new SqlParameter(ParmsName, ParmsType);
parameter.Direction = ParameterDirection.Input;
if (value == null)
parameter.Value = DBNull.Value;
else
parameter.Value = value;
cmd.Parameters.Add(parameter);
}
catch (Exception e) { throw new Exception(e.Message); }
} public System.Data.DataSet ExecuteDataSet(System.Data.Common.DbCommand cmd_)
{
DataSet ds = null;
SqlCommand cmd = cmd_ as SqlCommand;
try
{
SqlDataAdapter adapter = new SqlDataAdapter(cmd);
ds = new DataSet();
adapter.Fill(ds);
cmd.Parameters.Clear();
}
catch (Exception e) { throw new Exception(e.Message); }
return ds;
} public int ExecuteNonQuery(System.Data.Common.DbCommand cmd)
{
int returnCount = ;
try
{
returnCount = cmd.ExecuteNonQuery();
}
catch (Exception e) { throw new Exception(e.Message); }
return returnCount;
}
/// <summary>
/// 创建 DbType 类型
/// </summary>
/// <param name="t">System数据类型</param>
/// <returns></returns>
private DbType BuildDbType(Type t)
{
switch (t.Name)
{
case "Byte":
return DbType.Byte;
case "Byte[]":
return DbType.Binary;
case "Int32":
return DbType.Int32;
case "Int64":
return DbType.Int64;
case "UInt16":
return DbType.UInt16;
case "UInt32":
return DbType.UInt32;
case "UInt64":
return DbType.UInt64;
case "Decimal":
return DbType.Decimal;
case "Double":
return DbType.Double;
case "Guid":
return DbType.Guid;
case "Xml":
return DbType.Xml;
case "Object":
return DbType.Binary;
case "Boolean":
return DbType.Boolean;
case "String":
return DbType.String;
case "DateTime":
return DbType.DateTime;
default:
return DbType.String;
}
} public void AddOutParameter(System.Data.Common.DbCommand cmd, string ParmsName, DbType ParmsType, object value)
{
try
{
SqlParameter parameter = new SqlParameter(ParmsName, ParmsType);
parameter.Direction = ParameterDirection.Output;
if (value == null)
parameter.Value = DBNull.Value;
else
parameter.Value = value;
cmd.Parameters.Add(parameter);
}
catch (Exception e) { throw new Exception(e.Message); }
} public System.Data.Common.DbCommand GetStoredProcCommand(string ProcName)
{
SqlCommand cmd = null;
if (Link != null && ProcName != "")
{
cmd = new SqlCommand(ProcName, Link);
cmd.CommandType = CommandType.StoredProcedure;
}
return cmd;
} public object GetParameterValueOrKeyValue(System.Data.Common.DbCommand cmd, string ParmsName = "")
{
Dictionary<string, object> dic = null;
try
{
dic = new Dictionary<string, object>();
foreach (SqlParameter parameter in cmd.Parameters)
{
if (parameter.Direction == ParameterDirection.Output)
{
dic.Add(parameter.ParameterName, parameter.Value);
}
}
if (dic != null && dic.Count > )
{
if (ParmsName != "" && dic.ContainsKey(ParmsName))
return dic[ParmsName];
}
else
dic = null;
}
catch (Exception e) { throw new Exception(e.Message); }
return dic;
}
}//end

5.生成连接对象

 public class DataBase
{
public static DBFactory fac = new DBFactory();
public static IDataBase MySql_idb = null;
static DataBase()
{
MySql_idb = fac.Creatobject<IDataBase>("数据集", "数据集.MySQLHelper", new object[] { "配置名称" });
}
}//end

6.配置文件

<connectionStrings>

<add name="MysqlContext" connectionString="Data Source=localhost;port=3306;Initial Catalog=数据库名称;user id=root;password=123456;charset=gb2312;" providerName="MySql.Data.MySqlClient" />

<add name="SQLserverContext" providerName="System.Data.SqlClient" connectionString="Server=.;Database=数据库名称;User ID=sa;Password=123456;Trusted_Connection=false" />

 </connectionStrings>

7.实现例子

 public bool Add(string telString)
{
string sqlStr = @"insert into Table
(telString)
values
(@telString)"; DbCommand cmd = MySql_idb.GetSqlStringCommand(sqlStr);
MySql_idb.AddInParameter(cmd, "@telString", System.Data.DbType.String, telString);return MySql_idb.ExecuteNonQuery(cmd) > ;
}
public static int execPro(int id, string name)
{
int result = ;
DbCommand cmd = MySql_idb.GetStoredProcCommand("Proc_ceshi");
MySql_idb.AddInParameter(cmd, "@id", System.Data.DbType.Int32, id);
MySql_idb.AddInParameter(cmd, "@name", System.Data.DbType.String, name);
MySql_idb.AddOutParameter(cmd, "@returnval", System.Data.DbType.Int32, result);
MySql_idb.ExecuteNonQuery(cmd);
result = Convert.ToInt32(MySql_idb.GetParameterValueOrKeyValue(cmd, "@returnval").ToString());
return result;
}

数据库链接 mysql,sqlserver的更多相关文章

  1. EntityFramework 多数据库链接,MySql,SqlServer,Oracel等

    环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一 ...

  2. SQL SERVER 创建远程数据库链接 mysql oracle sqlserver

    遇到的坑 在连接Oracle时,因为服务器为10g 32位版本,然后在本地安装了32为10g客户端,然后一直报错[7302.7303],后来下载了12c 64位版本,安装成功后,问题解决 原因:mss ...

  3. 数据库:oracle,MySQL,SqlServer   安装资源分享

    1. oracle 11g: 链接:http://pan.baidu.com/s/1bppaqR1 密码:http 2. mysql   链接:http://pan.baidu.com/s/1jH8O ...

  4. Ubuntu中部署Django项目的配置与链接MySQL

    Django的简介 MVT模式的介绍创建项目的虚拟环境 本次使用的是pip安装 一.更新 sudo apt update 二.安装pip sudo apt install python3-pip 三. ...

  5. SQLServer 远程链接MySql数据库详解

    SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...

  6. 用PHP链接mysql数据库

    PHP提供了两套数据库可用于访问mysql数据库 1)MySQL扩展函数数据库 2)MySQLI扩展数据库(improved) 使用MySQLI函数访问MySQL数据库步骤 1)链接数据库管理系统 m ...

  7. Mssql链接mysql数据库

    最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...

  8. nodejs remote链接mysql数据库总结

    nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...

  9. Python学习笔记9-Python 链接MySql数据库

    Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...

随机推荐

  1. Android greenDao的简单配置和使用

    最近自学做东西的时候用到了一个收藏的功能,然后我想把东西存放到SQLite当中,然而自己传值的时候都是用到的实体类,所以存起来也比较麻烦,所以从网上找到一个greenDao的开源框架非常火,不仅效率高 ...

  2. Java之蛋疼的file Protocol

    file Protocol Opens a file on a local or network drive. Syntax file:///sDrives[|sFile] Tokens sDrive ...

  3. NSKeyValueObserving(KVO)

    NSKeyValueObserving非正式协议定义了一种机制,它允许对象去监听其它对象的某个属性的修改. 我们可以监听一个对象的属性,包括简单属性,一对一的关系,和一对多的关系.一对多关系的监听者会 ...

  4. Mac下显示\隐藏所有文件

    显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true隐藏Mac隐藏文件的命令:defaults write ...

  5. 为SM30视图分配事务代码

    Tcode:SE93

  6. 微软职位内部推荐-Senior Software Development Engineer H/F

    微软近期Open的职位: Microsoft Engineering Center Paris (Xbox Music et Video) : Ingénieur en développement l ...

  7. 在安卓3.0以下版本使用Fragment的注意事项

    1. 按照网上的Fragment官网资料翻译来做一直有错: 10-03 02:43:13.971: E/AndroidRuntime(1921): java.lang.RuntimeException ...

  8. TF-IDF与余弦相似性的应用(一):自动提取关键词

    这个标题看上去好像很复杂,其实我要谈的是一个很简单的问题. 有一篇很长的文章,我要用计算机提取它的关键词(Automatic Keyphrase extraction),完全不加以人工干预,请问怎样才 ...

  9. Entity Framework走马观花之把握全局

    在深入学习某项技术之前,应该努力形成对此技术的总体印象,并了解其基本原理,本文的目的就在于此. 一.理解EF数据模型 EF本质上是一个ORM框架,它需要把对象映射到底层数据库中的表,为此,它使用了三个 ...

  10. 【BZOJ】【TJOI2015】线性代数

    网络流/最小割/最大权闭合图 2333好开心,除了一开始把$500^2$算成25000……导致数组没开够RE了一发,可以算是一次AC~ 咳咳还是回归正题来说题解吧: 一拿到这道题,我就想:这是什么鬼玩 ...