Kori 4월 19일, 2022에 포스트됨 공유하기 4월 19일, 2022에 포스트됨 Docwiki에 있는 "TFDManager and TFDConnection Questions (FireDAC)"을 번역한 글: 번역일: 2022년 4월 18일 위로 가기: [DocWiki 번역] FAQ (FireDAC) TFDManager와 TFDConnection 질문과 답변을 정리한 목록이다. Q: 나는 TFDManager가 있는 기반 데이터 모듈(base data module) 클래스가 있다. 자손(descendant) 클래스를 만들려고 하는데, 'Application must have only one FDManager' 에러가 발생한다. 뭐가 잘못되었나? A: 애플리케이션 안에 FDManager은 오직 하나만 있을 수 있다. 당신의 클래스 안에서 명시적으로 FDManager를 생성하지 말고, 싱글톤(singleton) 오브젝트로 참조하여 FDManager의 함수를 사용하라. Q: 내 프로젝트 그룹(project group) 안에는 델파이 프로젝트들(애플리케이션들)이 여러개 들어있다. 각 프로젝트 별로 저마다 데이터모듈(DataModule)과 FDManager가 있다.이 데이터모듈을 (복사하거나 비교하기 위해) 하나 이상 같이 열려고 하면, 애플리케이션에서는 FDManager를 오직 하나만 가질 수 있다는 에러가 발생하고 바로 데이터 모듈 하나가 제거된다. A: TFDManager가 정말 필요한가? 애플리케이션에서 TFDManager를 명시적으로 생성할 필요는 없다. TFDManager는 옵션과 구성 파일(configuration file)을 디자인-타임 즉 개발화면에서 설정하기 위해 필요한 것이다. Q: 내 FDManager들이 자꾸 사라져서 새로 만들어야 한다. 고칠 방법이 있나? A: 고칠 방법이 없다. 그이유는 TFDManager는 디자인-타임(개발 중)이나 런-타임(실행 중)에 오직 하나만 생성되기 때문이다. 만약 TFDManager가 여러개 있으면, FireDAC은 어느 TFDManager의 설정을 따라야 할 지를 알 수 없게 된다. 맨 위의 질문을 참고 Q: FireDAC은 연결 풀링(connection pooling)을 지원하나? A: 그렇다. FireDAC은 연결 풀링을 지원한다. 대개 연결 풀링이란 열려있는(open) "물리적" 연결들을 풀(pool)에 모아두고, TFDConnection.Connected가 True로 지정되면 FireDAC은 그 풀(pool) 안에서 "물리적" 연결 하나를 가져다 쓴다. TFDConnection.Connected가 False로 지정되면, 그 "물리적" 연결은 닫힘(close)이 되고, 풀(pool) 안으로 돌아간다. FireDAC에서 연결 풀링을 사용하려면, 연결 정의(connection definition)에서 Pooled=True를 추가하기만 하면 된다. 다른 조치는 필요없다. "멀티쓰레딩(Multithreading)"에 보다 자세히 설명되어 있다. Q: 연결 에디터(Connection Editor) 창은 FDPhysFBDriverLink1.VendorLib을 무시하는 것 같고 하드-코딩된 드라이버를 사용한다. A: 해당 드라이버를 사용하도록 VendorLib을 지정하기는 첫 연결을 하기 전에 해야 한다. 연결이 설정된(established) 다음에, 해당 DBMS 클라이언트가 로드된다. 디자인-타임에, TFDPhysXXXDriverLink의 프로퍼티들이 사용되도록 분명히 하려면, 데이터 모듈(data module) / 폼(form)을 생성하는 순서 상 TFDPhysXXXDriverLink가 가장 먼저인지를 확인하라. 그리고 원한다면 델파이 IDE를 다시 시작하라. 런-타임에, 해당 드라이버 링크의 Release 메소드를 사용하라. FDConnection1.Close; ... FDConnectionN.Close; FDPhysFBDriverLink.VendorLib := 'c:\fbclient.dll'; FDPhysFBDriverLink.Release; FDConnection1.Open; ... FDConnectionN.Open; 또한, 가상 드라이버(virtual driver)를 정의하는 방법도 있다. 자세한 내용은 "드라이버 구성하기(Configuring Drivers)"를 참고하라. 예를 들면, [FB_Embedded] BaseDriverID=FB VendorLib = C:\fb\fbembed.dll 디자인-타임에 DriverID로 FB_Embedded 드라이버를 사용한다. 런-타임에는 FDDrivers.ini를 사용하거나 또는 TFDPhysXXXDriverLink를 구성하라. 인용하기 이 댓글 링크 다른 사이트에 공유하기 더 많은 공유 선택 사항
Recommended Posts
이 토의에 참여하세요
지금 바로 의견을 남길 수 있습니다. 그리고 나서 가입해도 됩니다. 이미 회원이라면, 지금 로그인하고 본인 계정으로 의견을 남기세요.