기본 콘텐츠로 건너뛰기

10월, 2013의 게시물 표시

[Oracle] Oracle Schemas Metadata…

역시나 이번 프로젝트에서 새롭게 추가할 항목이 Oracle Database에 대한 Code Generator (C#) 이다. 어떻게 하면 쉽고, 간편하게(?) 스키마 정보를 가져올 수 있을까 생각하고 있던 중에 예전에 잠시 보았던 DbConnection 개체의 GetSchema 메서드를 활용해 보기로 했다. 별도의 코드 작성 없이도 구성할 수 있는 부분이 매력적이다. Tool 로 구성하기 위해서는 범용적인 부분을 염두에 두어야 하지만, 당장은 프로젝트에 적용해야 하는 문제로 Oracle에 대해서만 정리해 놓도록 한다. GetSchema() 를 이용하면 일반적인 DBMS 의 각종 스키마들을 모두 또는 지정한 것들만 DataTable 형식으로 받아서 처리할 수 있다. 물론 Oracle 도 DbConnection을 구현한 것이기 때문에 다른 DBMS도 동일하게 적용될 수 있다. 사용 방법 public virtual abstract DataTable GetSchema(); public virtual abstract DataTable GetSchema(string collectionName); public virtual abstract DataTable GetSchema(string collectionName, string[] restrictionValues); collectionName 은 찾고자 하는 스키마의 종류를 의미하고, restrictionValues 는 스키마 정보를 조회할 때 사용할 제약정보들을 지정하면 된다. 자세한 부분은 참고와 샘플로 확인한다. 참고 사항 collectionName 은 다음과 같은 것들을 지정할 수 있다. Collection Name Number of restrictions Remarks MetaDataCollections 0 Returns this list. Same as using GetSchema() method without parameters. ReservedWords 0

[Oracle] Oracle Client 설치 없이 접속하기

이번 프로젝트는 여러 가지로 상당한 제약이 존재한다. 그 중에서 가장 큰 문제가 시스템에 뭘 설치하려면 요청 > 승인 > 설치 과정을 거쳐야 하고, 국외의 담당자와 연계되기 때문에 시간이 많이 걸린다는 것이다. Oracle Client도 역시 미 설치 상태가 요청되기 때문에 여러 가지 자료들을 조사해서 정리를 해 놓도록 한다. 우선 필요한 라이브러리와 어셈블리들은 다음과 같다. (다른 PC에 설치를 하고 어셈블리들을 가져와야 한다) oci.dll Oracle.DataAccess.dll oraociicus11.dll OraOps11w.dll orannzsbb11.dll oraocci11.dll ociw32.dll 물론 기본 설치 파일은 여기 로 가서 환경에 맞는 버전을 다운로드 해야 한다. ODAC 32bit ODAC 64bit 실제 사용은 Client가 설치되지 않았으므로 TNSNames를 이용하는 것이 아니라 Raw한 ConnectionString을 이용하는 것이다. "user id=사용자ID;password=사용자비밀번호;data source=TNSNames에 지정한 것과 동일한 포맷의 연결정보;" 기타 더 필요한 부분은 다음을 검토해 보도록 한다. http://www.oracle.com/technetwork/database/windows/downloads/index.html http://www.splinter.com.au/connecting-to-oracle-from-c-winforms-aspnet-w/ http://www.splinter.com.au/using-the-new-odpnet-to-access-oracle-from-c/ http://www.sysnet.pe.kr/Default.aspx?mode=2&sub=0&detail=1&wid=822 http://stackoverflow.com/questions/11366695/how-do

등록 과정(Registry) 없이 OCX 사용하는 방법

현재 진행 중인 프로젝트가 외국계 증권사이다보니 시스템에 뭘 설치할 수가 없다. 외부에서 리포트 솔루션을 도입해서 사용을 하여야 하는데, 제공되는 뷰어가 OCX 버전이라서 무설치로 .NET Window Forms에서 적용하여야 한다. 여러 가지 방법을 찾던 중에 다음과 같은 방법을 이용하여 적용할 수 있었다. 단, 이게 최선의 방법일지?? 문제가 없을지는 이후에도 검토를 해 보아야 하겠지만, 기본적인 작동은 하고 있기 때문에 아래의 방법을 정리해 놓도록 한다. 기본적으로 OCX 만 제공받은 상태라고 가정한다. 1. Visual Studio Command Prompt 를 실행한다. 2. sn -k Report.snk 를 실행해서 서명 키를 생성하도록 한다. 3. tlbimp viewer.ocx /primary /keyfile:Report.snk /out:ReportViewer.dll /namespace:MyNamespace 를 실행해서 Type Library용 Assembly를 생성한다. 4. aximp viewer.ocx /Source /rcw:ReportViewer.dll 를 실행해서 OCX Wrapper DLL 과 소스를 생성한다. 위와 같이 생성된 DLL을 참조해서 사용하면 된다. 소스도 같이 생성하였으므로 DLL을 쓰던 소스코드를 쓰던 선택하면 된다. 중요한 것은 Type Library DLL 과 Wrapper DLL 또는 소스를 같이 사용해야 한다는 점이다. 이제 구동을 할 때 .NET Assembly 에서 OCX를 Loading하기 위한 정보를 제공해 주어야 한다. 일반적이라면 OCX를 Registry에 등록을 하고 사용하기 때문에 COM Server를 사용하겠지만, Registry 등록없이 사용하는 것이기 때문에 이를 대신할 정보를 생성하는 것이라고 생각하면 된다. 1. Visual Studio에서 시작 프로젝트를 선택하고 "추가 > 어플리케이션 마