Microsoft PowerPoint - 07-C#-13-ADO.ppt [호환 모드]

Similar documents
Microsoft PowerPoint Python-DB

쉽게 풀어쓴 C 프로그래밊

한국 컴퓨터그래픽스(디지털컨텐츠)의 현황과 미래 위기인가? 기회인가?

윈도우시스템프로그래밍

윈도우시스템프로그래밍

VS_chapter10

DBMS & SQL Server Installation Database Laboratory

Microsoft PowerPoint - 10Àå.ppt

Microsoft PowerPoint - CSharp-12-데이터베이스

PowerPoint 프레젠테이션

MySQL-.. 1

8 장데이터베이스 8.1 기본개념 - 데이터베이스 : 데이터를조직적으로구조화한집합 (cf. 엑셀파일 ) - 테이블 : 데이터의기록형식 (cf. 엑셀시트의첫줄 ) - 필드 : 같은종류의데이터 (cf. 엑셀시트의각칸 ) - 레코드 : 데이터내용 (cf. 엑셀시트의한줄 )

Spring Boot/JDBC JdbcTemplate/CRUD 예제

ALTIBASE 사용자가이드 Templete

Microsoft PowerPoint - CSharp-10-예외처리

FileMaker 15 ODBC 및 JDBC 설명서

학습목표 텍스트파일을다룰수있다. 스트림읽기, 쓰기를안다. 2

@OneToOne(cascade = = "addr_id") private Addr addr; public Emp(String ename, Addr addr) { this.ename = ename; this.a

구축환경 OS : Windows 7 그외 OS 의경우교재 p26-40 참조 Windows 의다른버전은조금다르게나타날수있음 Browser : Google Chrome 다른브라우저를사용해도별차이없으나추후수업의모든과정은크롬사용 한

슬라이드 1

10.ppt

03. ADO 닷넷 ADO 닷넷이란? ADO(ActiveX Data Objects) 의닷넷버전 비연결방식 (Discected Mdel) 제공 데이터베이스와연결후필요한데이터를가져온후에, 접속을바로끊고나서도데이터를계속해서처리할수있는방법이필요 자원을계속많이확보가능 자료의처리

PowerPoint Template

금오공대 컴퓨터공학전공 강의자료

Microsoft PowerPoint MySQL 연동.ppt

Visual Basic 반복문

5장 SQL 언어 Part II

어댑터뷰

FileMaker ODBC 및 JDBC 가이드

빅데이터분산컴퓨팅-5-수정

Discrete Mathematics

(Microsoft PowerPoint - ADONET [\310\243\310\257 \270\360\265\345])

학습목표 배열에대해서안다. 언어통합질의 (LINQ) 에대해서안다. 2

Lec. 2: MySQL and RMySQL

- JPA를사용하는경우의스프링설정파일에다음을기술한다. <bean id="entitymanagerfactory" class="org.springframework.orm.jpa.localentitymanagerfactorybean" p:persistenceunitname=

JVM 메모리구조

문서 템플릿

슬라이드 제목 없음

<성진수의 C# 활용 2>

강의 개요

Microsoft PowerPoint - 3장-MS SQL Server.ppt [호환 모드]

PowerPoint 프레젠테이션

PowerPoint Presentation

Relational Model

NoSQL

(Humphery Kim) RAD Studio : h=p://tech.devgear.co.kr/ : h=p://blog.hjf.pe.kr/ Facebook : h=p://d.com/hjfactory :

API - Notification 메크로를통하여어느특정상황이되었을때 SolidWorks 및보낸경로를통하여알림메시지를보낼수있습니다. 이번기술자료에서는메크로에서이벤트처리기를통하여진행할예정이며, 메크로에서작업을수행하는데유용할것입니다. 알림이벤트핸들러는응용프로그램구현하는데있어

q 이장에서다룰내용 1 객체지향프로그래밍의이해 2 객체지향언어 : 자바 2

웹연동 } 웹 (Web) 환경에서데이터베이스시스템을연동하는방법은다음과같다 } Server Client 구조의통신 (2-Tier) } Server Middleware Client 구조의통신 (3-Tier) 2

SQL

Microsoft PowerPoint Python-WebDB

