Kori 3월 1일, 2022에 포스트됨 공유하기 3월 1일, 2022에 포스트됨 Docwiki에 있는 "Defining Connection (FireDAC)"를 번역한 글 (번역일: 2022년 3월 1일) 위로 가기: [DocWiki 번역] 연결(connection)을 가지고 작업하기 (FireDAC) 목차 일반 (General) 연결 정의 파일 (Connection Definition File) Persistent(영속) 연결 정의 생성하기 Private(프라이빗) 연결 정의 생성하기 Temporary(임시) 연결 정의 생성하기 개발 환경에서 생성하기 (At Design-Time) 실행 중에 생성하기 (At Run-Time) 연결 정의 편집하기 기타 참고 예제 FireDAC의 연결 파라미터를 저장하고 사용하는 방법과 연결 정의(connection definition)가 무엇인지를 설명한다. 연결 파라미터를 지정하려면, 반드시 애플리케이션에서 연결 정의(connection definition)를 사용해야 한다. 연결 정의는 파라미터 세트이다. 연결은 풀링될(pooled) 수 있다. 일반 (General) 연결 정의(connection definition)는 FireDAC 드라이버를 사용하여 애플리케이션을 DBMS에 어떻게 연결하는 지를 정의하는 파라미터를 모아놓은 세트이다. FireDAC의 연결 정의는 BDE의 별칭(Alias), ADO의 UDL(OLEDB 연결 문자열을 저장), ODBC의 DSN(데이터 소스 네임)에 해당한다. FireDAC에서 지원하는 데이터베이스 관리 시스템의 목록과 해당 파라미터는 FireDAC Database Connectivity에 있다. FireDAC이 지원하는 연결 정의 유형은 다음과 같이 3가지이다. 타입 설명 장점 단점 Persistent (영속) 고유한 이름을 가진다. FDManager에서 관리된다. 연결 정의(connection definition) 파일 안에 저장된다. 한번 정의하면 많은 애플리케이션에서 전반적으로 재사용할 수 있다. 풀링될 수 있다. 파라미터 (서버 주소, DB명, 등등)가 공개적으로 보이고, 추후에 변경할 수도 있다. 변경 후 FDManager를 다시 활성화하려면, RAD 스튜디오 IDE를 다시 시작해야한다. 그래야 개발 화면에 새로 추가된 정의가 보인다. Private (프라이빗) 고유한 이름을 가진다. FDManager에서 관리된다. 하지만, 연결 정의 파일 안에 저장되지 않는다. 연결 정의 파라이터들이 애플리케이션 "외부에" 보이지 않는다. 풀링될 수 있다. 각 프로그램을 다시 시작한 후에, 애플리케이션에 Private 연결 정의를 생성할 수 있다. 다른 프로그램과 공유할 수 없다. 개발 화면에서 생성할 수 없다. Temporary (임시) 이름이 없다. 연결 정의 파일 안에 저장되지 않는다. FDManager에서 관리되지 않는다. 연결 정의를 생성하는 가장 간단한 방법은 TFDConnection.Params 프로퍼티를 채워넣는 것이다. TFDConnection 컴포넌트 에디터에서 개발 화면에서 생성할 수 있다. Private과 비슷하다. 하지만, 이름으로 참조할 수 없고 풀링되지 않는다는 점은 다르다. 연결 정의 파일 (Connection Definition File) 영속 연결 정의(들)은 연결 정의(connection definition) 파일이라는 외부 파일 안에 저장된다. 이 파일은 표준 INI 텍스트 파일 형식이다. 처음에는 FDExplorer(파이어닥 익스플로러) 또는 FDAdministrator(파이어닥 어드민) 유틸리티를 사용하여 편집하거나 또는 수작업으로 폼 디자이너 또는 코드에서 편집할 수 있다. 이 파일의 전체 경로 기본값은 C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini 이다. 주의: RAD 스튜디오 IDE를 작동시키고, 그 안에서 FDExplorer(파이어닥 익스플로러) 또는 FDAdministrator(파이어닥 어드민) 을 사용하여 새 영속 연결 정의를 추가하면, 해당 FireDAC 연결이 바로 개발 화면에 반영되지 않는다. 화면에 반영하려면, 영속 연결 정의 목록을 새로고침해야 하는데, 그러려면 FDExplorer를 다시 활성화 하거나 RAD 스튜디오 IDE를 다시 시작한다. 영속 연결 정의 파일 예시: [Oracle_Demo] DriverID=Ora Database=ORA_920_APP User_Name=ADDemo Password=a MetaDefSchema=ADDemo ;MonitorBy=Remote [MSSQL_Demo] DriverID=MSSQL Server=127.0.0.1 Database=Northwind User_Name=sa Password= MetaDefSchema=dbo MetaDefCatalog=Northwind MonitorBy=Remote 애플리케이션에서는 FDManager.ConnectionDefFileName 프로퍼티에 연결 정보 파일 이름을 명시할 수 있다. FireDAC은 연결 정보 파일을 찾을 때 다음 장소를 검색한다. 만약 ConnectionDefFileName이 명시되어 있으면, 경로를 뺀 파일 이름만 검색한다. 애플리케이션의 .exe 파일이 있는 폴더에서 검색한다. 그래도 없으면, 명시된 파일 이름을 그대로 사용한다. 만약 ConnectionDefFileName이 명시되어 있지 않으면, 애플리케이션의 .exe 파일이 있는 폴더에서 FDConnectionDefs.ini 파일을 검색한다. 만약 찾지 못하면, 해당 레지스트리 키인 HKCU\Software\Embarcadero\FireDAC\ConnectionDefFile에 명시된 파일을 검색한다. 기본 경로는C:\Users\Public\Documents\Embarcadero\Studio\FireDAC\FDConnectionDefs.ini이다. 주의: 개발 화면에서 FireDAC은 FDManager.ConnectionDefFileName에 있는 값을 무시하고, RAD 스튜디오의 bin 폴더 또는 레지스트리에 명시된 파일을 검색한다. 만약 파일을 못찾으면, 예외가 발생한다. 만약 FDManager.ConnectionDefFileAutoLoad가 True로 되어 있으면, 연결 정의 파일은 자동으로 올라온다. True로 되어있지 않으면, 연결 정의를 최초로 사용하기 전에 FDManager.LoadConnectionDefFile 메소드를 호출하여 명시적으로 파일을 로딩해야 한다. 예를 들어 개발 시 TFDConnection.Connected를 True로 설정하기 전에는 연결 정보 파일을 로딩해두어야 한다. Persistent(영속) 연결 정의 생성하기 영속 정의는 FDExplorer 또는 FDAdministrator를 사용하여 생성할 수 있다. 코드에서 생성하는 방법은 다음과 같다. Connection Definitions 데모를 봐도 도움이 될 것이다. 아래의 코드 조각은 "MSSQL_Connection"라는 이름을 가진 연결 정의를 생성한다. 여기에는 같은 장비 내에서 작동하고 있는 MS-SQL 서버를 OS 인증 (SSPI)을 통해 연결할 때 필요한 모든 파라미터가 들어있다. uses FireDAC.Comp.Client, FireDAC.Stan.Def, FireDAC.Stan.Intf, // uses에 아래 유닛이 있어야 MSSQL을 연결하는 영속 연결을 (fdconnectiondefs.ini 안에)생성할 수 있다. FireDAC.Phys.MSSQL, FireDAC.Phys.MSSQLDef; const cNameConnDef = 'MSSQL_Connection'; procedure TForm1.PersistentConnectionClick(Sender: TObject); var oDef: IFDStanConnectionDef; oParams: TFDPhysMSSQLConnectionDefParams; // MSSQL connection params begin // 새 영속 연결을 fdconnectiondefs.ini에 추가한다 FDManager.ConnectionDefs.AddConnectionDef; oDef := FDManager.ConnectionDefs.AddConnectionDef; oDef.Name := cNameConnDef; oParams := TFDPhysMSSQLConnectionDefParams(oDef.Params); oParams.DriverID := 'MSSQL' oParams.Database := 'Northwind'; oParams.UserName := '.............'; oParams.Password := '.............'; oParams.Server := '127.0.0.1'; oParams.OSAuthent := false; oParams.MARS := false; oDef.MarkPersistent; oDef.Apply; end; ..................... procedure TForm1.ConnectionClick(Sender: TObject); FDConnection1.ConnectionDefName := cNameConnDef; FDConnection1.Connected := True; end; FDManager는 FireDAC 연결 관리자의 전역(global) 인스턴스이다. FDManager.ConnectionDefs 프로퍼티: IFDStanConnectionDefs는 Persistent(영속)와 Private(프라이빗) 연결 정의의 컬렉션이다. AddConnectionDef 메소드는 새 연결 정의를 추가한다. MarkPersistent 메소드는 연결 정의를 Persistent(영속)으로 표시한다. Apply 메소드는 연결 정의를 연결 정의 파일에 저장한다. MarkPersistent를 호출하지 않으면 해당 연결 정의는 Private(프라이빗)이 된다. Private(프라이빗) 연결 정의 생성하기 Private(프라이빗) 연결 정의는 코드를 통해서만 생성할 수 있다. 코드는 앞에 있는 것과 비슷한데, MarkPersistent를 호출하지 않는다는 점이 다르다. 또한 BDE와 유사한 방식으로도 사용할 수 있다. var oParams: TStrings; begin oParams := TStringList.Create; oParams.Add('Server=127.0.0.1'); oParams.Add('Database=Northwind'); oParams.Add('OSAuthent=Yes'); FDManager.AddConnectionDef('MSSQL_Connection', 'MSSQL', oParams); ..................... FDConnection1.ConnectionDefName := 'MSSQL_Connection'; FDConnection1.Connected := True; Temporary(임시) 연결 정의 생성하기 개발 환경에서 생성하기 (At Design-Time) Temporary(임시) 연결 정의는 개발 화면에서 FireDAC Connection Editor를 사용하여 생성할 수 있다. TFDConnection을 클릭하면 FireDAC Connection Editor가 나타난다. 또는 개발 화면의 폼 디자이너에서 TFDConnection을 한번 클릭하여 선택하고, 오브젝트 인스펙터에서 DriverName 프로퍼티를 찾아서 해당 드라이버를 선택한다. 그리고 나서, Params 프로퍼티를 확장하고 필요한 프로퍼티들을 지정한다. 마지막으로 Connected 프로퍼티를 True로 지정한다. 실행 중에 생성하기 (At Run-Time) 임시 연결을 실행 중에 코드를 통해 생성하려면 TFDConnection.Params 프로퍼티를 채워야 한다. 이것은 가장 간단하고 가장 편하게 연결 정의를 생성하는 방식이다. FDConnection1.DriverName := 'MSSQL'; FDConnection1.Params.Add('Server=127.0.0.1'); FDConnection1.Params.Add('Database=Northwind'); FDConnection1.Params.Add('User_name=sa'); FDConnection1.Connected := True; 실행 중에 임시 연결을 생성하는 또 다른 방법은 TFDConnection.Params 프로퍼티를 해당 DBMS 고유 클래스로 타입 변환을 하는 것이다. 이것은 가장 안전하게 연결 정의를 생성하는 방식이다. 그 이유는 IDE의 코드 인사이트(Code Insight)와 컴파일러가 구문이 올바른지 점검하기 때문이다. uses FireDAC.Phys.IBDef, FireDAC.Phys.IBWrapper; ...... FDConnection1.DriverName := 'IB'; with FDConnection1.Params as TFDPhysIBConnectionDefParams do begin Protocol := ipTCPIP; Server := '127.0.0.1'; Database := 'c:\IB\employee.gdb'; UserName := 'sysdba'; Password := 'masterkey'; end; FDConnection1.Connected := True; 또다른 방식은 실행 중에 TFDConnection.ConnectionString 프로퍼티에 연결 문자열을 명시하는 것이다. 연결 문자열은 연결 정의 파라미터들을 편하게 명시하는 길이다. 예를 들어 다음과 같다. FDConnection1.ConnectionString := 'DriverID=MSSQL;Server=127.0.0.1;Database=Northwind;User_name=sa'; FDConnection1.Connected := True; 연결 정의 편집하기 애플리케이션에서 실행 중에 표준 FireDAC Connection Editor를 통해서 연결 정의를 생성하고 편집해야 하는 경우가 있을 수 있다. TFDConnection에 저장된 임시 연결 정의을 편집하려면, 다음과 같이 코딩한다. uses FireDAC.VCLUI.ConnEdit; ... if TfrmFDGUIxFormsConnEdit.Execute(FDConnection1, '') then FDConnection1.Connected := True; FireDAC 연결 정의가 연결 문자열로 되어있는 경우, 다음과 같이 코딩한다. uses FireDAC.VCLUI.ConnEdit; ... var sConnStr: String; ... sConnStr := FDConnection1.ResultConnectionDef.BuildString(); if TfrmFDGUIxFormsConnEdit.Execute(sConnStr, '') then begin FDConnection1.ResultConnectionDef.ParseString(sConnStr); FDConnection1.Connected := True; end; 기타 참고 FDAdministrator utility FDExplorer utility FireDAC Database Connectivity Multithreading Path Variables 예제 FireDAC Connection Definitions 예제 FireDAC Create Connection 예제 FireDAC InterBase 예제 FireDAC MS Access 예제 FireDAC MS SQL 예제 FireDAC MySQL 예제 FireDAC SQLite 예제 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.