Example #1
0
 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());
     }
 }
Example #2
0
 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());
     }
 }
Example #3
0
        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);
        }
Example #4
0
 public abstract IDBAccessDal <T> GetDalByDBAccessType(DBAccessType dbAccessType);
Example #5
0
        /// <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;
        }
Example #6
0
        /// <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);
        }