• 数据库链接 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 = 0;
                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 = 0;
                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 > 0)
                    {
                        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) > 0;
            }
    public static int execPro(int id, string name)
            {
                int result = 0;
                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;
            }
    欢迎指正:haizi2014@qq.com
  • 相关阅读:
    FBI网络欺诈投诉中心:经济萧条期网络犯罪更汹涌 狼人:
    阿根廷黑客盯上中国网银用户 警惕“IK网银盗号器” 狼人:
    参数定义sql 递归查询子目录
    输入字符ASCII码排序
    程序池程序Win7(64位)中IIS配置Access数据库的asp.net程序中出现“未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序”(解决了)
    乱码中文javaEE 中文乱码问题
    地方浏览器document.getElementById('resForm1_bookTimeStart').value = "${bookTimeStartId}"; var hzfpZldm=$("#hz
    打印下标iOS 6字面量
    函数集成redis与Spring集成
    安装内容[Python]第三方库Scrapy入门使用
  • 原文地址:https://www.cnblogs.com/hcfan/p/5089552.html
Copyright © 2020-2023  润新知