학습목표 함수프로시저, 서브프로시저의의미를안다. 매개변수전달방식을학습한다. 함수를이용한프로그래밍한다. 2

초보자를 위한 ADO 21일 완성

강의 개요

RDB개요.ppt

목차 BUG DEQUEUE 의 WAIT TIME 이 1 초미만인경우, 설정한시간만큼대기하지않는문제가있습니다... 3 BUG [qp-select-pvo] group by 표현식에있는컬럼을참조하는집합연산이존재하지않으면결괏값오류가발생할수있습니다... 4

Microsoft PowerPoint - 사본 - OAS09-사무자동화 기술(DB).ppt

<4D F736F F F696E74202D20B5A5C0CCC5CDBAA3C0CCBDBA5F3130C1D6C2F75F32C2F7BDC32E >

슬라이드 1

(Microsoft PowerPoint - java1-lecture11.ppt [\310\243\310\257 \270\360\265\345])

개발문서 Oracle - Clob

Microsoft PowerPoint - GUI _DB연동.ppt [호환 모드]

슬라이드 1

FileMaker ODBC and JDBC Guide

JAVA 프로그래밍실습 실습 1) 실습목표 - 메소드개념이해하기 - 매개변수이해하기 - 새메소드만들기 - Math 클래스의기존메소드이용하기 ( ) 문제 - 직사각형모양의땅이있다. 이땅의둘레, 면적과대각


InsertColumnNonNullableError(#colName) 에해당하는메시지출력 존재하지않는컬럼에값을삽입하려고할경우, InsertColumnExistenceError(#colName) 에해당하는메시지출력 실행결과가 primary key 제약에위배된다면, Ins

13주-14주proc.PDF

목차 BUG offline replicator 에서유효하지않은로그를읽을경우비정상종료할수있다... 3 BUG 각 partition 이서로다른 tablespace 를가지고, column type 이 CLOB 이며, 해당 table 을 truncate

다른 JSP 페이지호출 forward() 메서드 - 하나의 JSP 페이지실행이끝나고다른 JSP 페이지를호출할때사용한다. 예 ) <% RequestDispatcher dispatcher = request.getrequestdispatcher(" 실행할페이지.jsp");

Visual Basic 기본컨트롤

제목 레이아웃

Microsoft PowerPoint - ch09 - 연결형리스트, Stack, Queue와 응용 pm0100

PowerPoint Presentation

Chapter 1

PowerPoint 프레젠테이션

제이쿼리 (JQuery) 정의 자바스크립트함수를쉽게사용하기위해만든자바스크립트라이브러리. 웹페이지를즉석에서변경하는기능에특화된자바스크립트라이브러리. 사용법 $( 제이쿼리객체 ) 혹은 $( 엘리먼트 ) 참고 ) $() 이기호를제이쿼리래퍼라고한다. 즉, 제이쿼리를호출하는기호

PowerPoint Presentation

Spring Data JPA Many To Many 양방향 관계 예제

Eclipse 와 Firefox 를이용한 Javascript 개발 발표자 : 문경대 11 년 10 월 26 일수요일

Microsoft PowerPoint - 09-CE-5-윈도우 핸들

슬라이드 1

Microsoft PowerPoint - 04-UDP Programming.ppt

제목을 입력하세요.

untitled

Microsoft PowerPoint - 09-EDU-15-채팅 프로그래밍

DocsPin_Korean.pages

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

untitled

untitled

Data Sync Manager(DSM) Example Guide Data Sync Manager (DSM) Example Guide DSM Copyright 2003 Ari System, Inc. All Rights reserved. Data Sync Manager

C++ Programming

3ÆÄÆ®-11

var answer = confirm(" 확인이나취소를누르세요."); // 확인창은사용자의의사를묻는데사용합니다. if(answer == true){ document.write(" 확인을눌렀습니다."); else { document.write(" 취소를눌렀습니다.");

Tablespace On-Offline 테이블스페이스 온라인/오프라인

untitled

Microsoft Word - PLSQL.doc

Microsoft PowerPoint - Java7.pptx

MySQL-Ch10

PowerPoint Presentation

Transcription:

