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 접속을 할수 있게 된다.