/// <summary> /// 创建DBHelper实例 /// </summary> /// <param name="conn">数据库链接</param> /// <returns></returns> public static IDBHelper GetDBHelper(DbConnection conn) { if (conn == null) { return(null); } return(GetDBHelper(conn.ConnectionString, DbConnections.GetDbTypeByConn(conn))); }
/// <summary> /// 数据库操作类 /// </summary> /// <param name="connectionString">数据库连接字符串</param> public DBHelper(string connectionString) { if (!string.IsNullOrWhiteSpace(connectionString)) { _connectionString = connectionString; } else { _connectionString = DbConnections.GetDbConnectionString(); } }
/// <summary> /// 创建DBHelper实例 /// </summary> /// <param name="connectionString">指定连接字符串</param> /// <param name="dataBaseType">指定数据库类型</param> /// <returns></returns> public static IDBHelper GetDBHelper(string connectionString = null, DataBaseType dataBaseType = DataBaseType.Auto) { IDBHelper helper = null; if (dataBaseType == DataBaseType.Auto) { dataBaseType = DbConnections.DbType; } Monitor.Enter(_dbHelperCache); if (_dbHelperCache.ContainsKey(dataBaseType)) { Monitor.Exit(_dbHelperCache); return(_dbHelperCache[dataBaseType]); } if (connectionString == null) { connectionString = DbConnections.GetDbConnectionString(dataBaseType); } switch (dataBaseType) { case DataBaseType.SqlServer: helper = ReflectHelper.GetInstance("SQLHelper.dll", "SQLHelper.SQLHelper", connectionString) as IDBHelper; break; case DataBaseType.MySql: helper = ReflectHelper.GetInstance("MySQLHelper.dll", "MySQLHelper.MySQLHelper", connectionString) as IDBHelper; break; case DataBaseType.Oracle: helper = ReflectHelper.GetInstance("OracleHelper.dll", "OracleHelper.OracleHelper", connectionString) as IDBHelper; break; case DataBaseType.Sqlite: helper = ReflectHelper.GetInstance("SQLiteHelper.dll", "SQLiteHelper.SQLiteHelper", connectionString) as IDBHelper; break; default: Monitor.Exit(_dbHelperCache); throw new Exception("未知数据库类型"); } if (helper != null) { _dbHelperCache.Add(dataBaseType, helper); } Monitor.Exit(_dbHelperCache); return(helper); }