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); }
/// <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"]); }
/// <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); }
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)); }
public DbTransaction BeginTractionand(DBEnum dbtype) { DbConnection dbConnection = DatabaseFactory.CreateDatabase(dbtype.ToString()).CreateConnection(); dbConnection.Open(); return(dbConnection.BeginTransaction()); }
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)); }
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 })); }
///// <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"]); }
/// <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()]); }
/// <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"]); }
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); }
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); }
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); }
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); }