2017년 1월 3일 화요일

[닷넷교육,C#교육,실무교육학원추천_탑크리에듀][윈도우7/64비트]ODP.NET,ODAC설치,C#,Oracle11g,Windows7,64bit

[윈도우7/64비트]C#,Oracle11g,ODP.NET,ODAC설, Windows7,64bit
 
0. 먼저 Oracle Client 64 비트를 설치하자.
 
 
1. ODP.NET을 위한 ODAC*.zip 파일 다운로드( http://www.oracle.com/technetwork/database/windows/downloads/index-090165.html 에서 Oracle 버전을 확인하고 zip 파일을 다운받아 압축을 풀자.)

2. 오라클 클라이언트 또는 서버가 설치되어 있다면 해당폴더를 사용하면 된다.
저는 오라클 클라이언트가 설치되어 있어 그 폴더를 사용했습니다. 
c:\app\ooo\product\11.2.0\client_1)

압축을 풀고 install.bat 파일이 있는 곳에서(관리자 권한으로 명령프롬프트 실행)

-- ODAC 전체 설치 
c:\install.bat있는경로> install.bat all C:\app\ooo\product\11.2.0\client_1 odac

-- ODP.NET DLL을 전역어셈블리 캐시에 등록
c:\install.bat있는경로\odp.net4\odp.net\bin\4> OraProvCfg.exe /action:gac /providerpath:C:\app\ooo\product\11.2.0\client_1\odp.net\bin\4\Oracle.DataAccess.dll

-- ASP.NET용 ODP.NET을 전역어셈블리 캐시에 등록
c:\install.bat있는경로\asp.net4\asp.net\bin\4> OraProvCfg.exe /action:gac /providerpath:C:\app\ooo\product\11.2.0\client_1\asp.net\bin\4\Oracle.Web.dll
 
3. 환경변수 PATH에 다음을 추가
 
c:\app\ooo\product\11.2.0\client_1;c:\app\ooo\product\11.2.0\client_1\bin

4. 간단하게 ODP.NET 예제를 작성하자.
 
* 프로젝트 속성에서 build -> platform target을 "X86"에서 "ANY CPU" 반드시 변경할 것
변경하지 않으면 아래 오류발생!!
 
Unhandled Exception: System.BadImageFormatException: Could not load file or assembly 
'Oracle.DataAccess, Version=4.112.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342' or one of its dependencies
. 프로그램을 잘못된 형식으로 로드하려고 했습니다.
   at ConsoleApplication7.Program.Main(String[] args)

1. C:\app\ooo\product\11.2.0\client_1\odp.net\bin에서 Oracle.DataAccess.dll을 프로젝트 bin 아래로 복사하거나 참조추가하세요.
 
2. 접속하고자 하는 DB를 기술한 C:\app\ooo\product\11.2.0\client_1\NETWORK\ADMIN\tnsnames.ora 파일을 작성
 
ONJ = 
 (DESCRIPTION =
  (ADDRESS_LIST =
   (ADDRESS=(PROTOCOL=TCP)(HOST = 192.168.0.27)(PORT=1521))
 )
 (CONNECT_DATA =
  (SERVICE_NAME = onj)
 )
)
 
 [예제]
using System;
using System.Data;
using Oracle.DataAccess.Client;

namespace ConsoleApplication7
{
    class Program
    {
        static void Main(string[] args)
        { 
            //아래에서 data source의 onj는 tnsnames.ora 파일의 DB접속이름이다.            
            string str = "data source=onj;user id=scott; password=tiger";
            OracleConnection Conn = new OracleConnection(str);
            OracleCommand Comm;
            Comm = new OracleCommand(); 
            Comm.Connection = Conn;
            try
            {
                Conn.Open();
                Comm.CommandText = "SELECT ENAME FROM EMP";
                OracleDataReader reader = Comm.ExecuteReader();
                while (reader.Read())
                {
                    Console.WriteLine(reader.GetString(reader.GetOrdinal("ENAME")));
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            finally
            {
                Conn.Close();
            }
        }
    }
}
[결과]
SMITH
ALLEN
WARD
JONES
MARTIN
BLAKE
CLARK
SCOTT
KING
TURNER
ADAMS
JAMES
FORD
MILLER

댓글 없음:

댓글 쓰기