델파이의 테이블 컨트롤 (구성 요소)과 쿼리 컨트롤에는 데이터 이름 속성이 있어야합니다. DatabaseName 속성은 컨트롤에서 참조 된 데이터 테이블 경로를 지정하는 데 사용될 수 있습니다. 속성 데이터 이름의 경로를 설정하는 두 가지 방법이 있습니다. 첫 번째 방법은 데이터 테이블이 위치한 경로를 직접 입력하는 것입니다. 다른 방법은 데이터베이스 별칭 (별칭)을 사용하는 것입니다. Delphi에서 데이터베이스 별칭은 데이터베이스 엔진 (BDE)에 설정되며 별칭은 파일 경로에 해당합니다. 별명을 다음과 같이 정의 할 수 있습니다. 별칭은 파일 경로의 매핑이며 파일 경로의 약자입니다. 따라서 속성 데이터 이름에서 데이터베이스 별칭을 사용하고 파일 경로를 사용하는 것은 본질적으로 동일하며, 둘 다 데이터 테이블을 찾기위한 루트 경로 역할을합니다. 그러나 데이터베이스 애플리케이션 디자인에서 많은 테이블 컨트롤 및 쿼리 컨트롤이 포함되어 있으면 별명을 사용하여 파일 경로를 참조하는 것이 매우 효율적이고 편리하며 오류가 발생하지 않습니다. 그 이유는 분명합니다. 한편으로, 파일 경로와 같은 키보드에서 입력을 요구하지 않고 별칭에 직접 액세스 할 수 있습니다. .
또한, 테이블 컨트롤 및 쿼리 컨트롤의 표준 이름 속성의 SQL 문에는 데이터 테이블의 경로 정보가 포함될 수 있습니다. 쿼리 및 테이블 컨트롤의 상황은 매우 유사하기 때문에 다음은 테이블 컨트롤에 대한 설명입니다. 이 경로 정보는 완전한 경로이거나 완전한 경로의 후속 부분 일 수 있습니다. 예를 들어, 테이블 컨트롤의 TableName 속성을 할당 할 때 c :/delphi/demo1/data/subscriber를 지정하거나 데이터/가입자를 할당 할 수 있습니다. 즉, 절대 경로를 사용하거나 상대 경로를 사용할 수 있습니다.
프로그램 포팅을 용이하게하려면 일반적으로 속성 데이터 이름에 데이터 테이블의 경로 만 지정하면 표준 이름에 경로 정보를 포함 할 필요가 없습니다. 일반적으로 속성 테이블 이름에 전체 경로를 지정하지 마십시오.
데이터베이스 애플리케이션의 마이그레이션은 중요한 문제입니다. 데이터베이스 또는 데이터 테이블에 액세스하기 위해 데이터베이스 응용 프로그램에서 데이터 파일의 경로에 참여해야합니다. 일반적으로, 데이터베이스 애플리케이션은 개발 후 사용하기 위해 다른 시스템에 포팅되어야하므로 데이터베이스 응용 프로그램이 실행중인 데이터 파일 경로는 개발 시간과 다를 수 있습니다. 따라서 시스템 마이그레이션을 위해 데이터 파일의 경로를 효과적으로 관리해야합니다. 다음은 데이터 파일 경로를 관리하는 세 가지 방법입니다. 1. 응용 프로그램이있는 디렉토리의 하위 디렉토리에서 데이터 파일을 만듭니다. 특정 프로세스는 (1) 디자인의 편의를 위해 설계 중에 데이터베이스 별칭을 사용할 수 있으며 데이터베이스 별칭은 응용 프로그램이 위치한 경로를 가리 킵니다. 테이블 컨트롤의 타블렌 이름 속성에 SubPath 이름을 추가하십시오. (2) 응용 프로그램을 발행하기 전에 모든 테이블 컨트롤 및 쿼리 공간 속성을 False로 활성화하고 속성 데이터베이스 (즉, 비어 있음)의 모든 문자를 삭제하십시오. 기본적으로 응용 프로그램이 실행중인 현재 디렉토리는 응용 프로그램이있는 디렉토리입니다. CHDIR과 같은 프로세스가 현재 디렉토리를 변경하기 위해 응용 프로그램에서 호출되지 않은 경우 세 번째 단계를 수행 할 필요가 없습니다. 그렇지 않으면 세 번째 단계 처리를 수행합니다.
(3) 테이블 컨트롤 및 쿼리 컨트롤을 사용하는 양식의 onecreate 이벤트에서는 응용 프로그램이 각 테이블 제어 및 양식의 쿼리 제어에 위치한 경로를 지정하십시오. 표 1.DatabaseName : = ExtractFilePath (Application.Exename); 구성 파일을 사용하여 데이터 경로를 저장하십시오.이 방법은 응용 프로그램 시스템 설치 또는 첫 번째 실행 중에 구성 파일에 데이터베이스 경로 정보를 작성하는 것입니다. 향후 경로 정보는 구성 파일에서 읽습니다. 구성 파일의 읽기 및 쓰기는 클래스 TINIFILE, 클래스 TregInifile 및 클래스 트레저가 제공하는 방법을 사용하여 구현됩니다. 이 방법의 기본 아이디어는 다음과 같습니다. (1) 설계의 편의를 위해 설계 중에 데이터베이스 별칭을 사용하십시오. (2) 응용 프로그램을 발행하기 전에 모든 테이블 컨트롤 및 쿼리 공간 속성을 False로 활성화하고 속성 데이터베이스 (즉, 비어 있음)의 모든 문자를 삭제하십시오.
(3) 테이블 컨트롤 및 쿼리 컨트롤을 사용하는 양식의 onecreate 이벤트에서 응용 프로그램이 각 테이블 컨트롤에 위치한 경로를 양식의 쿼리 제어로 할당하십시오.
표 1.DatabaseName : = ExtractFilePath (Application.Exename);
3. 데이터베이스 별칭을 사용하여 데이터베이스 경로를 저장하십시오
세션을 사용하여 데이터베이스 별칭을 동적으로 생성하려면 추가가 성공한 후에는 DBTABLE 장치를 양식에 해당하는 시스템의 사용 절에 추가해야합니다. 데이터베이스 별칭을 동적으로 생성하고 삭제할 때 사용하는 것은 양식에 추가 된 세션 1 구성 요소가 아닌 장치에 의해 정의 된 세션 글로벌 변수입니다. 테스트 뱅크 시스템을 만들 때 혼란을 방지하기 위해 Session1 구성 요소를 양식에서 삭제했는데, 이는 기능의 구현에 영향을 미치지 않습니다.
다음 코드는 "가입자"라는 별칭을 만드는 방법을 보여줍니다. 데이터베이스 경로는 "e :/subscriber"이고 데이터베이스 유형은 역설입니다.
session.configmode : = cmall; // 세션 구성 모드를 지정합니다
SESTION.ADDADARDALIAS ( 'net', 'e :/subscriber', 'paradox');
별칭을 삭제 해야하는 경우 먼저 별명이 존재하는지를 삭제하면 예외가 발생합니다. 다음 코드는 데이터베이스 별칭 "가입자"가 존재하는지 여부를 확인하는 방법을 보여줍니다. 그렇다면 삭제하십시오.
변수 정의 : var stralias : tstringlist; // BDE 데이터베이스 별칭 테이블을 저장하는 데 사용됩니다
코드 : stralias : = tstringlist.create; // tstringlist 클래스의 인스턴스를 생성합니다
session.getaliasnames (stralias); // 현재 모든 데이터베이스 별칭을 가져옵니다
// 가입자가 존재하는지 여부를 찾으십시오.
if (stralias.indexof ( '가입자') <> -1)
시작하다
session.deletealias ( '가입자'); // 데이터베이스 별칭 가입자를 삭제합니다
세션 .saveconfigfile; // 저장
끝;