IsSqlString() public static method

지정한 쿼리문이 일반적인 쿼리문인지, Stored Procedure 이름인지 판단한다.
DAAB의 Database에는 GetSqlStringCommand, GetProcedureCommand 만 지원한다. 동적으로 실행할 쿼리문이 결정될 때에는 GetCommand 와 같이 일반 SQL 문장과 Procedure Name을 구분하지 않고, Command를 빌드해주는 함수가 필요하다.
public static IsSqlString ( string query ) : bool
query string 검사할 SQL 문장
return bool
Exemplo n.º 1
0
        /// <summary>
        /// QueryProvider에서 제공하는 Query로 <see cref="DbCommand"/> 인스턴스를 생성합니다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="queryKey">[Section,] QueryName 형태의 쿼리 키</param>
        /// <param name="parameters">parameter collection</param>
        /// <returns>DbCommand instance</returns>
        /// <exception cref="InvalidOperationException">QueryProvider 속성이 null일때</exception>
        public static DbCommand GetNamedQueryCommand(this IAdoRepository repository, string queryKey, params IAdoParameter[] parameters)
        {
            var query = repository.QueryProvider.GetQuery(queryKey);

            Guard.Assert(query.IsNotWhiteSpace(), "QueryKey=[{0}] 에 해당하는 쿼리 문을 찾지 못했습니다.", queryKey);

            return((AdoTool.IsSqlString(query))
                       ? repository.GetSqlStringCommand(query, parameters)
                       : repository.GetProcedureCommand(query, AdoTool.DEFAULT_DISCOVER_PARAMETER, parameters));
        }
Exemplo n.º 2
0
        /// <summary>
        /// 지정된 쿼리 문을 실행한 결과 셋의 레코드 갯수를 구한다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="query">실행할 Command 객체</param>
        /// <param name="parameters">Command 인자 정보</param>
        /// <returns>결과 셋의 레코드 수</returns>
        /// <remarks>
        /// 실제 SQL의 count(*) 함수를 생성하는 것이 아니라, IDataReader를 이용하여 결과 셋을 가져와서 갯수만 센다.
        /// 장점은 DataSet을 이용하여 Paging하는 것보다 빠르고, Count 용 Query문을 따로 만들 필요가 없다.
        /// 단점은 SQL의 count(*) 함수보다는 당연히 느리다.
        /// </remarks>
        public static int Count(this IAdoRepository repository, string query, params IAdoParameter[] parameters)
        {
            query.ShouldNotBeWhiteSpace("query");

            if (AdoTool.IsSqlString(query))
            {
                return(repository.CountBySqlString(query, parameters));
            }

            using (var cmd = repository.GetCommand(query))
                return(repository.Count(cmd, parameters));
        }
Exemplo n.º 3
0
        /// <summary>
        /// <paramref name="query"/>를 Paging 정보에 근거해서 실행하고, 결과를 DataTable로 반환한다.
        /// NOTE: DISTINCT, TOP N 조회는 Paging에서 지원하지 않습니다.
        /// </summary>
        /// <param name="query">조회용 쿼리 문</param>
        /// <param name="pageIndex">Page Index (0부터 시작).  null이면 0으로 간주</param>
        /// <param name="pageSize">Page Size. 한 페이지에 표현할 요소 수 (보통 10개). null이면 10으로 간주</param>
        /// <param name="parameters">조회용 쿼리의 Parameter 정보</param>
        /// <returns>Paging된 DataTable</returns>
        public PagingDataTable ExecutePagingDataTable(string query, int?pageIndex, int?pageSize,
                                                      params IAdoParameter[] parameters)
        {
            query.ShouldNotBeWhiteSpace("query");

            if (AdoTool.IsSqlString(query))
            {
                return(ExecutePagingDataTableBySqlString(query, pageIndex, pageSize, parameters));
            }

            using (var cmd = this.GetCommand(query))
                return(ExecutePagingDataTable(cmd, pageIndex, pageSize, parameters));
        }
Exemplo n.º 4
0
        /// <summary>
        /// 지정된 쿼리문을 CommendText로 가지는 <see cref="DbCommand"/> 인스턴스를 생성합니다.
        /// </summary>
        /// <param name="repository">IAdoRepository 인스턴스</param>
        /// <param name="query">simple query string or procedure name or queryKey of QueryProvider ([Section,] QueryName)</param>
        /// <param name="discoverParams">discover parameters</param>
        /// <returns>instance of <see cref="DbCommand"/></returns>
        public static DbCommand GetCommand(this IAdoRepository repository, string query, bool discoverParams)
        {
            query.ShouldNotBeWhiteSpace("query");

            if (repository.QueryProvider != null &&
                query.Contains(InIQueryProviderBase.SECTION_DELIMITER) &&
                AdoTool.IsSqlString(query) == false)
            {
                string namedQuery;
                if (repository.QueryProvider.TryGetQuery(query, out namedQuery))
                {
                    query = namedQuery;
                }
            }

            return((AdoTool.IsSqlString(query))
                       ? repository.GetSqlStringCommand(query)
                       : repository.GetProcedureCommand(query, discoverParams));
        }