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. ios中怎么样点击背景退出键盘

    //退出键盘 只需一句,药到病除 - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ [self.view endEdi ...

  2. 使用Apriori算法和FP-growth算法进行关联分析

    系列文章:<机器学习实战>学习笔记 最近看了<机器学习实战>中的第11章(使用Apriori算法进行关联分析)和第12章(使用FP-growth算法来高效发现频繁项集).正如章 ...

  3. Go语言示例-函数返回多个值

    Go语言中函数可以返回多个值,这和其它编程语言有很大的不同.对于有其它语言编程经验的人来说,最大的障碍不是学习这个特性,而是很难想到去使用这个特性. 简单如交换两个数值的例子: package mai ...

  4. EasyUI 兼容 IE6 方法总结

    1.combobox 如果单选,multiple必须也设置为true.这个ie7如果没设置,会保持多选状态,算是一个bug. 2.combobox 最好用js来渲染,而不是一开始就class=“eas ...

  5. 用C语言实现的扑克牌洗牌程序

    一副牌:54张 从0开始排序: 0-12表示黑桃   A 1,2,3,... 10,J,Q,K 13-25表示红桃 A 1,2,3,... 10,J,Q,K 26-38表示草花 A 1,2,3,... ...

  6. PostgreSQL中的引号和null

    今天工作时写了一个sql,但是PostgreSQL总是提示有语法错误,简单的做个记录:  问题1.'' 和“”单引号和双引号         举个例子: #.select id, delivery_d ...

  7. LNMP系列网站零基础开发记录(一)

    [目录] 扯淡吹逼之开发前奏 Django 开发环境搭建及配置 web 页面开发 Django app开发 Django 站点管理 Python 简易爬虫开发 Nginx&uWSGI 服务器配 ...

  8. 【转】eclipse技巧1

    俗话说的好啊,“工于利启事,必先善其器”,如果说你的编程功底是一个枪法的话,那么强大的eclipse就是android战士们最好的武器. 这里,我们来总结eclipse的使用技巧,从而使我们的编程达到 ...

  9. cookie和session的代码实现

    cookie和session的代码实现 1.设置cookie 今天笔试题考的是cookie的设置,我竟然选了request也可以设置cookie,我的天呀. 我们来看如何在response设置吧 pu ...

  10. js判断手机还是pc并跳转相关页面

    <script type="text/javascript"> function GetRequest() { var url = location.search; / ...