Download presentation
Presentation is loading. Please wait.
1
Visual Studio 2015 을 이용한 오라클 DB 프로그래밍
2
오라클 ODAC 의 역할 ODAC OracleConnection OracleCommand OracleDataReader
OracleDataAdapter DataSet DataTable OracleParameter Oracle DB C# Program SQL create insert update delete select
3
1. 오라클 DB 연동을 위한 ODAC설치(1/4) ∎ 제어판을 이용하여 컴퓨터 이름에 특수문자가 들어가 있지 않게 미리 변경한다. ∎ 의 Developer Tools for Visual Studio 에서 ODAC(Oracle Universal Installer) 다운로드 및 압축 풀기 ∎ 압축을 해제 한 폴더에서 setup 프로그램 실행 단계 0 단계 1 단계 2
4
1. 오라클 DB 연동을 위한 ODAC설치(2/4) 단계 3 단계 4 단계 5 첫번째와 세번째는 반드시 포함
원하는 폴더로 변경해도 무방 체크 해제할것
5
1. 오라클 DB 연동을 위한 ODAC설치(3/4) 단계 6 단계 7 단계 8 포트번호는 그대로 사용
호스트이름은 자기 컴퓨터 이름으로 변경 데이타베이스 이름은 오라클 설치시 지정했던 이름으로(우리는 testdb로 했음) 위의 내용에 문제가 없으면 설치
6
1. 오라클 DB 연동을 위한 ODAC설치(4/4) 단계 9 단계 10
7
2. ODAC 를 이용한 오라클 DB 연결 테스트(1/3)
∎ 설치가 끝나면 비주얼 스튜디오 2015를 실행시킨다. ∎ 도구 메뉴의 데이타베이스에 연결 부메뉴를 실행한다. - 서버탐색기의 데이터연결에서 마우스 오른쪽 버튼을 누른 후 연결추가를 선택한다. < 무시하고 확인버튼을 누른다 > < 서버 탐색기 화면 >
8
2. ODAC 를 이용한 오라클 DB 연결 테스트(2/3)
① ② 데이타소스는 Oracle 데이타베이스 ③ id/pw는 Oracle 계정 접속유형 : Ez connect 호스트 : localhost 포트 : 1521 DB : testdb ④ ⑤ ` 마지막으로 누른다
9
2. ODAC 를 이용한 오라클 DB 연결 테스트(3/3)
① YDHER.testdb 의 ▶ 를 눌러서 확장 ② 오라클서버와 연결이 성공하면, - 자신의 계정에 있는 모든 테이블 의 내용이 보인다. 오라클 서버가 정상적으로 연결된 화면(ODAC 설치 완료됨)
10
3. C# 윈도우 폼을 이용한 오라클 DB 프로그래밍
∎ 윈도우폼 프로젝트를 만들고 화면 디자인을 아래와 같이 설계 한다 DataGridView TextBox < 생성, 삽입, 검색, 수정, 삭제가 가능한 메인 화면 >
11
3.1 오라클 DB 연결(Data Source 연결) 및 종료 (1/7)
∎ 도구 메뉴의 데이타베이스에 연결 부메뉴를 실행한다. - 서버탐색기의 데이터연결 아래의 YDHER.testdb 에서 마우스 오른쪽 버튼을 누른 후 속성을 선택한다. 꼭 적어 놓을 것 !!!
12
3.1 오라클 DB 연결(Data Source 연결) 및 종료 (2/7)
∎ 솔루션탐색기의 참조에서 마우스 오른쪽 버튼을 누른 후 참조추가를 선택한다. ∎ 참조관리자 왼쪽 메뉴의 확장을 선택한 후 Oracle.ManagedDataAccess 체크 버튼을 선택한 후 확인버튼을 누른다.
13
3.1 오라클 DB 연결(Data Source 연결) 및 종료 (3/7)
∎ 솔루션탐색기의 참조에 Oracle.ManagedDataAccess 가 포함됬는지 확인한다. ∎ 아래과 같은 두개의 네임스페이스를 삽입한다. using Oracle.ManagedDataAccess.Client; using Oracle.ManagedDataAccess.Types;
14
3.1 오라클 DB 연결(Data Source 연결) 및 종료 (4/7)
∎ 솔루션탐색기의 참조에 Oracle.ManagedDataAccess 가 포함됬는지 확인한다. ∎ 아래과 같은 두개의 네임스페이스를 삽입한다. using Oracle.ManagedDataAccess.Client; using Oracle.ManagedDataAccess.Types;
15
3.1 오라클 DB 연결(Data Source 연결) 및 종료 (5/7)
∎ ODAC를 사용하기 위한 클래스 변수를 선언한다. public partial class Form1 : Form { OracleConnection conn = null; OracleCommand cmd = null; OracleDataAdapter adapter = null; DataSet dataset = null; DataTable datatable = null; OracleParameter param = null; string connStr = ""; public Form1() InitializeComponent(); btnClose.Enabled = false; grdDataView.DataSource = null; } ………
16
3.1 오라클 DB 연결(Data Source 연결) 및 종료(6/7)
private void btnConnectG1_Click(object sender, EventArgs e) { if (conn == null) connStr = "DATA SOURCE=localhost:1521/testdb;USER ID=YDHER; PASSWORD=rhdgkr423"; conn = new OracleConnection(connStr); conn.Open(); }
17
3.1 오라클 DB 연결(Data Source 연결) 및 종료(7/7)
private void btnClose_Click(object sender, EventArgs e) { if (conn != null) conn.Close(); conn = null; connStr = ""; }
18
3.2 오라클 DB 테이블 생성 및 삭제(1/3) ∎ 오라클 DB 테이블 생성 함수를 작성한다. private void btnCreateTable_Click(object sender, EventArgs e) { // select count(*) from all_tables where table_name='patient'; cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select count(*) from all_tables where table_name = " + "'" + "patient" + "'“ ; result = cmd.ExecuteNonQuery(); if (result != 0) DBCreate(); }
19
3.2 오라클 DB 테이블 생성 및 삭제(2/3) public void DBCreate() {
cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "Create table patient(" + "pat_id int primary key," + "pat_name varchar2(6) not null," + "pat_age int not null," + "pat_sex varchar(2) not null," + "pat_jumin varchar2(14) not null," + "pat_phone varchar2(15)," + "pat_addr varchar2(100) not null)"; cmd.ExecuteNonQuery(); }
20
3.2 오라클 DB 테이블 생성 및 삭제(3/3) ∎ 오라클 DB 테이블 삭제 함수를 작성한다. private void btnTableDelete_Click(object sender, EventArgs e) { cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "drop table patient"; cmd.ExecuteNonQuery(); grdDataView.DataSource = null; }
21
3.3 오라클 DB 테이블 데이터 삽입 및 출력(1/3) ∎ 오라클 DB 테이블 삽입 함수를 작성한다.
private void btnTableInsert_Click(object sender, EventArgs e) { cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "INSERT INTO patient(pat_id, pat_name, pat_age, pat_sex, pat_jumin, pat_phone, pat_addr) " + "VALUES(:pat_id, :pat_name, :pat_age, :pat_sex, :pat_jumin, :pat_phone, :pat_addr)"; param = new OracleParameter(":pat_id", OracleDbType.Int32, sizeof(Int32), "pat_id"); param.Value = txtNumber.Text; cmd.Parameters.Add(param); param = new OracleParameter(":pat_name", OracleDbType.Varchar2, 6, "pat_name"); param.Value = txtName.Text; param = new OracleParameter(":pat_age", OracleDbType.Int32, sizeof(Int32), "pat_age"); param.Value = txtAge.Text; //같은 방식으로 필요한 파라메타 설정 // ……………………… cmd.ExecuteNonQuery(); ShowDataView(); }
22
3.2 오라클 DB 테이블 데이터 삽입 및 출력(2/3) bool ShowDataView() {
grdDataView.DataSource = null; cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "select * from patient"; adapter = new OracleDataAdapter(); adapter.SelectCommand = cmd; dataset = new DataSet("병원DB"); adapter.Fill(dataset, "patient"); datatable = dataset.Tables["patient"]; grdDataView.DataSource = datatable; // 출력 결과 반환…………… } OracleCommand OracleAdapter Dataset datatable datatable
23
3.3 오라클 DB 테이블 데이터 삽입 및 출력(3/3) Test2 프로그램의 DataReader를 이용 하는 방법도 매우중요
… OracleConnection conn = null; OracleCommand comm = null; OracleDataReader reader = null; string connStr = null; public Form1() { InitializeComponent(); DisplayCustomers(); } private void DisplayCustomers () { // DB 연결 후 Open ….. // select 명령어 만들고 string sql = "SELECT * FROM Customers"; // 실행 comm = new OracleCommand(sql, conn); reader = comm.ExecuteReader(); // 여러개 찾으면 각각에 대해서 루프에서 처리 while(reader.Read()) string item = ""; item += reader["ID"].ToString() + "\t"; item += reader["SID"].ToString() + "\t"; item += reader["SName"].ToString() + "\t"; item += reader["Phone"].ToString(); listBox1.Items.Add(item); } reader.Close();
24
3.4 오라클 DB 테이블 데이터 삭제 (1/1) private void btnDataDelete_Click(object sender, EventArgs e) { string id = null; int num=0; DataGridViewRow dataviewrow = grdDataView.CurrentRow; id = dataviewrow.Cells["pat_id"].Value.ToString(); num = int.Parse(id); // SQL삭제 명령어 : DELETE patient WHERE pat_id = 3 cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "delete patient where pat_id = :pat_id"; param = new OracleParameter(":pat_id", num); cmd.Parameters.Add(param); cmd.ExecuteNonQuery(); ShowDataView(); }
25
3.5 오라클 DB 테이블 데이터 변경 (1/1) private void btnDataModify_Click(object sender, EventArgs e) { string id = null; int num=0; DataGridViewRow dataviewrow = grdDataView.CurrentRow; id = dataviewrow.Cells["pat_id"].Value.ToString(); num = int.Parse(id); cmd = new OracleCommand(); cmd.Connection = conn; cmd.CommandText = "UPDATE patient " + "SET pat_id = :pat_id, pat_name = :pat_name, pat_age = :pat_age," + "pat_sex = :pat_sex, pat_jumin = :pat_jumin, pat_phone = :pat_phone," + "pat_addr = :pat_addr " + "WHERE pat_id = :pat_id"; param = new OracleParameter(":pat_id", num); cmd.Parameters.Add(param); param = new OracleParameter(":pat_name", txtName.Text); param = new OracleParameter(":pat_age", int.Parse(txtAge.Text)); //같은 방식으로 필요한 파라메타 설정 // ……………………… cmd.ExecuteNonQuery(); ShowDataView(); }
26
3.6 그리드뷰의 내용을 선택시 해당 텍스트상자에 데이터 출력하기(1/1)
private void grdDataView_CellContentClick(object sender, DataGridViewCellEventArgs e) { txtNumber.Text = grdDataView.Rows[e.RowIndex].Cells[0].Value.ToString(); txtName.Text = grdDataView.Rows[e.RowIndex].Cells[1].Value.ToString(); txtAge.Text = grdDataView.Rows[e.RowIndex].Cells[2].Value.ToString(); txtSex.Text = grdDataView.Rows[e.RowIndex].Cells[3].Value.ToString(); txtJumin.Text = grdDataView.Rows[e.RowIndex].Cells[4].Value.ToString(); txtAddress.Text = grdDataView.Rows[e.RowIndex].Cells[5].Value.ToString(); txtPhone.Text = grdDataView.Rows[e.RowIndex].Cells[6].Value.ToString(); }
Similar presentations