Visual Studio 2015 DB 2018 5 21 ODAC
Visual Studio 2015 을 이용한 오라클 DB 프로그래밍 2018. 5. 21
오라클 ODAC 의 역할 ODAC Oracle DB SQL create insert update delete select Oracle. Connection Oracle. Command Oracle. Data. Reader Oracle. Data. Adapter Data. Set Data. Table Oracle. Parameter C# Program
3. 1 오라클 DB 연결(Data Source 연결) 및 종료 (3/7) ∎ 솔루션탐색기의 참조에 Oracle. Managed. Data. Access 가 포함됬는지 확인한다. ∎ 아래과 같은 두개의 네임스페이스를 삽입한다. using Oracle. Managed. Data. Access. Client; using Oracle. Managed. Data. Access. Types;
3. 1 오라클 DB 연결(Data Source 연결) 및 종료 (4/7) ∎ 솔루션탐색기의 참조에 Oracle. Managed. Data. Access 가 포함됬는지 확인한다. ∎ 아래과 같은 두개의 네임스페이스를 삽입한다. using Oracle. Managed. Data. Access. Client; using Oracle. Managed. Data. Access. Types;
3. 1 오라클 DB 연결(Data Source 연결) 및 종료 (5/7) ∎ ODAC를 사용하기 위한 클래스 변수를 선언한다. public partial class Form 1 : Form { Oracle. Connection conn = null; Oracle. Command cmd = null; Oracle. Data. Adapter adapter = null; Data. Set dataset = null; Data. Table datatable = null; Oracle. Parameter param = null; string conn. Str = ""; } public Form 1() { Initialize. Component(); btn. Close. Enabled = false; grd. Data. View. Data. Source = null; } ………
3. 1 오라클 DB 연결(Data Source 연결) 및 종료(6/7) ∎ 오라클 DB 연결 함수를 작성한다. private void btn. Connect. G 1_Click(object sender, Event. Args e) { if (conn == null) { conn. Str = "DATA SOURCE=localhost: 1521/testdb; USER ID=YDHER; PASSWORD=rhdgkr 423"; } } conn = new Oracle. Connection(conn. Str); conn. Open();
3. 1 오라클 DB 연결(Data Source 연결) 및 종료(7/7) ∎ 오라클 DB 종료 함수를 작성한다. private void btn. Close_Click(object sender, Event. Args e) { if (conn != null) { conn. Close(); conn = null; conn. Str = ""; } }
3. 2 오라클 DB 테이블 생성 및 삭제(1/3) ∎ 오라클 DB 테이블 생성 함수를 작성한다. private void btn. Create. Table_Click(object sender, Event. Args e) { // select count(*) from all_tables where table_name='patient'; cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "select count(*) from all_tables where table_name = " + "'" + "patient" + "'“ ; } result = cmd. Execute. Non. Query(); if (result != 0) { DBCreate(); }
3. 2 오라클 DB 테이블 생성 및 삭제(2/3) ∎ DBCreate() 함수를 작성한다. public void DBCreate() { cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "Create table patient(" + "pat_id int primary key, " + "pat_name varchar 2(6) not null, " + "pat_age int not null, " + "pat_sex varchar(2) not null, " + "pat_jumin varchar 2(14) not null, " + "pat_phone varchar 2(15), " + "pat_addr varchar 2(100) not null)"; } cmd. Execute. Non. Query();
3. 2 오라클 DB 테이블 생성 및 삭제(3/3) ∎ 오라클 DB 테이블 삭제 함수를 작성한다. private void btn. Table. Delete_Click(object sender, Event. Args e) { cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "drop table patient"; cmd. Execute. Non. Query(); } grd. Data. View. Data. Source = null;
3. 3 오라클 DB 테이블 데이터 삽입 및 출력(1/3) ∎ 오라클 DB 테이블 삽입 함수를 작성한다. private void btn. Table. Insert_Click(object sender, Event. Args e) { cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "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 Oracle. Parameter(": pat_id", Oracle. Db. Type. Int 32, sizeof(Int 32), "pat_id"); param. Value = txt. Number. Text; cmd. Parameters. Add(param); param = new Oracle. Parameter(": pat_name", Oracle. Db. Type. Varchar 2, 6, "pat_name"); param. Value = txt. Name. Text; cmd. Parameters. Add(param); param = new Oracle. Parameter(": pat_age", Oracle. Db. Type. Int 32, sizeof(Int 32), "pat_age"); param. Value = txt. Age. Text; cmd. Parameters. Add(param); //같은 방식으로 필요한 파라메타 설정 // …………… } cmd. Execute. Non. Query(); Show. Data. View();
3. 2 오라클 DB 테이블 데이터 삽입 및 출력(2/3) ∎ Show. Data. View() 함수를 작성한다. bool Show. Data. View() { grd. Data. View. Data. Source = null; cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "select * from patient"; adapter = new Oracle. Data. Adapter(); adapter. Select. Command = cmd; dataset = new Data. Set("병원DB"); adapter. Fill(dataset, "patient"); datatable = dataset. Tables["patient"]; grd. Data. View. Data. Source = datatable; } // 출력 결과 반환…………… Oracle. Command Oracle. Adapter Dataset datatable
3. 3 오라클 DB 테이블 데이터 삽입 및 출력(3/3) Test 2 프로그램의 Data. Reader를 이용 하는 방법도 매우중요 private void Display. Customers () … { Oracle. Connection conn = null; Oracle. Command comm = null; // DB 연결 후 Open …. . Oracle. Data. Reader reader = null; // select 명령어 만들고 string conn. Str = null; string sql = "SELECT * FROM Customers"; public Form 1() // 실행 { comm = new Oracle. Command(sql, conn); Initialize. Component(); Display. Customers(); reader = comm. Execute. Reader(); } // 여러개 찾으면 각각에 대해서 루프에서 처리 while(reader. Read()) { string item = ""; item += reader["ID"]. To. String() + "t"; item += reader["SName"]. To. String() + "t"; item += reader["Phone"]. To. String(); } } list. Box 1. Items. Add(item); reader. Close();
3. 4 오라클 DB 테이블 데이터 삭제 (1/1) private void btn. Data. Delete_Click(object sender, Event. Args e) { string id = null; int num=0; Data. Grid. View. Row dataviewrow = grd. Data. View. Current. Row; id = dataviewrow. Cells["pat_id"]. Value. To. String(); num = int. Parse(id); // SQL삭제 명령어 : DELETE patient WHERE pat_id = 3 cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "delete patient where pat_id = : pat_id"; param = new Oracle. Parameter(": pat_id", num); cmd. Parameters. Add(param); cmd. Execute. Non. Query(); } Show. Data. View();
3. 5 오라클 DB 테이블 데이터 변경 (1/1) private void btn. Data. Modify_Click(object sender, Event. Args e) { string id = null; int num=0; Data. Grid. View. Row dataviewrow = grd. Data. View. Current. Row; id = dataviewrow. Cells["pat_id"]. Value. To. String(); num = int. Parse(id); cmd = new Oracle. Command(); cmd. Connection = conn; cmd. Command. Text = "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 Oracle. Parameter(": pat_id", num); cmd. Parameters. Add(param); param = new Oracle. Parameter(": pat_name", txt. Name. Text); cmd. Parameters. Add(param); param = new Oracle. Parameter(": pat_age", int. Parse(txt. Age. Text)); cmd. Parameters. Add(param); //같은 방식으로 필요한 파라메타 설정 // …………… } cmd. Execute. Non. Query(); Show. Data. View();
3. 6 그리드뷰의 내용을 선택시 해당 텍스트상자에 데이터 출력하기(1/1) private void grd. Data. View_Cell. Content. Click(object sender, Data. Grid. View. Cell. Event. Args e) { txt. Number. Text = grd. Data. View. Rows[e. Row. Index]. Cells[0]. Value. To. String(); txt. Name. Text = grd. Data. View. Rows[e. Row. Index]. Cells[1]. Value. To. String(); txt. Age. Text = grd. Data. View. Rows[e. Row. Index]. Cells[2]. Value. To. String(); txt. Sex. Text = grd. Data. View. Rows[e. Row. Index]. Cells[3]. Value. To. String(); txt. Jumin. Text = grd. Data. View. Rows[e. Row. Index]. Cells[4]. Value. To. String(); txt. Address. Text = grd. Data. View. Rows[e. Row. Index]. Cells[5]. Value. To. String(); txt. Phone. Text = grd. Data. View. Rows[e. Row. Index]. Cells[6]. Value. To. String(); }
- Slides: 26