데이터베이스기초 ADO.NET MS Access 데이터베이스만들기 DataAdapter 클래스예 Connection, Command 클래스예 DataReader 클래스예레코드추가예레코드수정예레코드삭제예 순천향대학교컴퓨터학부이상정 1 데이터베이스기초 순천향대학교컴퓨터학부이상정 2

데이터베이스용어 필드 (field) 가장작은단위의의미있는데이터표현 교수이름, 학번등 레코드 (record) 서로관련있는필드들의집합 학번, 이름등으로구성되는학생레코드 테이블 (table) 레코드들의집합으로개체와관계가모두테이블로표현 여러학생들의레코드가모여서학생테이블구성 데이터베이스 (database) 서로유기적인관계가있는테이블의집합체 학생, 교수, 개설과목, 수강, 지도, 강의테이블들이데이터베이스 순천향대학교컴퓨터학부이상정 3 데이터베이스구성 데이터베이스의계층 데이터베이스 < 테이블 < 레코드 < 데이터 테이블 컬럼 (column, 열 ) 와레코드 (record, 행 ) 로구성 주키 (primary key): 각레코드를구분하는필드 예 Name No KOR ENG MAT --------------------------- Lee 200 95 90 95 홍길동 201 85 90 70 안성기 205 70 85 75 순천향대학교컴퓨터학부이상정 4

SQL SQL Structured Query Language 데이터베이스표준질의어 ANSI 와 ISO 표준 SQL 기본명령 테이블생성, create 데이터입력, insert 데이터검색, select 데이터삭제, delete 데이터수정, update 순천향대학교컴퓨터학부이상정 5 수강신청예 교수 1 1 지도 강의 N N 학생 N 수강 N 개설과목 순천향대학교컴퓨터학부이상정 6

개체, 관계 개체 (entity) 교수 (prof), 학생 (student), 개설과목 (course) 관계 (relation) 강의 (lecture), 지도 (advice), 수강 (register) MySQL 과같은관계형데이터베이스시스템 (Relational DBMS) 에서는개체와관계를테이블로표시 개체는필드로구성되고관계는필드로구분 순천향대학교컴퓨터학부이상정 7 수강신청구성필드 개체이름 구성필드 교수 학생 개설과목 교수코드, 이름, 학과, 전화 학번, 이름, 학과, 전화 과목코드, 과목명, 강의시수, 강의실 관계강의수강지도 구성필드교수코드, 과목코드학번, 과목코드교수코드, 학번 순천향대학교컴퓨터학부이상정 8

교수, 학생테이블 교수코드이름학과전화 P001 김구컴퓨터공학과 0001 P002 안창호 컴퓨터공학과 0002 P003 이육사 국문학과 0003 P004 박종화 국문학과 0004 P005 심 훈 사학과 0005 P006 한용운 사학과 0006 학번 이름 학과 전화 S001 박소명 컴퓨터공학과 123-4567 S002 최민국 컴퓨터공학과 234-5678 S003 이승호 국문학과 345-6789 S004 정수봉 국문학과 456-7890 S005 김상진 사학과 567-8901 S006 황정숙 사학과 678-9012 순천향대학교컴퓨터학부이상정 9 개설과목, 강의테이블 과목코드 과목명 강의시수 강의실 C001 TCP/IP 3 R001 C002 HTML 3 R002 C003 PHP 3 R003 C004 LINUX 2 R004 C005 MySQL 2 R005 C006 Java 2 R006 교수코드 P001 P001 P001 P002 P002 P002 과목코드 C001 C002 C003 C004 C005 C006 순천향대학교컴퓨터학부이상정 10

지도, 수강테이블 교수코드 P001 P001 P003 P003 P007 P007 학번 S001 S001 S001 S002 S002 S002 학번 S001 S002 S003 S004 S005 S006 과목코드 C001 C002 C003 C001 C002 C003 순천향대학교컴퓨터학부이상정 11 SELECT 문 (1) 테이블을주어진검색조건으로검색하여출력 SELECT select_expression FROM table_list WHERE where_definition mysql> select * from prof; +-------+--------+--------------+--------+ pcode pname pdept pphone +-------+--------+--------------+--------+ P001 김구 컴퓨터공학과 0001 P002 안창호 컴퓨터공학과 0002 P003 이육사 국문학과 0003 P004 박종화 국문학과 0004 P005 심훈 사학과 0005 P006 한용운 사학과 0006 +-------+--------+--------------+--------+ 순천향대학교컴퓨터학부이상정 12

