티스토리 뷰

C# | WPF

[WPF/C#/Oracle DB] 오라클 DB 연결하기

rimo (리모) 2021. 12. 23. 11:26

 

 

비주얼 스튜디오 버전 16.11.7

대상 프레임 워크 .NET Core 3.1

오라클 11g 기준으로 작성된 글 입니다.

 

 


 

 1. Oracle.ManagedDataAccess.Core 설치하기 

 

WPF에서 오라클 DB 데이터를 사용하기 위해서는 패키지 관리자 NuGet을 이용해

Oracle.ManagedDataAccess.Core 를 설치해야합니다.

 

 

 

 

먼저 비주얼 스튜디오를 열고 WPF 애플리케이션을 생성합니다. 

 

 

프로젝트에서 오른쪽 마우스를 클릭하고 메뉴에서 NuGet 패키지 관리를 선택합니다.

 

 

 

 

[찾아보기]로 분류를 변경하고 검색창에 Oracle을 검색합니다.

 

 

 

 

여러개의 오라클 패키지중에서 Oracle.ManagedDataAccess.Core를 설치합니다.

 

 

 

이제 [설치됨]에서 패키지를 확인할 수 있습니다.

 

 

 

 

 


 

2. OracleConnection 

 

 

설치한 패키지를 사용하기 위해 다음과 같이 적습니다.

using Oracle.ManagedDataAccess.Client;

이제부터는 패키지에 정의된 여러 타입들을 사용할 수 있게 됩니다.

 

 

 

 

 

여러 타입중에 연결에 사용되는 것은 OracleConnection 입니다.

데이터베이스의 정보들을 문자열 형태의 인수로 받아 선언됩니다.

OracleConnection conn;

public MainWindow()
{
	InitializeComponent();

	//string constr = '';
	conn = new OracleConnection(constr);
}

 

 

 

 

 

 

 

이 객체를 이용해 데이터베이스에  연결(Open) 하거나 연결을 종료(Close)하는 것이 가능해 집니다.

(사용후에는 반드시 연결을 종료해야 합니다.)

 

using System;
...
using Oracle.ManagedDataAccess.Client;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        OracleConnection conn;

        public MainWindow()
        {
            InitializeComponent();

            //string constr = ''; 
            conn = new OracleConnection(constr);
            conn.Open();
            conn.Close();
        }
    }
}

 

 

 

 

 

 

3. 연결하기

 

문자열 인수의 형태는 다양합니다.

그 중 서버연결정보를 직접 넣는 방법으로 진행해 보겠습니다. 

(별칭만으로 인식이 안되더라구요)

 

 

필요한 정보는 아래 3가지 입니다.

1. Data Source (데이터베이스정보)

2. User Id (오라클 계정 아이디)

3. Password (오라클 계정 비밀번호)

 

제대로 된다면 별도의 추가적인 설정없이 바로 연결이 가능합니다.

...
using Oracle.ManagedDataAccess.Client;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        OracleConnection conn;

        public MainWindow()
        {
            InitializeComponent();

            string constr = "Data Source = 데이터 베이스 정보  ;" +
                "User Id = 오라클 계정 아이디 ;" +
                "Password = 오라클 계정 비밀번호 ;"; 
            conn = new OracleConnection(constr);
            conn.Open();
            conn.Close();
        }
    }
}

 

계정 아이디와 비밀번호는 접속할 계정을 그대로 입력해주면 됩니다.

 

 

 

 

데이터 베이스 정보는 tnsnames.ora 파일에 적혀있습니다.

파일의 위치는 다음과 같습니다.

ORACLE_HOME/NETWORK/ADMIN/tnsnames.ora

 

 

 

 

Q : (이게몬대요..?)

A : 오라클은 TNS(Transparent Network Substrate)라는 것을 사용합니다.

깊게 이해할 필요는 없고  데이터 전송이 가능하도록 도와주는 오라클의 네트워크 기술이라고 보면 됩니다.

 

tnsnames.ora는 TNS 주소설정을 위해 사용되는 파일입니다.

따라서 데이터베이스 접속에 필요한 여러 정보들이 적혀있습니다.

 

 

 

 

대게 이런형태 인데요.

별칭(addressname) = 뒤부터 그대로 복사 붙여넣기하시면 됩니다.

<addressname> =
 (DESCRIPTION =
   (ADDRESS_LIST =
     (ADDRESS = (PROTOCOL = TCP)(Host = <hostname>)(Port = <port>))
   )
 (CONNECT_DATA =
   (SERVICE_NAME = <service_name>)
 )
)

 

 

 

 

 

 

저는 테스트 계정을 만들어서 실행 해보겠습니다.

 

CREATE USER test IDENTIFIED BY test;

GRANT CONNECT,RESOURCE TO test;

COMMIT;

 

...
using Oracle.ManagedDataAccess.Client;

namespace WpfApp1
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : Window
    {

        OracleConnection conn;

        public MainWindow()
        {
            InitializeComponent();

            string constr = "Data Source = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521)) (CONNECT_DATA = (SERVER = DEDICATED) (SERVICE_NAME = orcl)));" +
                "User Id = test;" +
                "Password = test;";

            conn = new OracleConnection(constr);
            conn.Open();
            conn.Close();
        }
    }
}

 

 

 

 

정상적으로 WPF 윈도우가 켜진다면 연결 성공입니다.

 

 

 

 

 

 

 

 

 

[참고자료]

 

 

C# Oracle 사용 - C# 프로그래밍 배우기 (Learn C# Programming)

C#에서 Oracle 사용 C#에서 Oracle을 엑세스하기 위해서는 오라클에서 제공하는 Oracle Data Provider for .NET (ODP.NET)을 사용하거나 오래된 방식이지만 OLEDB나 ODBC 방식 등을 사용할 수 있다. (주: 예전에 마

www.csharpstudy.com

 

 

[Oracle] 오라클 리스너와 TNS란? 설명, 설정, 조회

리스너란? ** 오라클 서버에서 클라이언트의 요청을 듣고, 클라이언트와의 통신 환경을 설정하는 파일 ** ...

blog.naver.com

 

 

.NET Framework: 568. ODP.NET의 완전한 닷넷 버전 Oracle ODP.NET, Managed Driver

.NET Framework: 568. ODP.NET의 완전한 닷넷 버전 Oracle ODP.NET, Managed Driver [링크 복사], [링크+제목 복사] 조회: 22501 글쓴 사람 정성태 (techsharer at outlook.com) 홈페이지 첨부 파일 부모글 보이기/감추기 ODP.NE

www.sysnet.pe.kr

 

 

 

Using ODP.NET Client Provider in a Simple Application

Using ODP.NET Client Provider in a Simple Application The following is a simple C# application that connects to Oracle Database and displays its version number before disconnecting using ODP.NET, Unmanaged Driver: // C# using System; using Oracle.DataAcces

docs.oracle.com

 


 

공부한 내용을 복습/기록하기 위해 작성한 글이므로 내용에 오류가 있을 수 있습니다.

 

 

댓글
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Total
Today
Yesterday