Oracle DB 접속 – C# 에서 Oracle Client 설치 없이 접속

Oracle DB 접속 하기 위해서는 우선 Oracle Client 를 설치 해야하는 번거로움이 있다. C# 에서  Oracle Client 설치 없이 DLL 참조 추가 형태로 Oracle 접속하는 방법을 알려 드리고자 한다.

Oracle 은 별도로 설치 되어 있는것을 가정하고 개발 툴은 Visual Studio 2019 사용하였다.

 

1. ODAC 다운로드 및 참조 추가.

우선 아래 링크를 따라 가서 ODAC Xcopy Packages 를 다운을 받는다.

https://www.oracle.com/database/technologies/net-downloads.html

자신에게 알맞은 패키지를 다운 받는다.

압축을 해제 하고 나면 아래의 경로에 Oracle.ManagedDataAccess.dll 파일이 있다.

Oracle.ManagedDataAccess.dll 이 파일을 솔루션의 참조에 추가한다.  프로젝트 파일에 별도의 폴더에 DLL 을 복사하여 참조 하는 것을 추천한다.

 




 

2. Oracle DB 접속 코드 생성.

아래는 별도의 DB 접속하는 클래스를 생성하였다.  명칭은 DBManager 로 하였다.

class DBManager
{       
    private object SyncObject = new object();

    string ConnectionString;
    String OraHost = "127.0.0.1";
    String OraPort = "1521";
    String OraSID = "ORCL";
    String OraUserID = "UserID";
    String OraUserPW = "Password";

    public void Initialize()
    {
        ConnectionString = String.Format("Data Source = (DESCRIPTION="
                                               + "(ADDRESS=(PROTOCOL=TCP)(HOST={0})(PORT={1}))"
                                               + "(CONNECT_DATA=(SERVER=DEDICATED)(SID={2})));"
                                               + "User Id={3};Password={4};Connection Timeout =5;",
                                               OraHost,
                                               OraPort,
                                               OraSID,
                                               OraUserID,
                                               OraUserPW);           
        

    }

    public DataTable GetDataTable(string sql)
    {
        lock (SyncObject)
        {
            DataTable dt = null;
            OracleConnection oracon = null;
            try
            {
                dt = new DataTable();
                oracon = new OracleConnection(ConnectionString);
                oracon.Open();
                OracleCommand cmd = new OracleCommand(sql, oracon);
                using (OracleDataAdapter da = new OracleDataAdapter(cmd))
                {
                    da.Fill(dt);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("DBManager GetDataTable Error: " + ex.Message);
                oracon.Close();
            }
            finally
            {
                oracon.Close();
            }
            return dt;
        }
    }

}

Oracle 접속 정보의 경우는 위 처럼 Source 에 하드 코딩 하여도 가능하지만 Data Base 가 변경 될 수 있다면 app.Config 에 기록하거나 별도의 Config 파일을 이용하여 프로그램 외부에서 접속 정보를 변경할 수 있게 하는것이 좋다.

위 클래스의 GetDataTable 함수를 호출하여 DataTable 형태로 Oracle Database 값을 읽을 수 있다.

 




 

3. Oracle 접속 후 Select 진행.

아래의 샘플 코드는 Windows Form 기반으로 작성되었으며 해당 Source 는 Form1.cs 파일의 내용이다.  기본 생성된 코드에  위에서 작성한 DBManager 을 호출해주는 부분만 추가 되었다.

public partial class Form1 : Form
{
    DBManager m_DBManager = null;       

    public Form1()
    {
        InitializeComponent();
        m_DBManager = new DBManager();
        m_DBManager.Initialize();
    }

    private void btnRuleSerch_Click(object sender, EventArgs e)
    {
        String sql = String.Format(@"SELECT * From USER_INFO");
        DataTable dt = m_DBManager.GetDataTable(sql);
        dataGridView1.DataSource = dt;
    }


}

Form1의 생성자 부분에서 DBManager 를 생성하고 Initialize() 함수를 호출하여 초기화 하였다.  그리고 버튼을 추가하여 USER_INFO 의 정보를 조회하는 매우 간단한 코드이다.

이후 시각적으로 보기 좋게 하기 위해서 dataGridView 의 DataSouce 에 DataTable 값을  입력하여 쉽게 알아 볼수 있도록 하였다.

4. 정리하며

Oracle 에 접속 하기 위해서 불필요한 Install 과정을 거치지 않고 DLL 참조 하는 방법으로 DB 접속 방법으로 PC 가 변경 되더라도 별도의 세팅없이 즉각적인 DB 접속을 할수 있게 된다.

 

Related Posts

C# CPU 사용률 가져오기 – PerformanceCounter 사용법 (성능모니터)

C# CPU 사용률을 확인 하기 위해서는 PerformanceCounter 를 이용하여 확인이 가능하다. PerformanceCounter 는 윈도우의 성능 모니터 를 실행하여 상세한 사용법을 알수 있다.   1. C# CPU 사용률…

Oracle_numFUN

Oracle 숫자 함수 – ABS, FLOOR, ROUND, TRUNC, MOD

Oracle 숫자 함수 입니다.  다음 숫자 관련된 함수에 대해서 설명합니다.  ABS – 절대값 함수,  FLOOR  – 소수점 아래 버림 함수,  ROUND – 특정 자리수 반올림 함수,  TRUNC…

TableList

Table 목록 조회 – Oracle, SQL Server, SQLite, MySQL Table 리스트 조회

Table 목록 조회 하는 방법을 설명한다. Oracle Table 목록 조회, SQL Server Table 목록조회, SQLite Table 목록 조회, MySQL Table 목록 조회 방법에 대해서 설명한다.   1….

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다