SELECT 문 (2) mysql> select * from prof where pdept = 국문학과 ; +-------+--------+--------------+--------+ pcode pname pdept pphone +-------+--------+--------------+--------+ P003 이육사 국문학과 0003 P004 박종화 국문학과 0004 +-------+--------+--------------+--------+ 순천향대학교컴퓨터학부이상정 13 UPDATE 문 테이블의입력된데이터를변경 UPDATE tbl_name SET col_name1 = expr1,.. [WHERE where_definition] mysql> update prof set pname = ' 하은용 ' where pname = ' 김구 '; +-------+--------+--------------+--------+ pcode pname pdept pphone +-------+--------+--------------+--------+ P001 하은용 컴퓨터공학과 0001 P002 안창호 컴퓨터공학과 0002 P003 이육사 국문학과 0003 P004 박종화 국문학과 0004 P005 심훈 사학과 0005 P006 한용운 사학과 0006 +-------+--------+--------------+--------+ 순천향대학교컴퓨터학부이상정 14

DELETE 문 테이블에서지정된레코드삭제 DELETE FROM tbl_name [WHERE where_condition] mysql> delete from student where sdept = ' 국문학과 '; Query OK, 2 rows affected (0.00 sec) mysql> select * from student; +-------+--------+--------------+----------+ scode sname sdept sphone +-------+--------+--------------+----------+ S006 황정숙 사학과 678-9012 S005 김상진 사학과 567-8901 S002 최민국 컴퓨터공학과 234-5678 S001 박소명 컴퓨터공학과 123-4567 +-------+--------+--------------+----------+ 순천향대학교컴퓨터학부이상정 15 ADO.NET 순천향대학교컴퓨터학부이상정 16

ADO.NET 개요 ADO(ActiveXDataObjects)API Data Objects) API 데이터베이스에접근인터페이스 ADO.NET 기존 ADO 기술을바탕으로.NET 기반의다양한언어지원, XML 지원, 비연결지향데이터베이스등진보된특징을추가한새로운데이터베이스 API ADO.NET 을사용하면기존데이터베이스를동일한방법으로검색, 수정, 업데이트등의작업을수행가능 DataSet과 Data Provider로구성 순천향대학교컴퓨터학부이상정 17 ADO.NET 구성 (1) DataSet 테이블의데이터를읽어서메모리에보관하는클래스 데이터베이스의내용을메모리데이터베이스 ( 데이터베이스사본 ) 형태로보유하고있으면서작업을수행하다필요할때데이터베이스를업데이트 Data Provider 데이터베이스연결을포함하여데이터베이스에접근을담당 Connection, Command, DataReader, DataAdapter 클래스를사용하여데이터베이스에접근 데이터베이스로부터읽어들인자료를 DataSet 클래스에전달 순천향대학교컴퓨터학부이상정 18

ADO.NET 구성 (2) DataBase Data Provider ADO.NET Connection Command DataReader DataAdapter DataSet t 순천향대학교컴퓨터학부이상정 19 System.Data (1) ADO.NET 의핵심네임스페이스로서테이블, 행, 열, 데이터셋클래스등이정의 클래스이름 DataColumn DataRow DataSet DataTable DataException 설명 DataTable 클래스에서하나의열 DataTable 클래스에서하나의행메모리에저장된데이터베이스테이터셋내에있는하나의테이블에러발생시예외 순천향대학교컴퓨터학부이상정 20

System.Data (2) 인터페이스정의 파생클래스의메쏘드의형태를강제하는표준을제공 인터페이스이름 IDataReader IDbCommand IDbConnection IDataAdapter, IDbDataAdapter DataException 설명데이터베이스로부터읽어들인자료를읽기전용스트림으로보관데이터베이스에연결되었을때사용되는 SQL 문장데이터베이스연결 DataSet을다루는 DataAdapter 에러발생시예외 순천향대학교컴퓨터학부이상정 21 MS Access 데이터베이스만들기 순천향대학교컴퓨터학부이상정 22

