数据库链接 mysql,sqlserver
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的更多相关文章
- EntityFramework 多数据库链接,MySql,SqlServer,Oracel等
环境:EntityFramework5.0,MySql5.6,MSSQL2012 EF是强大的ORM工具,真正意义上的多数据库链接指的是不同类型的数据库,以及同种类型的数据库多个库,EF很好的支持这一 ...
- SQL SERVER 创建远程数据库链接 mysql oracle sqlserver
遇到的坑 在连接Oracle时,因为服务器为10g 32位版本,然后在本地安装了32为10g客户端,然后一直报错[7302.7303],后来下载了12c 64位版本,安装成功后,问题解决 原因:mss ...
- 数据库:oracle,MySQL,SqlServer 安装资源分享
1. oracle 11g: 链接:http://pan.baidu.com/s/1bppaqR1 密码:http 2. mysql 链接:http://pan.baidu.com/s/1jH8O ...
- Ubuntu中部署Django项目的配置与链接MySQL
Django的简介 MVT模式的介绍创建项目的虚拟环境 本次使用的是pip安装 一.更新 sudo apt update 二.安装pip sudo apt install python3-pip 三. ...
- SQLServer 远程链接MySql数据库详解
SQLServer 远程链接MySql数据库详解 by:授客 QQ:1033553122 测试环境: Microsoft Windows XP Professional 版本2000 Service ...
- 用PHP链接mysql数据库
PHP提供了两套数据库可用于访问mysql数据库 1)MySQL扩展函数数据库 2)MySQLI扩展数据库(improved) 使用MySQLI函数访问MySQL数据库步骤 1)链接数据库管理系统 m ...
- Mssql链接mysql数据库
最近在做mysql数据库实时同步到mssql数据库的方案,花了一周时间,测试通过了,在实际机器上测试出现了若干问题.第一个问题就是在mssql上链接mysql的问题. 第一步,安装 Mysql ODB ...
- nodejs remote链接mysql数据库总结
nodejs链接远端mysql,这个折腾了一个上午才搞定.本以为,直接使用就OK了,但是发现不行,后来查阅各种资料后,终于找到了方法. nodejs链接远端数据库主要分为几个步骤: 1)安装node- ...
- Python学习笔记9-Python 链接MySql数据库
Python 链接MySql数据库,方法很简单: 首先需要先 安装一个MySql链接插件:MySQL-python-1.2.3.win-amd64-py2.7.exe 下载地址:http://dev. ...
随机推荐
- .NET开源工作流RoadFlow-表单设计-文本框
点击表单设计器工具栏上的文本框按钮,会弹出文本框属性对话框: 绑定字段:该文本框与表单属性设置中选择的表的某个字段绑定(该文本框中的值将会保存到该字段中). 默认值:该文本框的初始化值. 宽度:文本框 ...
- ubuntu server 14.10 安装 nodejs
apt-get install nodejs 会报错,提示内核版本过低.如果升级,可能遇到提示boot空间不足,要求释放更多空间: sudo aptitude purge ~ilinux-image- ...
- 依网友要求发个修改award bios的方法(刷CPU微码)
注意本文修改的是award BIOS 首先看自己的CPUID是哪个代码,打开CPU-Z如下图红圈中就是,此CPUID就是067A,好了下面就可以开始准备工作 准备好BIOS文件,以及CPU微码文件.可 ...
- sublime3快捷键
Ctrl+D 选中光标所占的文本,继续操作则会选中下一个相同的文本. Alt+F3 选中文本按下快捷键,即可一次性选择全部的相同文本进行同时编辑.举个栗子:快速选中并更改所有相同的变量名.函数名等. ...
- [iOS]深入浅出 iOS 之多线程 NSThread
OS 支持多个层次的多线程 编程,层次越高的抽象程度越高,使用起来也越方便,也是苹果最推荐使用的方法. 下面简要说明这三种不同范式: Thread 是这三种范式里面相对轻量级的,但也是使用起 ...
- 使用AnkhSvn-2.5.12478.msi管理vs2013代码的工具安装步骤使用
安装好AnkhSvn后,按照上面红色画出来的图,进行操作: 需要安装的文件有: AnkhSvn-2.5.12478.msi LanguagePack_1.8.5.25224-x64-zh_CN.msi ...
- 使用JSON的数据格式
在说JSON之前,我们先来看一下在javascript中创建对象的方式,也就是创建对象的字面量表示法.我们知道js中有五种基本的数据类型,分别是: Undefined(变量可能没有声明或者赋值) ...
- 29.DDR2问题1仿真模型文件
在使用modelsim仿真DDR2时,一般我们会用美光网站上下载的DDR2仿真模型.仿真模型文件一般有ddr2_module.v,ddr2.v,ddr2_mcp.v,ddr2_parameters.v ...
- Qt窗体关闭时,如何自动销毁窗体类对象
Qt窗体关闭时,如何自动销毁窗体类对象 要对你的窗口设置WA_DeleteOnClose属性,默认的情况下关闭窗口仅仅意味着隐藏它 ImgWindow1->setAttribute(Qt ...
- VS(C++)编程遇到的错误集合
编译错误 1.error C1010: 原因:没有在文件开头添加include "stdafx.h". 2.error C2440: "=": 无法从" ...