////////////////////////////////////////////////////////////////////////////////////////// Public #region 생성자 - DBManager(pDBManagerType, pConnectionString) /// <summary> /// 생성자 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="pConnectionString">연결 문자열</param> public DBManager(DBManagerType pDBManagerType, string pConnectionString) { try { _pDBManagerType = pDBManagerType; _pConnectionString = pConnectionString; _pDbConnection = GetDbConnection(pDBManagerType, pConnectionString); _pDbTransaction = null; _nCommandTimeout = 300; if (_pDbConnection.State == ConnectionState.Open) { return; } _pDbConnection.Open(); } catch (ExceptionManager pExceptionManager) { throw pExceptionManager; } catch (Exception pException) { throw new ExceptionManager ( this, "DBManager(pDBManagerType, pConnectionString)", pException ); } }
/// <summary> /// 데이타베이스 데이타 어댑터 구하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <returns>데이타베이스 데이타 어댑터</returns> private DbDataAdapter GetDbDataAdapter(DBManagerType pDBManagerType) { try { switch (pDBManagerType) { case DBManagerType.SQLServer: return(new SqlDataAdapter()); case DBManagerType.Oracle: return(new OracleDataAdapter()); case DBManagerType.MySql: return(new MySqlDataAdapter()); case DBManagerType.OleDB: return(new OleDbDataAdapter()); default: return(null); } } catch (Exception pException) { throw new ExceptionManager ( this, "GetDbDataAdapter(pDBManagerType)", pException ); } }
//////////////////////////////////////////////////////////////////////////////////////////////////// Constructor ////////////////////////////////////////////////////////////////////////////////////////// Static #region 생성자 - DBManager() /// <summary> /// 생성자 /// </summary> static DBManager() { try { string strPrimaryDBManagerType = ConfigurationManager.GetApplicationSetting("DBManagerType"); switch (strPrimaryDBManagerType) { case "SQLServer": _pPrimaryDBManagerType = DBManagerType.SQLServer; break; case "Oracle": _pPrimaryDBManagerType = DBManagerType.Oracle; break; case "MySql": _pPrimaryDBManagerType = DBManagerType.MySql; break; default: _pPrimaryDBManagerType = DBManagerType.OleDB; break; } _pPrimaryConnectionString = ConfigurationManager.GetApplicationSetting("ConnectionString"); } catch (ExceptionManager pExceptionManager) { throw pExceptionManager; } catch (Exception pException) { throw new ExceptionManager ( typeof(DBManager), "DBManager()", pException ); } }
////////////////////////////////////////////////////////////////////////////////////////// Private #region 데이타베이스 연결 구하기 - GetDbConnection(pDBManagerType, pConnectionString) /// <summary> /// 데이타베이스 연결 구하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="pConnectionString">연결 문자열</param> /// <returns>데이타베이스 연결</returns> private DbConnection GetDbConnection(DBManagerType pDBManagerType, string pConnectionString) { try { switch (pDBManagerType) { case DBManagerType.SQLServer: return(new SqlConnection(pConnectionString)); case DBManagerType.Oracle: return(new OracleConnection(pConnectionString)); case DBManagerType.MySql: return(new MySqlConnection(pConnectionString)); default: return(new OleDbConnection(pConnectionString)); } } catch (Exception pException) { throw new ExceptionManager ( this, "GetDbConnection(pDBManagerType, pConnectionString)", pException ); } }
/// <summary> /// 데이타 매개 변수 목록 설정하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="pArguments">인자 목록</param> /// <returns>데이타 매개 변수 목록</returns> private IDataParameter[] GetDataParameters(DBManagerType pDBManagerType, object[] pArguments) { try { IDataParameter[] pDataParameters; switch (pDBManagerType) { case DBManagerType.SQLServer: pDataParameters = new SqlParameter[pArguments.Length]; break; case DBManagerType.Oracle: pDataParameters = new OracleParameter[pArguments.Length]; break; case DBManagerType.MySql: pDataParameters = new MySqlParameter[pArguments.Length]; break; case DBManagerType.OleDB: pDataParameters = new OleDbParameter[pArguments.Length]; break; default: return(null); } for (int i = 0; i < pArguments.Length; i++) { pDataParameters[i] = GetDbParameter(pDBManagerType); switch (pDBManagerType) { case DBManagerType.SQLServer: pDataParameters[i].ParameterName = string.Format(_strSQLServerParameterFormat, i); break; case DBManagerType.Oracle: pDataParameters[i].ParameterName = string.Format(_strOracleParameterFormat, i); break; case DBManagerType.MySql: pDataParameters[i].ParameterName = string.Format(_strMySQLParameterFormat, i); break; case DBManagerType.OleDB: pDataParameters[i].ParameterName = string.Format(_strOLEDBParameterFormat, i); break; default: pDataParameters[i].ParameterName = string.Format(_strSQLServerParameterFormat, i); break; } pDataParameters[i].Value = pArguments[i]; } return(pDataParameters); } catch (Exception pException) { throw new ExceptionManager ( this, "GetDataParameterArray(pDBManagerType, pArguments)", pException ); } }
/// <summary> /// 데이타베이스 명령 구하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="nCommandTimeout">명령 시간 제한</param> /// <param name="pCommandType">명령 종류</param> /// <param name="strCommandText">명령문</param> /// <param name="pDataParameters">데이타 매개 변수 목록</param> /// <returns>데이타베이스 명령</returns> private DbCommand GetDbCommand(DBManagerType pDBManagerType, int nCommandTimeout, CommandType pCommandType, string strCommandText, IDataParameter[] pDataParameters) { try { DbCommand pDbCommand; switch (pDBManagerType) { case DBManagerType.SQLServer: pDbCommand = new SqlCommand(); break; case DBManagerType.Oracle: pDbCommand = new OracleCommand(); break; case DBManagerType.MySql: pDbCommand = new MySqlCommand(); break; case DBManagerType.OleDB: pDbCommand = new OleDbCommand(); break; default: return(null); } pDbCommand.Connection = _pDbConnection; pDbCommand.CommandType = pCommandType; pDbCommand.CommandText = strCommandText; pDbCommand.CommandTimeout = nCommandTimeout; if (pDataParameters != null) { foreach (DbParameter pDbParameter in pDataParameters) { pDbCommand.Parameters.Add(pDbParameter); } } if (_pDbTransaction != null) { pDbCommand.Transaction = _pDbTransaction; } return(pDbCommand); } catch (Exception pException) { throw new ExceptionManager ( this, "GetDbCommand(pDBManagerType, nCommandTimeout, pCommandType, strCommandText, pDataParameters)", pException ); } }
/// <summary> /// 반환 데이타베이스 매개 변수 구하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="pDataType">데이타 종류</param> /// <param name="nDataSize">데이타 크기</param> /// <param name="byDataScale">데이타 정밀도</param> /// <returns>데이타베이스 매개 변수</returns> private DbParameter GetReturnDbParameter(DBManagerType pDBManagerType, DbType pDataType, int nDataSize, byte byDataScale) { try { return(GetDbParameter(pDBManagerType, "ReturnValue", ParameterDirection.ReturnValue, pDataType, nDataSize, byDataScale)); } catch (ExceptionManager pExceptionManager) { throw pExceptionManager; } catch (Exception pException) { throw new ExceptionManager ( this, "GetReturnDbParameter(pDBManagerType, pDataType, nDataSize, byDataScale)", pException ); } }
/// <summary> /// 데이타베이스 매개 변수 구하기 /// </summary> /// <param name="pDBManagerType">데이타베이스 관리자 종류</param> /// <param name="strParameterName">매개 변수명</param> /// <param name="pParameterDirection">매개 변수 방향</param> /// <param name="pDataType">데이타 종류</param> /// <param name="nDataSize">데이타 크기</param> /// <param name="byDataScale">데이타 정밀도</param> /// <returns>데이타베이스 매개 변수</returns> private DbParameter GetDbParameter(DBManagerType pDBManagerType, string strParameterName, ParameterDirection pParameterDirection, DbType pDataType, int nDataSize, byte byDataScale) { try { DbParameter pDbParameter; switch (pDBManagerType) { case DBManagerType.SQLServer: pDbParameter = new SqlParameter(); break; case DBManagerType.Oracle: pDbParameter = new OracleParameter(); break; case DBManagerType.MySql: pDbParameter = new MySqlParameter(); break; case DBManagerType.OleDB: pDbParameter = new OleDbParameter(); break; default: return(null); } pDbParameter.ParameterName = strParameterName; pDbParameter.Direction = pParameterDirection; pDbParameter.DbType = pDataType; pDbParameter.Size = nDataSize; if (pDbParameter.GetType() == typeof(SqlParameter)) { (pDbParameter as SqlParameter).Scale = byDataScale; } return(pDbParameter); } catch (Exception pException) { throw new ExceptionManager ( this, "GetDbParameter(strParameterName, pParameterDirection, pDataType, nDataSize, byDataScale)", pException ); } }