데이터베이스예 MS Access 사용하여예제데이터베이스구축 번호, 이름, 전화번호, 메일주소를필드로갖는데이터베이스테이블을생성 파일명 : ADOTest.mdb 테이블명 : Phone 번호 (id) 이름 (Name) 전화번호 (Phone) 메일주소 (Email) 1 백두순 041-530-1111 pppp@sch.ac.kr 2 조경수 041-530-2222 cccc@sch.ac.kr 3 이상전 041-530-3333 llll@sch.ac.kr 4 홍인석 041-530-0000 hhhh@sch.ac.kr 5 안종곤 041-530-5555 aaaa@sch.ac.kr 6 이해강 041-530-6666 yyyy@sch.ac.kr 7 전인국 041-530-7777 jjjj@sch.ac.kr 8 이임연 041-530-8888 iiii@sch.ac.kr 9 하상오 041-530-9999 ssss@sch.ac.kr 10 홍면 041-531-1111 1111 mmmm@sch.ac.kr 11 이하민 041-531-2222 bbbb@sch.ac.kr 순천향대학교컴퓨터학부이상정 23 Access 시작 순천향대학교컴퓨터학부이상정 24

필드속성 id 데이터형식 : 일련번호 필드크기 : 정수 (Long) 인덱스 : 예 ( 중복불가능 ) Name, Phone, Email 데이터형식 : 텍스트 필드크기 : 25 인덱스 : 아니오 순천향대학교컴퓨터학부이상정 25 테이블저장 순천향대학교컴퓨터학부이상정 26

데이터입력 순천향대학교컴퓨터학부이상정 27 DataAdapter 클래스예 순천향대학교컴퓨터학부이상정 28

ADOTest 프로그램 ADO.NET 클래스테스트프로그램 DataAdapter, Connection, Command, DataReader 클래스테스트 템플릿 : Windows 응용프로그램 이름 : 13-ADOTest 13-ADOTest bin Release 디렉토리에 Access 데이터베이스파일 ADOTest.mdb 파일복사 순천향대학교컴퓨터학부이상정 29 Data Adapter 클래스 Data Provider 의데이터베이스연결클래스 클래스이름 OleDbDataAdapter SqlDataAdapter OracleDataAdapter 설명 DataSet 을채우는명령과데이터베이스연결 SQL Server용 DataSet을채우는명령과데이터베이스연결 Oracle DBMS 용 DataSet 을채우는명령과데이터베이스연결 // DataAdapter 객체생성후데이터베이스에접근한후데이터를가져옴 OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); // DataAdapter 가가져온레코드를저장할 DataSet 생성 DataSet DS = new DataSet(); // DataAdapter가가져온레코드를 Fill() 메쏘드를사용하여 DataSet에저장 DBAdapter.Fill(DS, "phone"); 순천향대학교컴퓨터학부이상정 30

DataAdapter 예실행 순천향대학교컴퓨터학부이상정 31 컨트롤속성 Form1.cs 코드에다음추가 using System.Data.OleDb; 컨트롤속성 Form [Name]-> MainForm [Text]-> ADOTest DataGridView [Name]-> DBGrid Button [Name]-> DAOpenBtn [Text]-> DAOpenBtn 순천향대학교컴퓨터학부이상정 32

DAOpenBtn 버튼 Click 이벤트처리 private void DAOpenBtn_Click(object sender, EventArgs e) try string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; string commandstring = "select * from phone"; // SQL 명령 // DataAdapter 객체생성, 데이타베이스접근 OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); DataSet DS = new DataSet(); // DataSet 객체생성 DBAdapter.Fill(DS, "phone"); // 데이터베이스의 Phone 테이블읽어서저장 DBGrid.DataSource = DS.Tables["phone"].DefaultView; // DataGridView에출력 catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 33 Connection, Command 클래스예 순천향대학교컴퓨터학부이상정 34

