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