public override IDBAccessDal <Log_SystemMonitor> GetDalByDBAccessType(DBAccessType dbAccessType) { if (dbAccessType == DBAccessType.EF) { Log_SystemMonitorEFDal Log_SystemMonitorDal = new Log_SystemMonitorEFDal(new Log_SystemMonitorContext()); return(Log_SystemMonitorDal); } else if (dbAccessType == DBAccessType.NH) { throw new Exception("Not define dal methods when DBAccessType = NH"); } else { return(new Log_SystemMonitorAdoDal()); } }
public override IDBAccessDal <Log_OperateTrace> GetDalByDBAccessType(DBAccessType dbAccessType) { if (dbAccessType == DBAccessType.EF) { Log_OperateTraceEFDal log_OperateTraceDal = new Log_OperateTraceEFDal(new Log_OperateTraceContext()); return(log_OperateTraceDal); } else if (dbAccessType == DBAccessType.NH) { throw new Exception("Not define dal methods when DBAccessType = NH"); } else { return(new Log_OperateTraceAdoDal()); } }
public IDBAccessDal <T> DBAccessFactory() { if (dBAccess == null) { lock (locker) { if (dBAccess == null) { DBAccessType dBAccessType = AppConfig.GetFinalConfig("DBAccessTypeKey", DBAccessType.ADONET, LogApi.GetDBAccessType()); string exMsg = ""; try { dBAccess = GetDalByDBAccessType(dBAccessType); } catch (Exception ex) { exMsg = ", " + ex.Message; } string msg = typeof(T).Name + "的数据库访问方式为【" + dBAccessType.ToString() + "】" + exMsg; LogCom.WriteModelToFileForDebug(new { 内容 = msg }); } } } return(dBAccess); }
public abstract IDBAccessDal <T> GetDalByDBAccessType(DBAccessType dbAccessType);
/// <summary> /// 获取数据库访问对象的静态方法 /// </summary> /// <param name="type">数据库访问的类型</param> /// <param name="connectionString">访问数据库的连接字符串</param> /// <returns>返回数据库访问对象(dbAccess)</returns> public static IDBAccess GetDBAccess(DBAccessType type, string cnKey) { IDBAccess dbAccess = null; string connectionString = dbConnectionString(cnKey); switch (type) { case DBAccessType.SQL: dbAccess = new DBAccess<SqlConnection, SqlCommand, SqlDataAdapter>(connectionString); break; case DBAccessType.ODBC: dbAccess = new DBAccess<OdbcConnection, OdbcCommand, OdbcDataAdapter>(connectionString); break; case DBAccessType.OLEDB: dbAccess = new DBAccess<OleDbConnection, OleDbCommand, OleDbDataAdapter>(connectionString); break; case DBAccessType.ORACLE: dbAccess = new DBAccess<OracleConnection, OracleCommand, OracleDataAdapter>(connectionString); break; } return dbAccess; }
/// <summary> /// SQLServer_SQL実行メソッド /// </summary> public static dynamic ExecuteSQL(string sqlFileId, string sqlId, dynamic parameter = null, DBAccessType dbAccessType = DBAccessType.Select) { //接続文字列の取得 var ConnectionString = FetchConnectionString(); //SQLの取得 string SQL = string.Empty; switch (dbAccessType) { case DBAccessType.Select: SQL = new QueryXmlBuilder <dynamic>(sqlFilePath, sqlFileId, sqlId, parameter).GetQuery(); break; case DBAccessType.Insert: SQL = new QueryXmlBuilder <dynamic>(sqlFilePath, sqlFileId, sqlId, parameter).GetQuery(SqlType.insert); break; case DBAccessType.Update: SQL = new QueryXmlBuilder <dynamic>(sqlFilePath, sqlFileId, sqlId, parameter).GetQuery(SqlType.update); break; case DBAccessType.Delete: SQL = new QueryXmlBuilder <dynamic>(sqlFilePath, sqlFileId, sqlId, parameter).GetQuery(SqlType.delete); break; } dynamic returnObject; //データベース接続の準備 using (var connection = new SqlConnection(ConnectionString)) using (var command = connection.CreateCommand()) { try { Logger.Write(string.Format("[SQL]{0} Params:{1}", SQL, Convert.ToString((object)parameter))); // データベースの接続開始 connection.Open(); if (dbAccessType == DBAccessType.Select) { // 実行するSQLの準備 returnObject = parameter == null?connection.Query(SQL).ToList() : connection.Query(SQL, (Object)parameter).ToList(); //★★↑返り値はList<object>で、一つのobjectの実体はDictionary型となっており、 //Keyにカラム名(物理名)、Valueに値が入っている } else { returnObject = parameter == null?connection.Execute(SQL) : connection.Execute(SQL, (Object)parameter); } } catch (Exception exception) { Console.WriteLine(exception.Message); throw; } } return(returnObject); }