Connection, Command 클래스 데이터베이스연결및 SQL 문실행클래스 클래스이름 OleDbConnection, SqlConnection, OracleConnection OleDbConnection, SqlConnection,OracleConnection 설명데이터베이스연결 SQL 문실행 string connectionstring ="provider=microsoft.jet.oledb.4.0;" +"data source ="+ Application.StartupPath + @" ADOTest.mdb"; // Connection 객체생성 OleDbConnection myconnection = new OleDbConnection(connectionString); string commandstring = "select * from phone"; // Command 객체생성, 연결및명령참조 OleDbCommand mycommand = new OleDbCommand(); mycommand.connection Connection = myconnection; mycommand.commandtext = commandstring; // DataAdapter 객체생성후Command 객체참조 OleDbDataAdapter DBAdapter = new OleDbDataAdapter(); DBAdapter.SelectCommand = mycommand; 순천향대학교컴퓨터학부이상정 35 Connection, Command 예실행 순천향대학교컴퓨터학부이상정 36

컨트롤추가 컨트롤속성 Button [Name]-> CCBtn [Text]-> CCBtn 순천향대학교컴퓨터학부이상정 37 CCBtn 버튼 Click 이벤트처리 (1) private void CCBtn_Click(object Click(object sender, EventArgs e) try string connectionstring ="provider=microsoft Microsoft.JET.OLEDB.4.0; 0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; // Connection 객체생성 OleDbConnection myconnection = new OleDbConnection(connectionString); string commandstring ="select * from phone"; // Command 객체생성, 연결및명령참조 OleDbCommand mycommand = new OleDbCommand(); mycommand.connection = myconnection; mycommand.commandtext = commandstring; // DataAdapter 객체생성후 Command 객체참조 OleDbDataAdapter DBAdapter = new OleDbDataAdapter(); DBAdapter.SelectCommand = mycommand; 순천향대학교컴퓨터학부이상정 38

CCBtn 버튼 Click 이벤트처리 (2) DataSet DS = new DataSet(); DBAdapter.Fill(DS, "phone"); DBGrid.DataSource = DS.Tables["phone"].DefaultView; catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 39 DataReader 클래스예 순천향대학교컴퓨터학부이상정 40

DataReader 클래스 데이터베이스에서데이터를순차적으로가져와읽기전용스트림에저장하고저장된스트림에서레코드를읽는방법을제공하는클래스 클래스이름 설명 OleDbDataReader, SqlDataReader, OracleDataReader 레코드를읽기전용스트림에저장, 관리 OleDbConnection myconnection = new OleDbConnection(connectionString); string commandstring = "select * from phone"; OleDbCommand mycommand = new OleDbCommand(); mycommand.connection = myconnection; mycommand.commandtext = commandstring; // 연결을오픈 myconnection.open(); // DataReader 객체생성 OleDbDataReader myreader = mycommand.executereader(); // 한레코드읽기 myreader.read() ; // 레코드의필드참조 myreader.getint32(0); // 첫번째필드순천향대학교 myreader.getstring(1) 컴퓨터학부이; 상// 정두번째필드 41 DataReader 예실행 메시지박스확인버튼클릭할때마다다음레코드출력 순천향대학교컴퓨터학부이상정 42

컨트롤추가 컨트롤속성 Button [Name]-> DRBtn [Text]-> DRBtn 순천향대학교컴퓨터학부이상정 43 DRBtn 버튼 Click 이벤트처리 (1) private void DRBtn_Click(object sender, EventArgs e) try string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; OleDbConnection myconnection = new OleDbConnection(connectionString); string commandstring = "select * from phone"; OleDbCommand mycommand = new OleDbCommand(); mycommand.connection Connection = myconnection; mycommand.commandtext = commandstring; // 연결을엽니다. myconnection.open(); // DataReader 객체생성 OleDbDataReader myreader; myreader = mycommand.executereader(); 순천향대학교컴퓨터학부이상정 44

DRBtn 버튼 Click 이벤트처리 (2) string ResultMessage = ""; // 각레코드를일어들여필드를메시비박스에출력 while (myreader.read()) ResultMessage = myreader.getint32(0) + ", " + myreader.getstring(1) + ", " + myreader.getstring(2); MessageBox.Show(ResultMessage); // DataReader 를닫습니다. myreader.close(); // 한번연연결은반드시닫아줘야합니다. myconnection.close(); Close(); catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 45 레코드추가예 순천향대학교컴퓨터학부이상정 46

새레코드추가하기 DataTable, DataRow 클래스를이용하여새레코드추가 // DataTable, DataRow 객체생성 DataTable phonetable = DS.Tables["phone"]; DataRow newrow = phonetable.newrow(); // 필드저장 newrow["name"] = txtname.text; newrow["phone"] = txtphone.text; newrow["email"] = txtmail.text; // 테이블에추가 phonetable.rows.add(newrow); // 데이터베이스갱신 DBAdapter.Update(DS, "phone"); 순천향대학교컴퓨터학부이상정 47 레코드추가예실행 순천향대학교컴퓨터학부이상정 48

컨트롤추가 컨트롤속성 Label 3개 [Text] 속성 이름 전화번호 E-Mail TextBox 3 개 [Name] 속성 txtname TxtPhone txtmail Button 속성 [Name]-> AppendBtn [Text]-> 추가 순천향대학교컴퓨터학부이상정 49 AppendBtn 버튼 Click 이벤트처리 (1) private void AppendBtn_Click(object t sender, EventArgs e) try string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; string commandstring = "select * from phone"; OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); OleDbCommandBuilder mycommandbuilder = new OleDbCommandBuilder(DBAdapter); DataSet DS = new DataSet(); DBAdapter.Fill(DS, "phone"); 순천향대학교컴퓨터학부이상정 50

