예제 #1
0
 public static SQLHelper GetSQLHelperInstance(DBEnum DbType, string args)
 {
     mysql = (SQLHelper)CacheHelper.GetCache(DbType.ToString().ToLower() + "_" + args);
     if (mysql == null)
     {
         //根据配置信息获取命名空间
         string DBNameSpace = CommonHelper.GetAppSetting("DBNameSpace");
         if (string.IsNullOrEmpty(DBNameSpace))
         {
             DBNameSpace = "WiteemFramework.DBWorks";
         }
         IEnumerable <Type> DBGroups  = null;
         Type[]             Assemblys = Assembly.GetExecutingAssembly().GetTypes();
         //返回命名空间的程序集
         DBGroups = Assemblys.Where(m => m.Namespace == DBNameSpace);
         foreach (Type item in DBGroups)
         {
             if (item.Name.ToLower() == DbType.ToString().ToLower())
             {
                 if (args == null)
                 {
                     mysql = (SQLHelper)Activator.CreateInstance(item);
                 }
                 else
                 {
                     mysql = (SQLHelper)Activator.CreateInstance(item, args);
                 }
                 CacheHelper.SetCache(DbType.ToString().ToLower() + "_" + args, mysql, Cache.NoAbsoluteExpiration, TimeSpan.FromMinutes(10));
                 return(mysql);
             }
         }
         return(null);
     }
     return(mysql);
 }
예제 #2
0
 /// <summary>
 /// 获取数据库驱动名称
 /// </summary>
 /// <param name="dbEnum">连接类型枚举</param>
 /// <returns>string</returns>
 public static string GetProviderName(DBEnum dbEnum)
 {
     if (!dicConnectionString.ContainsKey(dbEnum.ToString() + "_ProviderName"))
     {
         string providerName = "MySql.Data.MySqlClient";
         string sqlType      = GetSQLType(dbEnum);
         if (sqlType.ToLower() == "MySQL".ToLower())
         {
             providerName = "MySql.Data.MySqlClient";
         }
         dicConnectionString.Add(dbEnum.ToString() + "_ProviderName", providerName);
     }
     return(dicConnectionString[dbEnum.ToString() + "_ProviderName"]);
 }
예제 #3
0
        /// <summary>
        /// 创建对象或从缓存获取
        /// </summary>
        public static object CreateObject(string AssemblyPath, string ClassNamespace, DBEnum dbEnum)
        {
            object objType = DataCache.GetCache(ClassNamespace + "_" + dbEnum.ToString());//从缓存读取

            if (objType == null)
            {
                try
                {                                                                                                                                                //通过GetConstructor()这个方法可以在实例化的时候选择自己想要的构造函数
                    objType = Assembly.Load(AssemblyPath).GetType(ClassNamespace).GetConstructor(new Type[] { typeof(DBEnum) }).Invoke(new object[] { dbEnum }); //反射创建
                    DataCache.SetCache(ClassNamespace + "_" + dbEnum.ToString(), objType);                                                                       // 写入缓存
                }
                catch { }
            }
            return(objType);
        }
예제 #4
0
        public DataSet ExecuteDataSet(DBEnum dbtype, CommandType commandtype, string sqlstr, int timeout, params DbParameter[] parameterValues)
        {
            Database  database  = DatabaseFactory.CreateDatabase(dbtype.ToString());
            DbCommand dbCommand = this.PrepareCommand(database, commandtype, sqlstr, timeout, parameterValues);

            return(database.ExecuteDataSet(dbCommand));
        }
예제 #5
0
        public DbTransaction BeginTractionand(DBEnum dbtype)
        {
            DbConnection dbConnection = DatabaseFactory.CreateDatabase(dbtype.ToString()).CreateConnection();

            dbConnection.Open();
            return(dbConnection.BeginTransaction());
        }
예제 #6
0
        public IDataReader ExecuteReader(DBEnum dbtype, CommandType commandtype, string sqlstr, params DbParameter[] parameterValues)
        {
            Database  database  = DatabaseFactory.CreateDatabase(dbtype.ToString());
            DbCommand dbCommand = this.PrepareCommand(database, commandtype, sqlstr, parameterValues);

            return(database.ExecuteReader(dbCommand));
        }
