잊지 않겠습니다.

ADO .NET

.NET Framework 2009. 1. 7. 10:58

ADO .NET에서의 데이터 검색

   1. 기존의 Key를 기반으로 Row를 받는다면 DataTable.Rows.Find를 사용
   2. 검색조건을 만족하는 행을 컨트롤에 바인드 시켜야지 된다면 DataView를 사용
         1. 가장 중요한 내용은 컨트롤에 바인드 되는 내용에 대한 고려
         2. 컨트롤에 바인드를 목적으로 가지고 있다면 DataView를 필수적으로 이용
         3. 키열이 아닌 열의 조합에 대해서 반복적인 검색을 수행할것이라면 DataView.Find를 이용
         4. 그 외의 모든 경우, DataTable.Select 사용

DataSet에서의 데이터의 검색은 DataTable 이나 SELECT 구문에서의 값의 리턴을 통해서 얻어올수 있다.

그러나, Off_Line 데이터를 원칙으로 가지고 있으며, 매번 데이터의 검색시마다 Query문을 넘기게 되는 것은 DB Server에 매우 큰 부하를 가지고 오게 된다. 따라서, Off_Line으로 데이터를 가지고 온 후에, 데이터를 검색, 수정, 추가 후 최종적으로 업데이트 시키는 것이 보다 더 나은 데이터 이용 이라고 할 수 있다.[물론 대부분의 경우, 어떠한 특정한 경우에서는 맞지 않는 말이라고 할 수 있다.

.NET Framework에서의 데이터 검색과 필터링 방법은 다음과 같다.
1. DataTable 상에서의 객체의 검색과 필터링 기능 이용
2. DataView를 이용

* DataView를 이용하는 이유
1) DataView의 주요 기능은 Windows Form과Web Form 모두에서 데이터를 바인딩할 수 있도록 허용
2) 검색의 자유로운 변화[DataTable의 경우에는 Primary Key로만 검색이 가능하다]


CommandBuilder

사용자가 입력하는 텍스트 명령을 사용하는 쿼리 도구를 통해서와 같이 SelectCommand가 런타임에 동적으로 지정되는 경우에는 디자인 타임에 적절한 InsertCommand, UpdateCommand 또는 DeleteCommand를 지정할 수 없습니다. DataTable이 단일 데이터베이스 테이블에 매핑되거나 단일 데이터베이스 테이블에서 생성되면 CommandBuilder 개체를 사용하여 DataAdapter의 DeleteCommand, InsertCommand 및 UpdateCommand를 자동으로 생성할 수 있습니다.

자동 명령 생성이 작동하도록 하려면 최소한 SelectCommand 속성은 설정해야 합니다. SelectCommand에서 검색하는 테이블 스키마에 따라 자동 생성되는 INSERT, UPDATE 및 DELETE 문의 구문이 결정됩니다.

CommandBuilder 는 삽입, 업데이트 및 삭제 명령을 생성하는 데 필요한 메타데이터를 반환하기 위해 SelectCommand를 실행해야 합니다. 결과적으로 데이터 소스에 추가로 이동해야 하므로 성능이 떨어질 수 있습니다. 최적의 성능을 얻으려면 CommandBuilder를 사용하는 대신 명령을 명시적으로 지정합니다.

SelectCommand는 또한 기본 키 열이나 고유 열을 적어도 하나는 반환해야 합니다. 이러한 열이 없으면 InvalidOperation 예외가 생성되고 명령이 생성되지 않습니다.

CommandBuilder 는 DataAdapter와 연결될 때 DataAdapter의 InsertCommand, UpdateCommand 및 DeleteCommand 속성이 null 참조인 경우 자동으로 이러한 속성을 생성합니다. 속성에 대한 Command가 이미 있으면 기존 Command가 사용됩니다.

테이블을 두 개 이상 조인하여 만든 데이터베이스 뷰는 단일 데이터베이스 테이블로 간주되지 않습니다. 이 경우 CommandBuilder를 사용하여 명령을 자동으로 생성할 수 없으므로 사용자가 명령을 명시적으로 지정해야 합니다. DataSet에 대한 업데이트를 다시 데이터 소스에 적용하기 위한 명령을 명시적으로 설정하는 것에 대한 자세한 내용은 DataAdapter 및 DataSet을 사용하여 데이터베이스 업데이트를 참조하십시오.

출 력 매개 변수를 다시 DataSet의 업데이트된 행에 매핑하려는 경우도 있습니다. 자동 생성된 ID 필드의 값이나 타임스탬프를 데이터 소스에서 검색하는 작업은 일반적인 작업입니다. CommandBuilder는 기본적으로 출력 매개 변수를 업데이트된 행의 열에 매핑하지 않습니다. 이 경우 사용자가 명시적으로 명령을 지정해야 합니다. 자동 생성되는 ID 필드를 삽입된 행의 열에 다시 매핑하는 예제는 Identity 또는 Autonumber 값 검색을 참조하십시오.


 SQL Query를 자동으로 생성해주는 Class..

그런데, Query를 생성하기 위해서 다시 DB를 Access한다는 것이 좀 애매하다는 생각이 든다.


DataTable에서의 Data 검색

  1. 기존의 Key를 기반으로 Row를 받는다면 DataTable.Rows.Find를 사용
  2. 검색조건을 만족하는 행을 컨트롤에 바인드 시켜야지 된다면 DataView를 사용
  • 가장 중요한 내용은 컨트롤에 바인드 되는 내용에 대한 고려
  • 컨트롤에 바인드를 목적으로 가지고 있다면 DataView를 필수적으로 이용
  • 키열이 아닌 열의 조합에 대해서 반복적인 검색을 수행할것이라면 DataView.Find를 이용
  • 그 외의 모든 경우, DataTable.Select 사용

DataView에서의 Data 검색

 DataSet에서의 데이터의 검색은 DataTable 이나 SELECT 구문에서의 값의 리턴을 통해서
얻어올수 있다.

그러나, Off_Line 데이터를 원칙으로 가지고 있으며, 매번 데이터의 검색시마다 Query문을
넘기게 되는 것은 DB Server에 매우 큰 부하를 가지고 오게 된다. 따라서, Off_Line으로 데이터를
가지고 온 후에, 데이터를 검색, 수정, 추가 후 최종적으로 업데이트 시키는 것이 보다 더 나은
데이터 이용 이라고 할 수 있다.[물론 대부분의 경우, 어떠한 특정한 경우에서는 맞지 않는 말이라고
할 수 있다.]

.NET Framework에서의 데이터 검색과 필터링 방법은 다음과 같다.
1. DataTable 상에서의 객체의 검색과 필터링 기능 이용
2. DataView를 이용

* DataView를 이용하는 이유
1) DataView의 주요 기능은 Windows Form과Web Form 모두에서 데이터를 바인딩할 수 있도록 허용
2) 검색의 자유로운 변화[DataTable의 경우에는 Primary Key로만 검색이 가능하다]

Posted by Y2K
,