AppendBtn 버튼 Click 이벤트처리 (2) // DataTable, DataRow 객체생성 DataTable phonetable = DS.Tables["phone"]; "]; DataRow newrow = phonetable.newrow(); // 필드저장 newrow["name"] = txtname.text; newrow["phone"] = txtphone.text; newrow["email"] = txtmail.text; // 테이블에추가 phonetable.rows.add(newrow); // 데이터베이스갱신 DBAdapter.Update(DS, "phone"); DBGrid.DataSource = DS.Tables["phone"].DefaultView; catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 51 레코드수정예 순천향대학교컴퓨터학부이상정 52

레코드수정하기 (1) 기존레코드수정절차 수정할레코드선택 선택된레코드데이터수정 수정레코드를원본데이터베이스에갱신 // 키값을이용하여테이블에서수정할레코드선택 DataTable phonetable = DS.Tables["phone"]; // 키지정 DataColumn[] PrimaryKey = new DataColumn[1]; PrimaryKey[0] = phonetable.columns["id"]; phonetable.primarykey = PrimaryKey; // Find() 메쏘드사용하여지정된키의레코드선택 DataRow currrow = phonetable.rows.find(selectedrowindex); 순천향대학교컴퓨터학부이상정 53 레코드수정하기 (2) // 선택된레코드수정 currrow.beginedit(); currrow["name"] = txtname.text; currrow["phone"] = txtphone.text; currrow["email"] = txtmail.text; currrow.endedit(); // 수정된레코드로데이터베이스갱신 DataSet UpdatedSet = DS.GetChanges(DataRowState.Modified); // DataSet 갱신 DBAdapter.Update(UpdatedSet, "phone"); // 데이터베이스갱신 순천향대학교컴퓨터학부이상정 54

레코드수정예실행 순천향대학교컴퓨터학부이상정 55 컨트롤추가 컨트롤속성 Button 속성 [Name]-> UpdateBtn [Text]-> 수정 순천향대학교컴퓨터학부이상정 56

DBGrid 이벤트처리 (1) DBGrid 에서한행을선택하면텍스트박스에해당레코드출력하고, 선택된행의키값을 SelectedRowIndex에저장 MainFrom 클래스에다음추가 private int SelectedRowIndex; DBGrid의이벤트 CellClick 선택하고더블클릭 private void DBGrid_CellClick(object sender, DataGridViewCellEventArgs e) string ti connectionstring Sti = "provider=microsoft.jet.oledb.4.0;" ftjetoledb40;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; string commandstring = "select * from phone"; OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); 순천향대학교컴퓨터학부이상정 57 DBGrid 이벤트처리 (2) DataSet DS = new DataSet() ; DBAdapter.Fill(DS, "phone"); "); DataTable phonetable = DS.Tables["phone"]; if (e.rowindex <0) // DBGrid의컬럼헤더를클릭하면컬럼을정렬하므로 // 아무메시지도띄우지않습니다. return; else if (e.rowindex > phonetable.rows.count - 1) MessageBox.Show( Show(" 해당하는데이터가존재하지않습니다."); return; DataRow currrow = phonetable.rows[ e.rowindex ]; txtname.text = currrow["name"].tostring(); txtphone.text = currrow["phone"].tostring(); txtmail.text = currrow["email"] ].ToString(); 순천향대학교컴퓨터학부이상정 58 SelectedRowIndex = (int)currrow["id"];