예제 #7
0
        public static string GetSQLandParstr(DBEnum dbtype, string sqlstr, params DbParameter[] parameterValues)
        {
            string text = "";

            if (parameterValues != null)
            {
                for (int i = 0; i < parameterValues.Length; i++)
                {
                    DbParameter dbParameter = parameterValues[i];
                    if (dbParameter != null && dbParameter.Value != null)
                    {
                        text = string.Concat(new string[]
                        {
                            text,
                            dbParameter.ParameterName,
                            "=",
                            dbParameter.Value.ToString(),
                            ";"
                        });
                    }
                }
            }
            return(string.Concat(new string[]
            {
                dbtype.ToString(),
                ":",
                sqlstr,
                ";",
                text
            }));
        }
예제 #8
0
        ///// <summary>
        ///// 获取连接字符串//无参构造函数
        ///// </summary>
        //public static string ConnectionString
        //{
        //    get
        //    {
        //        string _connectionString = ConfigurationManager.AppSettings["ConnectionString"];
        //        string ConStringEncrypt = ConfigurationManager.AppSettings["ConStringEncrypt"];//获取链接字符串是否是加密的
        //        if (ConStringEncrypt == "true")//如果是加密的就要对链接字符串进行解密
        //        {
        //            _connectionString = new DESHelper().Decrypt(_connectionString);
        //        }
        //        return _connectionString;
        //    }
        //}

        ///// <summary>
        ///// 得到web.config里配置项的数据库连接字符串。//有参构造函数,重写方法
        ///// </summary>
        ///// <param name="configName"></param>
        ///// <returns></returns>
        //public static string GetConnectionString(string configName)
        //{
        //    string connectionString = ConfigurationManager.AppSettings[configName];
        //    string ConStringEncrypt = ConfigurationManager.AppSettings["ConStringEncrypt"];
        //    if (ConStringEncrypt == "true")
        //    {
        //        connectionString =new DESHelper().Decrypt(connectionString);
        //    }
        //    return connectionString;
        //}
        #endregion

        /// <summary>
        /// 获取数据库类型
        /// </summary>
        /// <param name="dbEnum">连接类型枚举</param>
        /// <returns>string</returns>
        public static string GetSQLType(DBEnum dbEnum)
        {
            if (!dicConnectionString.ContainsKey(dbEnum.ToString() + "_SQLType"))
            {
                string configName = string.Empty;
                switch ((int)dbEnum)
                {
                case 0: configName = "OnlineMasterDBConfig"; break;

                default: configName = "OnlineSlaveDBConfig"; break;
                }
                string programFilesPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                string sqlType          = INIHelper.INIGetStringValue(programFilesPath + @"MyConfig.ini", configName, "SQLType", "MySQL");
                dicConnectionString.Add(dbEnum.ToString() + "_SQLType", sqlType);
            }
            return(dicConnectionString[dbEnum.ToString() + "_SQLType"]);
        }
예제 #9
0
        /// <summary>
        /// 得到MyConfig.ini里配置项的数据库连接字符串。
        /// </summary>
        /// <param name="dbEnum"></param>
        /// <returns></returns>
        public static string GetConnectionStringFromINI(DBEnum dbEnum)
        {
            if (!dicConnectionString.ContainsKey(dbEnum.ToString()))
            {
                string configName = null;
                switch ((int)dbEnum)
                {
                case 0: configName = "OnlineMasterDBConfig"; break;

                default: configName = "OnlineSlaveDBConfig"; break;
                }
                string ProgramFilesPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                string server           = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "Server", "");
                string port             = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "Port", "");
                string database         = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "Database", "");
                string uid = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "Uid", "");
                string pwd = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "Pwd", "");
                dicConnectionString.Add(dbEnum.ToString(), "server=" + server + ";port=" + port + ";database=" + database + ";uid=" + uid + ";pwd=" + new DESHelper().Decrypt(pwd));
            }
            return(dicConnectionString[dbEnum.ToString()]);
        }
