1. 개요
Windows 기반의 신속한 개발 도구인 Delphi는 일반적인 Windows 애플리케이션을 개발할 수 있을 뿐만 아니라 강력한 데이터베이스 애플리케이션 개발 기능도 갖추고 있습니다. Delphi 자체는 데이터베이스 프로그램 개발을 위한 다양한 애플리케이션의 요구 사항을 충족할 수 있는 BDE, ODBC, ADO 및 InterBase와 같은 여러 데이터베이스 드라이버에 대한 지원을 제공합니다.
그러나 Delphi로 개발된 데이터베이스 프로그램을 퍼블리싱하는 경우 애플리케이션 설치 외에도 데이터베이스 드라이버도 동시에 퍼블리싱해야 합니다. 단일 또는 여러 개의 간단한 테이블 데이터 저장소만 포함하는 일부 독립 실행형 애플리케이션의 경우 이는 약간 무거워 보입니다. 또한, 일부 애플리케이션 자체는 많은 양의 데이터를 저장해야 하는데, 결과 자체가 짧고 간결해야 하는 경우 델파이를 이용한 기존의 데이터베이스 개발 방식으로는 이러한 요구를 충족시킬 수 없습니다.
그렇다면 위의 모순을 해결하고 거대한 데이터베이스 드라이버와 분리할 수 있는 "얇은" 데이터베이스 독립형 애플리케이션을 개발할 수 있는 방법은 없을까? Delphi5는 Midas 제어판에 TClientDataSet 컨트롤을 제공하여 이 문제를 잘 해결할 수 있습니다.
2. TClientDataSet 사용 시 핵심 포인트
TClientDataSet 컨트롤은 TDataSet을 상속받았으며, 데이터 저장 파일 형식 확장자는 .cds입니다. 파일 형식의 데이터 저장 및 동작을 기반으로 한 컨트롤입니다. 이 컨트롤은 데이터 운영 및 처리를 위한 인터페이스와 기능을 캡슐화하며 위에서 언급한 데이터베이스 드라이버에 의존하지 않으며 기본적으로 독립형 "씬" 데이터베이스 애플리케이션의 요구 사항을 충족할 수 있습니다.
1. TClientDataSet의 기본 속성과 메소드 소개
1). FieldDefs: 필드 정의 목록 속성
개발자는 속성 편집기에서 속성 편집 버튼을 클릭하거나 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 "필드 편집기" 메뉴를 선택하여 필드를 편집할 수 있습니다. 이 속성을 설정한 후 실제로는 테이블의 구조를 정의하는 것과 동일합니다. 기존 데이터 테이블의 구조와 데이터를 로드하려면 마우스 오른쪽 버튼을 클릭하고 팝업에서 "로컬 데이터 할당" 메뉴를 선택하면 됩니다. 위로 메뉴에서 현재 폼의 데이터베이스에 연결되어 있는 데이터 세트 컨트롤의 이름을 선택합니다. (적용할 데이터 세트 컨트롤은 현재 폼에 배치되어 활성화되어 있어야 합니다.)
사용 시 참고 사항:
사용자 정의된 필드 이름 테이블의 경우 속성을 편집한 후에도 컨트롤을 열 수 없습니다. 컨트롤을 마우스 오른쪽 버튼으로 클릭하고 팝업 메뉴에서 "데이터 세트 생성" 메뉴를 선택하여 컨트롤이 활성화되고 열리고 사용되기 전에 위에서 편집한 필드 목록을 기반으로 데이터 세트를 생성할 수 있도록 해야 합니다. 그렇지 않으면 "ClientDataSet1: 누락된 데이터 PRavider 또는 데이터 패킷"과 유사한 오류가 발생합니다(런타임 중에 런타임이 컨트롤의 CreateDataSet 메서드를 호출하여 필드와 테이블을 동적으로 정의할 수 있음).
2). FileName속성
설명: 데이터 저장 파일의 이름입니다.
이 컨트롤은 파일 기반의 데이터 작업 컨트롤이므로 데이터 편집을 위한 컨트롤을 열고 활성화하려면 작업 중인 데이터 파일의 이름(기본 확장자 이름 .cds)을 지정해야 합니다.
예제 1: 이 속성을 사용하여 지정된 .cds 파일 열기
var
경로: 문자열;
시작하다
Path := ExtractFilePath(application.ExeName); //실행 파일 경로를 가져옵니다.
CDataSet1.FileName := 경로 + 'test.cds';
CDataSet1.Open;
끝;
3). CreateDataSet 메서드
설명: 이 방법은 FieldDefs의 필드 이름 테이블을 구조로 사용하여 테이블을 동적으로 정의하는 데 자주 사용되는 데이터 세트를 생성합니다.
예 2: 이름과 나이라는 두 개의 필드가 있는 데이터 세트를 동적으로 생성합니다.
//필드명 테이블 생성
CDataSet.FieldDefs.Clear;
CDataSet.FieldDefs.AddFieldDef를 사용하여 수행
시작하다
이름 := '이름';
크기 := 10;
데이터 유형 := ftString;
끝;
CDataSet.FieldDefs.AddFieldDef를 사용하여 수행
시작하다
이름 := '나이';
데이터 유형 := ftInteger;
끝;
//동적으로 데이터 세트 생성
CDataSet.CreateDataSet;
//데이터 세트 활성화 및 열기
CDataSet.Open;
4). 개방형 방식
설명: 데이터 편집을 위한 데이터 세트 컨트롤을 열고 활성화합니다.
a. FileName 특성이 지정되면 Open 메서드를 사용하여 컨트롤을 직접 열고 활성화할 수 있습니다(예제 1 참조).
b. FileName 속성이 지정되지 않은 경우 예제 2의 메서드를 사용하여 데이터 세트를 동적으로 생성하고 연 다음 데이터를 조작할 수 있습니다.
5). LoadFromFile 및 SaveToFile
설명: 파일에서 테이블 구조와 데이터를 로드하고 데이터를 파일에 저장합니다. 이 방법은 Word의 새 파일 열기 및 다른 이름으로 저장 기능과 유사합니다.
예시 3: 데이터 세트의 데이터를 지정된 파일에 저장
CDataSet.SaveToFile('c:/windows/desktop/test.cds');
6).First(처음으로), Prior(앞으로), Next(뒤로), Last(끝으로), Edit(편집), CanCel(편집 취소), Post(저장), Insert(기록 삽입), Append (기록 추가), 삭제(삭제), 새로 고침(데이터 새로 고침) 및 기타 일반적인 데이터 세트 방법
참고: FileName 특성이 지정되면 해당 Post 메서드는 SaveToFile 메서드와 유사하게 지정된 파일에 데이터를 저장할 수 있습니다. 저장 파일 이름이 지정되지 않은 경우 Post 메서드는 데이터를 RAM에만 저장합니다. 그 외의 방법은 일반 데이터셋 제어 사용법과 동일하므로 생략합니다.
7).필터, 필터링됨: 필터링 속성
설명: 지정된 조건으로 레코드를 필터링하는 데 사용됩니다. 사용법은 생략된 일반 데이터 세트 제어와 동일합니다.
예 4: 활성화되고 열린 데이터 세트에서 남성 성별로 레코드 필터링
CDataSet.Close;
CDataSet.Filter := 'Gender=''' + '남성' + '''';
CDataSet.Filtered := True;
CDataSet.Open;
2. TClientDataSet 컨트롤을 사용한 애플리케이션 게시에 대한 참고 사항:
앞서 언급했듯이 TClientDataSet 컨트롤을 사용하는 프로그램은 출시 시 데이터베이스 드라이버가 필요하지 않으므로 설치 파일 크기가 크게 절약됩니다. 그러나 프로그램을 게시할 때 응용 프로그램(작동에 필요)과 함께 Windows 시스템 디렉터리에 midas.dll(257KB)을 게시하는 것을 잊지 마십시오. 그렇지 않으면 프로그램이 여전히 정상적으로 실행되지 않습니다.
3. 결론
델파이의 TClientDataSet 컨트롤을 사용하면 애플리케이션과 데이터베이스 드라이버를 완전히 분리할 수 있으며 기존 데이터 세트 컨트롤의 단순하고 사용하기 쉬운 특성을 구현하여 "얇게" 작성할 수 있는 기술적 방법과 수단을 제공합니다. 데이터베이스 애플리케이션.
위 프로그램은 Pwindows98과 Delphi5에서 테스트되었습니다.