성태의 닷넷 이야기
홈 주인
모아 놓은 자료
프로그래밍
질문/답변
사용자 관리
사용자
메뉴
아티클
외부 아티클
유용한 코드
온라인 기능
MathJax 입력기
최근 덧글
[정성태] Reordering on an Alpha processor ;...
[정성태] 공유 감사합니다. ^^ 참고로, WPF에서 WindowsF...
[Tom Lee] 답변 감사합니다. 나름의 해결책 연구해보고 여기에도 공유해봅니다...
[정성태] 아래의 글을 보면, MoveWindow 하면 될 듯한데요. ^^...
[Tom Lee] 안녕하세요 올려주신 글 참고하여 WPF 어플리케이션 안에 Uni...
[정성태] A graphical depiction of the steps ...
[정성태] 질문을 주셔서 출판사 측에 문의를 했습니다. 약 한 달 정도 후...
[Thorondor
] @정성태 개인 블로그인데도 거의 커뮤니티 급 인 것 같아요. 요...
[정성태] Roll A Lisp In C - Reading ; https...
[정성태] Java - How to use the Foreign Funct...
글쓰기
제목
이름
암호
전자우편
HTML
홈페이지
유형
제니퍼 .NET
닷넷
COM 개체 관련
스크립트
VC++
VS.NET IDE
Windows
Team Foundation Server
디버깅 기술
오류 유형
개발 환경 구성
웹
기타
Linux
Java
DDK
Math
Phone
Graphics
사물인터넷
부모글 보이기/감추기
내용
<div style='display: inline'> <h1 style='font-family: Malgun Gothic, Consolas; font-size: 20pt; color: #006699; text-align: center; font-weight: bold'>CoreLab - OraDirect .NET 사용법</h1> <p> 의외의 ADO.NET 데이터 제공자가 사용되는 경우가 있군요. ^^ 해외 고객사 중의 하나가 다음의 제품을 사용하는데요.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Download dotConnect for Oracle ; <a target='tab' href='http://www.devart.com/dotconnect/oracle/download.html'>http://www.devart.com/dotconnect/oracle/download.html</a> </pre> <br /> 아쉽게도 .NET 1.1용으로 만들어진 예전 사이트라서 "OraDirect .NET"을 사용하고 있었습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > OraDirect .NET for .NET Framework 1.x - OraDirect .NET 4.75 Trial ; <a target='tab' href='http://www.devart.com/dotconnect/oracle/oranet.exe'>http://www.devart.com/dotconnect/oracle/oranet.exe</a> </pre> <br /> 오라클 용은 무조건 ODP.NET을 사용하는 줄 알았는데 꼭 그런 것만은 아니군요. ^^<br /> <br /> <hr style='width: 50%' /><br /> <br /> 테스트를 위한 환경 구성을 해볼까요? ^^<br /> <br /> OraDirect는 사실 ODP.NET에 대한 의존성은 그대로 가지고 있습니다. (그런데, 왜 굳이 OraDirect를 쓰는 걸까요? ^^) 따라서 ODP.NET을 설치해 주어야 합니다.<br /> <br /> 최신의 ODP.NET을 쓰는 것도 좋겠지만, 고객사가 .NET 1.1 사이트임을 감안할 때 ODP.NET도 그에 맞는 버전으로 가야 할 필요가 있었습니다. 그래서 아주 예전의 ODP.NET을 먼저 다운로드해서 설치해 주었습니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Oracle 10g ODAC ; <a target='tab' href='http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html'>http://www.oracle.com/technetwork/database/windows/downloads/utilsoft-087491.html</a> </pre> <br /> 이 버전은 아쉽게도 XCopy 설치가 안됩니다. 그래도 설치없이 동작시킬 수 있는 방법이 있긴 한데요. 다른 컴퓨터에서 ODAC101040.exe를 설치한 다음, 해당 폴더를 그대로 복사해 와서 그 경로를 레지스트리에 맞춰주면 됩니다.<br /> <br /> 다음은 ora10g_hom1.reg 파일로 저장해 둔 레지스트리 등록 파일입니다. 이 중에서 경로만 적절하게 수정해 주고 대상 PC에 등록해 주면 별도의 설치 과정없이 동작시킬 수 있습니다.<br /> <br /> <pre style='height: 400px; margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1] "ORACLE_HOME"="d:\\oracle\\product\\10.1.0\\Client_1" "ORACLE_HOME_NAME"="OraClient10g_home1" "ORACLE_GROUP_NAME"="Oracle - OraClient10g_home1" "ORACLE_BUNDLE_NAME"="Enterprise" "NLS_LANG"="KOREAN_KOREA.KO16MSWIN949" "ORAMTS_CP_TRACE_LEVEL"="0" "ORAMTS_CP_TRACE_DIR"="d:\\oracle\\product\\10.1.0\\Client_1\\oramts\\Trace" "ORAMTS_CONN_POOL_TIMEOUT"="120" "ORAMTS_SESS_TXNTIMETOLIVE"="120" "ORAMTS_NET_CACHE_MAXFREE"="5" "ORAMTS_NET_CACHE_TIMEOUT"="120000" "ORAMTS_OSCREDS_MATCH_LEVEL"="OS_AUTH_LOGIN" "OLEDB"="d:\\oracle\\product\\10.1.0\\Client_1\\oledb\\mesg" "ORACLE_HOME_KEY"="SOFTWARE\\ORACLE\\KEY_OraClient10g_home1" "OO4O"="d:\\oracle\\product\\10.1.0\\Client_1\\oo4o\\mesg" [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\ODP.NET] "TraceFileName"="C:\\ODPNET.trc" "TraceLevel"="0" "TraceOption"="0" "StatementCacheSize"="0" [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\OLEDB] "CacheType"="Memory" "ChunkSize"="100" "DistribTX"="1" "FetchSize"="100" "OSAuthent"="0" "PLSQLRset"="0" "PwdChgDlg"="1" "SchRstLng"="10000" "UserDefFn"="0" "DisableRetClause"="1" "VCharNull"="1" "TraceCategory"="0" "TraceFileName"="c:\\OraOLEDB.trc" "TraceLevel"="0" "TraceOption"="0" "SPPrmDefVal"="0" [HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient10g_home1\OO4O] "CacheBlocks"="20" "FetchLimit"="100" "FetchSize"="4096" "HelpFile"="d:\\oracle\\product\\10.1.0\\Client_1\\oo4o\\doc\\oracleo.hlp" "PerBlock"="16" "SliceSize"="256" "TempFileDirectory"="c:\\temp" "OO4O_HOME"="d:\\oracle\\product\\10.1.0\\Client_1\\oo4o" </pre> <br /> ODP.NET 준비는 이것으로 끝입니다.<br /> <br /> 그다음, OraDirect의 경우 다행히 설치 과정은 필요없습니다. 파일을 풀어내기 위해 다른 컴퓨터에서 설치를 한후 다음의 2가지 파일만 복사해 오면 됩니다.<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > C:\Program Files\Devart\OraDirect.NET\CoreLab.Data.dll C:\Program Files\Devart\OraDirect.NET\CoreLab.Oracle.dll </pre> <br /> 이 2개의 어셈블리 파일을 참조 추가하고 다음과 같이 코딩을 하면 됩니다. <br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > using System; using System.Diagnostics; using CoreLab.Oracle; using System.Data; using System.IO; string oradb = "Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=testdb)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=XE)));User Id=hr;Password=hr;"; using (CoreLab.Oracle.OracleConnection oraConnection = new CoreLab.Oracle.OracleConnection(oradb)) { oraConnection.Open(); OracleCommand command = new OracleCommand(); command.Connection = oraConnection; command.CommandText = "select department_name from departments"; command.CommandType = CommandType.Text; using (OracleDataReader dr = command.ExecuteReader()) { dr.Read(); } Random random = new Random((int)DateTime.Now.Ticks); int regionId = random.Next(Int32.MaxValue); command = new OracleCommand(); command.Connection = oraConnection; command.Parameters.Add(new OracleParameter("REGION_ID", regionId)); command.Parameters.Add(new OracleParameter("REGION_NAME", "test")); // command.Parameters.Add(new OracleParameter("TEST", 1, 4, "test", ParameterDirection.Output)) command.CommandText = "INSERT INTO Regions(REGION_ID, REGION_NAME) VALUES(:REGION_ID, :REGION_NAME)"; command.ExecuteNonQuery(); command = new OracleCommand(); command.Connection = oraConnection; command.Parameters.Clear(); command.Parameters.Add(new OracleParameter("REGION_ID", regionId)); command.CommandText = "DELETE FROM Regions WHERE REGION_ID = :REGION_ID"; command.ExecuteNonQuery(); command.Parameters.Clear(); command.CommandText = "SELECT COUNT(*) FROM Regions"; object resultName = command.ExecuteScalar(); //Debug.WriteLine(resultName); command = new OracleCommand(); command.Connection = oraConnection; command.CommandText = "select department_name from departments"; command.CommandType = CommandType.Text; OracleDataAdapter oda = new OracleDataAdapter(command); DataSet ds = new DataSet(); oda.Fill(ds); } </pre> <br /> 보시는 바와 같이 OraDirect.NET 사용법은 ODP.NET과 거의 다르지 않습니다.<br /> <br /> 참고로, 검색해 보니 다음의 글도 있군요. ^^<br /> <br /> <pre style='margin: 10px 0px 10px 10px; padding: 10px 0px 10px 10px; background-color: #fbedbb; overflow: auto; font-family: Consolas, Verdana;' > .NET에서 Oracle을 연결하는 Provider 3종류 연결 방법 ; <a target='tab' href='http://kirox.tistory.com/1'>http://kirox.tistory.com/1</a> </pre> <br /> 국내에서도 은근히 사용되는 것 같습니다.<br /> </p><br /> <br /><hr /><span style='color: Maroon'>[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]</span> </div>
첨부파일
스팸 방지용 인증 번호
1993
(왼쪽의 숫자를 입력해야 합니다.)