コード例 #1
0
        /// <summary>
        /// MySQL Connection을 연결합니다.
        /// </summary>
        /// <param name="db">DAAB MySqlProvider 인스턴스</param>
        /// <param name="tryCount">연결 실패 시, 재 시도 횟수</param>
        /// <returns>새로 연결된 <see cref="NpgsqlConnection"/>의 인스턴스, 만약 연결에 실패했다면 null을 반환합니다.</returns>
        internal static NpgsqlConnection OpenConnection(this NpgsqlDatabase db, int tryCount)
        {
            if (IsDebugEnabled)
            {
                log.Debug("PostgreSql Database에 연결하려고 합니다...");
            }

            NpgsqlConnection connection = null;

            var count = 0;

            for (var i = 0; i < tryCount; i++)
            {
                try {
                    if (IsDebugEnabled)
                    {
                        log.Debug("NpgsqlConnection을 생성하고, 비동기 방식으로 Open합니다. 시도 횟수=[{0}]", ++count);
                    }

                    connection = (NpgsqlConnection)db.CreateConnection();
                    connection.Open();

                    if (connection.State == ConnectionState.Open)
                    {
                        if (IsDebugEnabled)
                        {
                            log.Debug("NpgsqlConnection을 연결했습니다!!!");
                        }

                        return(connection);
                    }
                }
                catch (Exception ex) {
                    HandleConnectionError(db, ex, count);
                }
            }

            Guard.Assert(connection != null && connection.State != ConnectionState.Closed, "NpgsqlConnection을 열지 못했습니다!!!");
            return(connection);
        }