예제 #10
0
        /// <summary>
        /// 获取数据库实现层
        /// </summary>
        /// <param name="dbEnum">连接类型枚举</param>
        /// <returns>string</returns>
        public static string GetAssemblyPath(DBEnum dbEnum)
        {
            if (!dicConnectionString.ContainsKey(dbEnum.ToString() + "_AssemblyPath"))
            {
                string configName   = string.Empty;
                string assemblyPath = string.Empty;
                switch ((int)dbEnum)
                {
                case 0: configName = "OnlineMasterDBConfig"; break;

                default: configName = "OnlineSlaveDBConfig"; break;
                }
                string ProgramFilesPath = AppDomain.CurrentDomain.SetupInformation.ApplicationBase;
                assemblyPath = INIHelper.INIGetStringValue(ProgramFilesPath + @"MyConfig.ini", configName, "SQLDAL", "DSMTMALL.DB");
                string sqlType = GetSQLType(dbEnum);
                if (sqlType.ToLower() == "MySQL".ToLower())
                {
                    assemblyPath += ".MySQLDAL";
                }
                dicConnectionString.Add(dbEnum.ToString() + "_AssemblyPath", assemblyPath);
            }
            return(dicConnectionString[dbEnum.ToString() + "_AssemblyPath"]);
        }
예제 #11
0
        public IDataReader ExecuteReader(DBEnum dbtype, DbTransaction dbTransaction, CommandType commandtype, string sqlstr, params DbParameter[] parameterValues)
        {
            Database    database  = DatabaseFactory.CreateDatabase(dbtype.ToString());
            DbCommand   dbCommand = this.PrepareCommand(database, commandtype, sqlstr, parameterValues);
            IDataReader result;

            if (dbTransaction == null)
            {
                result = database.ExecuteReader(dbCommand);
            }
            else
            {
                result = database.ExecuteReader(dbCommand, dbTransaction);
            }
            return(result);
        }
예제 #12
0
        public int ExecuteNonQuery(DBEnum dbtype, DbTransaction dbTransaction, CommandType commandtype, string sqlstr, int timeout, params DbParameter[] parameterValues)
        {
            Database  database  = DatabaseFactory.CreateDatabase(dbtype.ToString());
            DbCommand dbCommand = this.PrepareCommand(database, commandtype, sqlstr, timeout, parameterValues);
            int       result;

            if (dbTransaction == null)
            {
                result = database.ExecuteNonQuery(dbCommand);
            }
            else
            {
                result = database.ExecuteNonQuery(dbCommand, dbTransaction);
            }
            return(result);
        }
예제 #13
0
        public object ExecuteScalar(DBEnum dbtype, DbTransaction dbTransaction, CommandType commandtype, string sqlstr, int timeout, params DbParameter[] parameterValues)
        {
            Database  database  = DatabaseFactory.CreateDatabase(dbtype.ToString());
            DbCommand dbCommand = this.PrepareCommand(database, commandtype, sqlstr, timeout, parameterValues);
            object    obj;

            if (dbTransaction == null)
            {
                obj = database.ExecuteScalar(dbCommand);
            }
            else
            {
                obj = database.ExecuteScalar(dbCommand, dbTransaction);
            }
            if (obj == DBNull.Value)
            {
                obj = null;
            }
            return(obj);
        }
예제 #14
0
        public bool ExecuteBulkCopy(DBEnum dbtype, DataTable dt, string db, DbTransaction dbt)
        {
            bool result;

            if (db == "sql")
            {
                SqlBulkCopy sqlBulkCopy;
                if (dbt != null)
                {
                    sqlBulkCopy = new SqlBulkCopy((SqlConnection)dbt.Connection, SqlBulkCopyOptions.CheckConstraints, (SqlTransaction)dbt);
                }
                else
                {
                    SqlConnection sqlConnection = (SqlConnection)DatabaseFactory.CreateDatabase(dbtype.ToString()).CreateConnection();
                    sqlBulkCopy = new SqlBulkCopy(sqlConnection.ConnectionString, SqlBulkCopyOptions.UseInternalTransaction);
                }
                sqlBulkCopy.DestinationTableName = dt.TableName;
                foreach (DataColumn dataColumn in dt.Columns)
                {
                    sqlBulkCopy.ColumnMappings.Add(dataColumn.ColumnName, dataColumn.ColumnName);
                }
                sqlBulkCopy.WriteToServer(dt);
                sqlBulkCopy.Close();
                result = true;
            }
            else
            {
                result = false;
            }
            return(result);
        }