Home Full Site
C#에서 Oracle 사용

C#에서 Oracle을 엑세스하기 위해서는 .NET에서 제공하는 .NET Framework Data Provider for Oracle을 사용하거나 오라클에서 제공하는 Oracle Data Provider for .NET (ODP.NET)을 사용할 수 있다. 이 외에 오랜 방식이지만 OLEDB나 ODBC 방식도 사용할 수 있다. .NET Data Provider이나 ODP.NET이나 실제 코딩에서 사용하는 방식은 비슷하다. 여기서는 .NET Framework Data Provider for Oracle의 예제를 살펴 보는데, 이 Oralce 드라이버를 사용하기 위해서는 먼저 아래 그림에서 같이 System.Data.OracleClient.dll을 참조(Reference) 추가해야 한다.


OracleClient 참조 추가


Oracle 데이타베이스 연결

Oracle 데이타베이스를 연결하기 위해서는 OracleConnection 클래스를 사용한다. Connection 클래스를 생성할 때는 Connection String을 넣어 주어야 하는데, 여기에는 Data Source명, 사용자명, 암호등을 지정해 준다. 아래 예는 ABC 서버에 사용자명 hr 과 암호명 123을 사용하여 오라클 데이타베이스에 접속하는 예이다.

string strConn= "Data Source=ABC;User Id=hr;Password=123;Integrated Security=no;";
OracleConnection conn = new OracleConnection(strConn);
...
conn.Close();



Oracle 데이타 INSERT, UPDATE, DELETE

데이타의 삽입, 삭제, 갱신등은 OracleCommand에 해당 SQL문을 지정하여 실행한다. 먼저 OracleConnection을 사용해 Oracle 서버 연결을 한 후, OracleCommand에 INSERT, UPDATE, DELETE 등의 SQL문을 지정하여 실행하면 된다. 아래는 한 ROW를 INSERT하는 예제이다.

예제

// .NET Framework Data Provider for Oracle
// 오라클 연결 문자열        
private string _strConn = "Data Source=YPC;User Id=hr;Password=hr;Integrated Security=no;";

// 데이타 쓰기        
private void btnAdd_Click(object sender, EventArgs e)
{
    // 오라클 연결
    OracleConnection conn = new OracleConnection(_strConn);
    conn.Open();

    // 명령 객체 생성
    OracleCommand cmd = new OracleCommand();
    cmd.Connection = conn;

    // SQL문 지정 및 INSERT 실행
    cmd.CommandText = "INSERT INTO REGIONS VALUES (5, 'Africa')";
    cmd.ExecuteNonQuery();

    conn.Close();
}



Oracle 데이타 읽기

Oracle에서 데이타를 가져오기 위해서는 OracleCommand와 OracleDataReader 혹은 OracleDataAdapter 클래스를 사용한다. OracleDataReader는 연결모드로 데이타를 서버에서 가져오게 되며, 클라이언트에서 루프를 돌며 한 ROW씩 가져오게 된다. OracleDataAdapter는 한꺼번에 클라이언트 메모리로 데이타를 가져온후 연결을 끊게 되는데, DataGridView와 같은 그리드 컨트롤에 바인딩할 때 유용하다.

예제

// .NET Framework Data Provider for Oracle : 오라클 연결 문자열        
private string _strConn = "Data Source=YPC;User Id=hr;Password=hr;Integrated Security=no;";

// 데이타 읽기
private void btnGetData_Click(object sender, EventArgs e)
{
    // 오라클 서버 연결 객체 생성
    using (OracleConnection conn = new OracleConnection(_strConn))
    {
        // 연결
        conn.Open();

        // 명령 객체 생성
        OracleCommand cmd = new OracleCommand();
        cmd.Connection = conn;
        cmd.CommandText = "SELECT * FROM employees";

        // 결과 리더 객체를 리턴
        OracleDataReader rdr = cmd.ExecuteReader();

        // 레코드 계속 가져와서 루핑
        while (rdr.Read())
        {
            // 필드 데이타 읽기
            string s = rdr["FIRST_NAME"] as string;

            // 데이타를 리스트박스에 추가
            listBox1.Items.Add(s);
        }
        // 사용후 닫음
        rdr.Close();                
    }
}



© csharpstudy.com