UpdateBtn 버튼 Click 이벤트처리기 (1) private void UpdateBtn_Click(object sender, EventArgs e) try string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; string commandstring = "select * from phone"; OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); OleDbCommandBuilder mycommandbuilder = new OleDbCommandBuilder(DBAdapter); DataSet DS = new DataSet("phone"); DBAdapter.Fill(DS, "phone"); // 키값을이용하여테이블에서수정할레코드선택 DataTable phonetable = DS.Tables["phone"]; // 키지정 DataColumn[] PrimaryKey = new DataColumn[1]; PrimaryKey[0] = phonetable.columns["id"]; phonetable.primarykey = PrimaryKey; 순천향대학교컴퓨터학부이상정 59 UpdateBtn 버튼 Click 이벤트처리기 (2) // Find() 메쏘드사용하여지정된키의레코드선택 DataRow currrow = phonetable.rows.find(selectedrowindex); l dr d // 선택된레코드수정 currrow.beginedit(); currrow["name"] = txtname.text; currrow["phone"] = txtphone.text; currrow["email"] = txtmail.text; currrow.endedit(); // 수정된레코드로데이터베이스갱신 DataSet UpdatedSet = DS.GetChanges(DataRowState.Modified); if (UpdatedSet.HasErrors) MessageBox.Show(" 변경된데이터에문제가있습니다."); else DBAdapter.Update(UpdatedSet, "phone"); // DataSet 갱신 DS.AcceptChanges(); // 데이터베이스갱신 DBGrid.DataSource = DS.Tables["phone"].DefaultView; 순천향대학교컴퓨터학부이상정 60

UpdateBtn 버튼 Click 이벤트처리기 (3) catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 61 레코드삭제예 순천향대학교컴퓨터학부이상정 62

레코드삭제하기 레코드수정과비슷하고 DataRow 객체의 Delete() 메쏘드를호출하여삭제 // 삭제할레코드를검색한후삭제 DataRow currrow = phonetable.rows.find(selectedrowindex); currrow.delete(); 순천향대학교컴퓨터학부이상정 63 레코드삭제예실행 순천향대학교컴퓨터학부이상정 64

컨트롤추가 컨트롤속성 Button 속성 [Name]-> DeleteBtn [Text]-> 삭제 순천향대학교컴퓨터학부이상정 65 UpdateBtn 버튼 Click 이벤트처리기 (1) private void DeleteBtn_Click(object sender, EventArgs e) try string connectionstring = "provider=microsoft.jet.oledb.4.0;" + "data source = " + Application.StartupPath + @" ADOTest.mdb"; string commandstring = "select * from phone"; OleDbDataAdapter DBAdapter = new OleDbDataAdapter(commandString, connectionstring); OleDbCommandBuilder mycommandbuilder = new OleDbCommandBuilder(DBAdapter); DataSet DS = new DataSet("phone"); DBAdapter.Fill(DS, "phone"); DataTable phonetable = DS.Tables["phone"]; DataColumn[] PrimaryKey = new DataColumn[1]; PrimaryKey[0] = phonetable.columns["id"]; phonetable.primarykey = PrimaryKey; 순천향대학교컴퓨터학부이상정 66

UpdateBtn 버튼 Click 이벤트처리기 (2) // 삭제할레코드를검색한후삭제 DataRow currrow = phonetable.rows.find(selectedrowindex); currrow.delete(); DBAdapter.Update(DS.GetChanges(DataRowState.Deleted), "phone"); DBGrid.DataSource = DS.Tables["phone"].DefaultView; catch (DataException DE) MessageBox.Show(DE.Message); catch (Exception DE) MessageBox.Show(DE.Message); 순천향대학교컴퓨터학부이상정 67 과제 이장에서소개된 ADOTest 를개선한프로그램 디자인변경또는새로운기능추가 순천향대학교컴퓨터학부이상정 68