2017년 1월 3일 화요일

[닷넷교육,C#교육,실무교육학원추천_탑크리에듀][닷넷ADO.NET]ODP.NET, ODAC설치 및 간단 DB접속예제

[닷넷ADO.NET]ODP.NET, ODAC설치 및 간단 DB접속예제
 
1. ODAC는 아래 URL에서 다운 받자.
 
http://www.oracle.com/technetwork/topics/dotnet/downloads/index.html 에서 다운로드 후 압축풀고 설치
 
주의 : 자신의 오라클 버전에 맞는것을 다운로드 해야 한다.
 
설치시 ORACLE_BASE(오라클 소프트웨어의 베이스폴더, 사용자 계정이 a이면 c:\app\a) 및 ORACLE_HOME(저의경우, c:\app\A\product\11.2.0\dbhome_1) 디렉토리를 지정해야 하니 알고 있자.

2. 간단한 C# 콘솔 응용 프로그램 작성
 
먼저 Visual studio 우측 reference에서 Oracle.DataAccess를 참조 추가하자.
 
그리고 오라클에서 원격의 DB를 접속하려면 오라클 클라이언트홈 아래\network\admin(c:\app\A\product\11.2.0\client_1\NETWORK\ADMIN)의 tnsnames.ora 파일에 접속하고자 하는 DB명칭(tns이름)이 있어야 한다. 그 이름을 접속문자열의 data source 에 넣어주면 된다.
 
--------- tnsnames.ora
 
ONJ =
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.0.7)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = onj)
    )
  )
 
---------------------------
 
 
using System; 
using System.Data; 
using Oracle.DataAccess; 
using Oracle.DataAccess.Client; 
using Oracle.DataAccess.Types;

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

댓글 없음:

댓글 쓰기