Microsoft PowerPoint - aj-lecture5.ppt [호환 모드]

Similar documents
MySQL-.. 1

쉽게 풀어쓴 C 프로그래밊

17장

10.ppt

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

Connection 8 22 UniSQLConnection / / 9 3 UniSQL OID SET

윈도우시스템프로그래밍

DBMS & SQL Server Installation Database Laboratory

Spring Boot/JDBC JdbcTemplate/CRUD 예제

Microsoft PowerPoint - 10Àå.ppt

윈도우시스템프로그래밍

JDBC 소개및설치 Database Laboratory

슬라이드 1

슬라이드 1

- 다음은 Statement 객체를사용해서삽입 (insert) 작업의예 String sql = "insert into member(code, name, id, pwd, age) values ("; int id = 10; sql = sql + id +, ;// 항목사이에

PowerPoint Presentation

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

PowerPoint 프레젠테이션

PowerPoint 프레젠테이션

슬라이드 1

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

FileMaker 15 ODBC 및 JDBC 설명서

歯JavaExceptionHandling.PDF

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

Microsoft Word - ntasFrameBuilderInstallGuide2.5.doc

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

FileMaker ODBC 및 JDBC 가이드

JAVA PROGRAMMING 실습 09. 예외처리

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

PowerPoint 프레젠테이션

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

Microsoft PowerPoint - 04-UDP Programming.ppt

준비사항 } 실습조건 } MS-SQL Server 에연결가능한컴퓨터 } 실습용서버혹은별도의 MS-SQL 서버 } Northwind 데이터베이스 } MS-SQL 2000 에제공되는예제데이터베이스 } MS-SQL 2008 에는 Northwind 가기본으로제공되지않기때문에실

1 데이터베이스 2 MySQL 설치 3 기초 SQL 4 고급 SQL 유용한함수들 JOIN inseog Kim Dep. of Applied Statistics, Dongguk통계데이터베이스 University jinseog.kim gma

강의 개요

FileMaker ODBC and JDBC Guide

개발문서 Oracle - Clob

JAVA PROGRAMMING 실습 08.다형성

[ 목차 ] 5.1 데이터베이스프로그래밍개념 5.2 T-SQL T-SQL 문법 5.3 JAVA 프로그래밍 2

Microsoft PowerPoint Python-DB

문서 템플릿

untitled

Windows 8에서 BioStar 1 설치하기

gnu-lee-oop-kor-lec06-3-chap7

PowerPoint Presentation

Design Issues

Microsoft PowerPoint - Supplement-03-TCP Programming.ppt [호환 모드]

슬라이드 제목 없음

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

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

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

SQL Developer Connect to TimesTen 유니원아이앤씨 DB 기술지원팀 2010 년 07 월 28 일 문서정보 프로젝트명 SQL Developer Connect to TimesTen 서브시스템명 버전 1.0 문서명 작성일 작성자

ORANGE FOR ORACLE V4.0 INSTALLATION GUIDE (Online Upgrade) ORANGE CONFIGURATION ADMIN O

Microsoft PowerPoint 자바-기본문법(Ch2).pptx

Microsoft PowerPoint - 03-TCP Programming.ppt

PowerPoint Presentation

Chap7.PDF

PowerPoint 프레젠테이션

PowerPoint Presentation

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

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

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

1. 자바프로그램기초 및개발환경 2 장 & 3 장. 자바개발도구 충남대학교 컴퓨터공학과

PowerPoint Presentation

iii. Design Tab 을 Click 하여 WindowBuilder 가자동으로생성한 GUI 프로그래밍환경을확인한다.

JTable과 MVC(Model-View-Controller) 구조 - 모델-뷰-컨트롤러구조는데이터의저장과접근에대한제공은모델이담당하고, 화면표시는뷰, 이벤트의처리는컨트롤러가하도록각역할을구분한구조이다. 즉, 역할의분담을통하여상호간의영향을최소화하고각요소의독립성을보장하여독자

<C1A62038B0AD20B0ADC0C7B3EBC6AE2E687770>

JUNIT 실습및발표

뇌를 자극하는 JSP & Servlet 슬라이드

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

Lec. 2: MySQL and RMySQL

PowerPoint Presentation

PowerPoint Presentation

13주-14주proc.PDF

PowerPoint 프레젠테이션

Microsoft PowerPoint - java1-lab5-ImageProcessorTestOOP.pptx

Microsoft PowerPoint - Java7.pptx

5장 SQL 언어 Part II

<4D F736F F F696E74202D20C1A63038C0E520C5ACB7A1BDBABFCD20B0B4C3BC4928B0ADC0C729205BC8A3C8AF20B8F0B5E55D>

PowerPoint Template

예제 2) Test.java class A intvar= 10; void method() class B extends A intvar= 20; 1"); void method() 2"); void method1() public class Test 3"); args) A

NoSQL

제11장 프로세스와 쓰레드

어댑터뷰

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

파일로입출력하기II - 파일출력클래스중에는데이터를일정한형태로출력하는기능을가지고있다. - PrintWriter와 PrintStream을사용해서원하는형태로출력할수있다. - PrintStream은구버전으로가능하면 PrintWriter 클래스를사용한다. PrintWriter

PowerPoint Presentation

교육2 ? 그림

PowerPoint 프레젠테이션

1. 객체의생성과대입 int 형변수 : 선언과동시에초기화하는방법 (C++) int a = 3; int a(3); // 기본타입역시클래스와같이처리가능 객체의생성 ( 복습 ) class CPoint private : int x, y; public : CPoint(int a

쉽게 풀어쓴 C 프로그래밍

개요오라클과티베로에서 JDBC 를통해접속한세션을구분할수있도록 JDBC 접속시 ConnectionProperties 를통해구분자를넣어줄수있다. 하나의 Node 에다수의 WAS 가있을경우 DB 에서 Session Kill 등의동작수행시원하는 Session 을선택할수있다.

PowerPoint Presentation

제목을 입력하세요.

초보자를 위한 ADO 21일 완성

DocsPin_Korean.pages

02 C h a p t e r Java

1. 데이터베이스프로그래밍의개념 2. PL-SQL 3. 데이터베이스연동자바프로그래밍 4. 데이터베이스연동웹프로그래밍

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

슬라이드 1

Transcription:

JDBC 프로그래밍 524730-1 2019 년봄학기 4/8/2019 박경신 데이터베이스의개념 데이터베이스 (Database) 여러응용시스템들의통합된정보들을저장하여운영할수있는공용데이터들의집합 데이터의저장, 검색, 갱신을효율적으로수행할수있도록데이터를고도로조직화하여저장 DBMS 데이터베이스관리시스템 (DataBase Management System) 오라클 (Oracle), 마이크로소프트의 SQL Server, MySQL, IBM 의 DB2 등 데이터베이스종류 관계형데이터베이스 키 (key) 와값 (value) 들의관계를테이블로표현한데이터베이스모델 키는테이블의열 (column) 이되며테이블의행 (row) 은하나의레코드 (record) 를표현 현재사용되는대부분의데이터베이스는관계형데이터베이스 객체지향데이터베이스 객체지향프로그래밍에쓰이는것으로, 정보를객체의형태로표현하는데이터베이스모델 오브젝트데이터베이스 (object database) 라고도부름 데이터베이스사례 관계형데이터베이스구조 관계형데이터베이스 데이터들이다수의테이블로구성 각행은하나의레코드 각테이블은키 (key) 와값 (value) 들의관계로표현 여러테이블간에공통된이름의열포함 이런경우서로다른테이블간에관계 (relation) 가성립 대부분의데이터베이스는관계형데이터베이스 JDBC API

객체지향데이터베이스 객체지향데이터베이스 객체지향프로그래밍에사용 정보를객체의형태로표현 오브젝트데이터베이스 (object database) 라고도부름 객체모델이그대로데이터베이스에도적용되므로응용프로그램의객체모델과데이터베이스의모델이부합됨 SQL 과 JDBC SQL(Structured Query Language) 관계형데이터베이스관리시스템에서사용 데이터베이스스키마생성, 자료의검색, 관리, 수정, 그리고데이터베이스객체접근관리를위해고안된언어 데이터베이스로부터정보를추출하거나갱신하기위한표준대화식프로그래밍언어 다수의데이터베이스관련프로그램들이 SQL 을표준으로채택 JDBC(Java DataBase Connectivity) 관계형데이터베이스에저장된데이터를접근및조작할수있게하는 API 다양한 DBMS에대해일관된 API로데이터베이스연결, 검색, 수정, 관리등을할수있게함 JDBC 구조 JDBC 드라이버매니저 자바 API에서지원하며 DBMS를접근할수있는 JDBC 드라이버로드 JDBC 드라이버 DBMS마다고유한 JDBC 드라이버제공, JDBC 드라이버와 DBMS는전용프로토콜로데이터베이스처리 DBMS 데이터베이스관리시스템. 데이터베이스생성 삭제, 데이터생성 검색 삭제등전담소프트웨어시스템 MySQL MySQL 전세계적으로가장널리사용되고있는오픈소스관계형데이터베이스관리시스템 관계형데이터베이스관리시스템의표준화된사용자및프로그래밍인터페이스인질의언어 SQL(Structured Query Language) 을사용 매우빠르고유연하고사용하기쉽기때문에많은기업에서다양한웹기반애플리케이션을개발하는데사용

MySQL 서버설치 https://www.mysql.com/downloads/ MySQL 서버설치파일다운로드 https://dev.mysql.com/downloads/windows/installer MySQL 서버 Default 타입으로설치 MySQL 서버설치및설정

MySQL 서버설치및설정 MySQL 서버설치및설정 MySQL 서버설치및설정 MySQL 설치완료및서버설정

JDBC 드라이버설치 MySQL Workbench 실행 JDBC 드라이버확인 https://dev.mysql.com/downloads/connector/j/ MySQL Workbench 실행 MySQL Workbench 를사용하여새 DB 생성 MySQL Command Line Client 또는 MySQL Workbench 를실행한후 root 계정의비밀번호를입력하여 MySQL 에접속 새데이터베이스 sampledb 생성 - CREATE 명령어사용 MySQL Workbench 실행 MySQL 데이터베이스 import MySQL Workbench Server->Data Import sampledb_pet.sql

MySQL Workbench 실행 MySQL 데이터베이스 export MySQL Workbench Server->Data Export Eclipse 와 DB 연동 DB 연동 이클립스에서 DB 를연동하려면 DB Connection 을설정해야함 DB Connection 을설정하기전에사용할 DB 가반드시생성되어있어야함 Eclipse 와 DB 연동 MySQL Workbench 를사용하여 DB 확인 Eclipse 와 DB 연동 데이터베이스커넥션설정 Data Source Explorer 뷰를이용하여이클립스에데이터베이스커넥션을설정 Data Source Explorer 뷰열기 : 이클립스 Window->Show View-> Data Source Explorer를선택하면이클립스의뷰에나타남. Data Source Explorer 뷰에서 [Database Connections] 를선택한후마우스오른쪽버튼을눌러 New 메뉴를선택

Eclipse 와 DB 연동 커넥션유형설정하기 : [Connection Profile] 화면이나타나면 Connection Profile Types 에서 MySQL 을선택하고 Name 에 MySQLConn 을입력한후 <Next> 를클릭함. Eclipse 와 DB 연동 드라이버와커넥션상세설정하기 : [Specify a Driver and Connection Details] 화면이나타나면 Drivers 항목의 (New Driver Definition) 버튼을클릭함. Eclipse 와 DB 연동 통합개발환경과데이터베이스연동 새로운드라이버설정하기 : [New Driver Definition] 화면이나타나면 Name/Type, JAR List, Properties 탭에차례대로필요한설정을진행. Name/Type 탭에서는사용할 JDBC 드라이버와버전을선택함. Name/Type 탭에서 MySQL JDBC Driver의 5.1 버전을선택함.

통합개발환경과데이터베이스연동 커넥션연결설정끝내기 : 설정된 JDBC 드라이버와데이터베이스의이름이표시되면 <Test Connection> 을클릭. [Success] 대화상자가나타나면 <OK> 를클릭하여대화상자를닫고 <Finish> 를클릭하여모든설정완료. 통합개발환경과데이터베이스연동 MySQL 을직접제어하는커넥션이연결된상태 앞으로커넥션연결은 [Connect] 메뉴를, 커넥션해제는 [Disconnect] 메뉴를사용 데이터베이스접속및사용 DB 사용 MySQL 8.0 command Line Client 실행하여, 생성된 DB에접속 테이블생성 데이터저장을위해테이블을생성 다음과같은구조의 pet 테이블생성 name owner species sex birth death varchar(20) varchar(20) varchar(20) char(1) date date name, owner, species은 varchar 타입으로 20자 sex는 char 타입으로 1자 birth, death은 date 타입 -u 옵션은 root 계정으로명령수행을의미 use는 DB 사용명령 sampledb는사용할 DB 이름

테이블생성 저장할데이터 mysql> SELECT * from pet; +----------+--------+---------+------+------------+------------+ name owner species sex birth death +----------+--------+---------+------+------------+------------+ Fluffy Harold cat f 1993-02-04 NULL Claws Gwen cat m 1994-03-17 NULL Buffy Harold dog f 1989-05-13 NULL Fang Benny dog m 1990-08-27 NULL Bowser Diane dog m 1979-08-31 1995-07-29 Chirpy Gwen bird f 1998-09-11 NULL Whistler Gwen bird NULL 1997-12-09 NULL Slim Benny snake m 1996-04-29 NULL Puffball Diane hamster f 1999-03-30 NULL +----------+--------+---------+------+------------+------------+ 9 rows in set (0.00 sec) 테이블생성 create 문으로테이블생성 mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20), -> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE); Query OK, 0 rows affected (0.15 sec) create table 다음에테이블이름지정 열이름데이터타입 ( 데이터크기 ) 을콤마로분리하여나열 not null은행의데이터에 null값이올수없음을의미 primary key는키로사용될행지정 drop 명령은기존의테이블삭제 mysql> DROP TABLE pet; Query OK, 0 rows affected (0.15 sec) 테이블생성 desc 명령은생성된테이블의구조표시 mysql> DESCRIBE pet; +---------+-------------+------+-----+---------+-------+ Field Type Null Key Default Extra +---------+-------------+------+-----+---------+-------+ name varchar(20) YES NULL owner varchar(20) YES NULL species varchar(20) YES NULL sex char(1) YES NULL birth date YES NULL death date YES NULL +---------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) Query OK, 0 rows affected (0.15 sec) 데이터추가 insert 문으로테이블의데이터추가 mysql> INSERT INTO pet -> VALUES ('Puffball', 'Diane', 'hamster', 'f', '1999-03-30', NULL); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO pet -> VALUES ( Fluffy', Harold', cat', 'f', '1993-02-04', NULL); Query OK, 1 row affected (0.10 sec) mysql> INSERT INTO pet -> VALUES ( Claws', Gwen', cat', m', '1994-03-17', NULL); Query OK, 1 row affected (0.10 sec) insert into 다음에테이블이름지정 테이블이름다음괄호안에열이름을콤마로구분하여나열 values 다음괄호안에열의값들을콤마로구분하여나열 문자타입의데이터는단일인용부호로묶어서표시함에유의

데이터추가 load 문으로파일로부터테이블의데이터추가 mysql>load DATA INFILE 'C:/ProgramData/MySQL/MySQL Server 8.0/Uploads/pet.csv' INTO TABLE pet FIELDS TERMINATED BY ',' LINES TERMINATED BY '\r\n'; Query OK, 8 rows affected (0.10 sec) mysql> SELECT * from pet; +----------+--------+---------+------+------------+------------+ name owner species sex birth death +----------+--------+---------+------+------------+------------+ Fluffy Harold cat f 1993-02-04 NULL Claws Gwen cat m 1994-03-17 NULL Buffy Harold dog f 1989-05-13 NULL Fang Benny dog m 1990-08-27 NULL Bowser Diane dog m 1979-08-31 1995-07-29 Chirpy Gwen bird f 1998-09-11 NULL Whistler Gwen bird NULL 1997-12-09 NULL Slim Benny snake m 1996-04-29 NULL +----------+--------+---------+------+------------+------------+ 8 rows in set (0.00 sec) 데이터검색 select 문으로테이블내의데이터검색 mysql> SELECT * from pet where owner='gwen'; +----------+-------+---------+------+------------+-------+ name owner species sex birth death +----------+-------+---------+------+------------+-------+ Claws Gwen cat m 1994-03-17 NULL Chirpy Gwen bird f 1998-09-11 NULL Whistler Gwen bird NULL 1997-12-09 NULL +----------+-------+---------+------+------------+-------+ 3 rows in set (0.00 sec) select 다음에는데이터를추출할열이름을콤마로분리하여나열 모든열에대해데이터를추출할때는 * 를열이름대신사용 from 다음에테이블이름을지정 where 다음에검색조건지정. where는생략가능 데이터검색 select 문으로테이블내의데이터검색 mysql> SELECT owner, species, birth FROM pet WHERE name = 'Buffy'; +--------+---------+------------+ owner species birth +--------+---------+------------+ Harold dog 1989-05-13 +--------+---------+------------+ 1 row in set (0.00 sec) 데이터수정 update 문을이용하여데이터수정 mysql> UPDATE pet set owner= Benny' where name='puffball'; Query OK, 1 row affected (0.09 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> SELECT * from pet where owner='benny'; +----------+-------+---------+------+------------+-------+ name owner species sex birth death +----------+-------+---------+------+------------+-------+ Fang Benny dog m 1990-08-27 NULL Slim Benny snake m 1996-04-29 NULL Puffball Benny hamster f 1999-03-30 NULL +----------+-------+---------+------+------------+-------+ 3 rows in set (0.00 sec) update 다음에는테이블이름지정 set 다음에수정할열의이름과값을콤마로분리하여나열 where 다음에는검색조건을지정. where는생략가능

레코드삭제 delete 문을이용하여데이터삭제 mysql> DELETE from pet where name='puffball'; Query OK, 1 row affected (0.06 sec) mysql> SELECT * from pet where owner='benny'; +------+-------+---------+------+------------+-------+ name owner species sex birth death +------+-------+---------+------+------------+-------+ Fang Benny dog m 1990-08-27 NULL Slim Benny snake m 1996-04-29 NULL +------+-------+---------+------+------------+-------+ 2 rows in set (0.00 sec) delete from 다음에는테이블이름지정 where 다음에는검색조건을지정. 위의예에서는 name 값이 Puffball 인레코드삭제 where 는생략가능 JDBC 프로그래밍 DB 연결설정 JDBC 드라이버로드 try { Class.forName("com.mysql.cj.jdbc.Driver"); catch (ClassNotFoundException e) { e.printstacktrace(); Class.forName() 은동적으로자바클래스로딩 MySQL의 JDBC 드라이버클래스인 com.mysql.jdbc.driver 로드 드라이버의클래스이름은 DB의드라이버마다다를수있으므로 JDBC 드라이버문서참조할것 자동으로드라이버인스턴스를생성하여 DriverManager에등록 해당드라이버가없으면 ClassNotFoundException 발생 자바응용프로그램과 JDBC 의연결 연결 static final String DB_URL = "jdbc:mysql://localhost/sampledb"; static final String USER = "root"; static final String PASS = ********"; try { Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); catch (SQLException e) { e.printstacktrace(); DriverManager는자바어플리케이션을 JDBC 드라이버에연결시켜주는클래스로서 getconnection() 메소드로 DB에연결하여 Connection 객체반환 getconnection에서 jdbc: 이후에지정되는 URL의형식은 DB에따라다르므로 JDBC 문서를참조 MySQL 서버가같은컴퓨터에서동작하므로서버주소를 localhost로지정 MySQL의경우디폴트로 3306 포트를사용 sampledb는앞서생성한 DB의이름 root 는 DB에로그인할계정이름이며, 는계정패스워드 예제 : sampledb 의데이터베이스연결하는 JDBC 프로그램작성 JDBC를이용하여 sampledb 데이터베이스에연결하는자바응용프로그램을작성하라. import java.sql.connection; import java.sql.drivermanager; import java.sql.sqlexception; public class JDBCTest { public static void main (String[] args) { try { Class.forName("com.mysql.cj.jdbc.Driver"); Connection conn = DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("DB 연결완료 "); catch (ClassNotFoundException e) { System.out.println("JDBC 드라이버로드에러 "); catch (SQLException e) { System.out.println("DB 연결오류 "); DB 연결오류 또는 DB 연결완료

데이터베이스사용 Stetement 클래스 메소드 SQL 문을실행하기위해서는 Statement 클래스를이용 주요메소드 ResultSet executequery(string sql) int executeupdate(string sql) void close() 설명 주어진 SQL문을실행하고결과는 ResultSet 객체에반환 INSERT, UPDATE, 또는 DELETE과같은 SQL문을실행하고, SQL문실행으로영향을받은행의개수나 0 을반환 Statement 객체의데이터베이스와 JDBC 리소스를즉시반환 데이터검색을위해 executequery() 메소드사용 추가, 수정, 삭제와같은데이터변경은 executeupdate() 메소드사용 데이터베이스사용 ResultSet 클래스 SQL문실행결과를얻어오기위해서는 ResultSet 클래스를이용 현재데이터의행 ( 레코드위치 ) 을가리키는커서 (cursor) 를관리 커서의초기값은첫번째행이전을가리킴 메소드 boolean first() boolean last() boolean next() boolean previous() 설명 커서를첫번째행으로이동 커서를마지막행으로이동 커서를다음행으로이동 커서를이전행으로이동 boolean absolute(int row) 커서를지정된행으로이동 boolean isfirst() boolean islast() void close() 첫번째행이면 true 반환 마지막행이면 true 반환 ResultSet 객체의데이터베이스와 JDBC 리소스를즉시반환 데이터베이스사용 테이블의모든데이터검색 Statement stmt = conn.createstatement(); ResultSet rs = stmt.executequery("select * from student"); Statement의 executequery() 는 SQL문의실행하여실행결과를넘겨줌 위의 SQL문의 student 테이블에서모든행의모든열을읽어결과를 rs에저장 특정열만검색 ResultSet rs = stmt.executequery("select name, id from student"); 특정열만읽을경우는 select문을이용하여특정열의이름지정 조건검색 rs = stmt.executequery("select name, id, dept from student where id='0494013'"); select문에서 where절을이용하여조건에맞는데이터검색 데이터베이스사용 검색된데이터의사용 while (rs.next()) { System.out.println(rs.getString("name")); System.out.println(rs.getString( owner")); System.out.println(rs.getString( species")); System.out.println(rs.getString( sex")); System.out.println(rs.getDate( birth")); System.out.println(rs.getDate( death")); rs.close(); Statement객체의 executequery() 메소드 ResultSet 객체반환 ResultSet 인터페이스 DB에서읽어온데이터를추출및조작할수있는방법제공 next() 메소드 다음행으로이동

데이터베이스사용 메소드 ResultSet 의 getxxx() 메소드 해당데이터타입으로열값을읽어옴 인자로열의이름이나인덱스를줄수있음 DB 데이터타입에해당하는자바데이터타입으로데이터를읽어야함. 모든데이터타입에대해 getstring() 메소드로읽을수있으나사용할때는해당데이터타입으로변환해서사용 ResultSet 에서모든데이터를읽은후 close() 를호출하여자원해제 설명 한글처리문제 문자열코드문제 MySQL의문자집합은 ISO-8859-1 Unicode 를사용하는자바에서한글이깨져출력 ISO-8859-1 를 Unicode 로변환하여출력해야함 String ISO_8859_1String = rs.getstring("name"); byte [] UnicodeBytes = ISO_8859_1String.getBytes("ISO-8859-1"); String UnicodeString = new String(UnicodeBytes); System.out.print(UnicodeString); 유니코드로변환 Xxx getxxx(string columnlable) Xxx getxxx(int columnindex) ResultSet 객체의데이터베이스와 JDBC 리소스를즉시반환 Xxx는해당데이터타입을나타내며현재행에서지정된열이름에해당하는데이터를반환. 예를들어, int형데이터를읽는메소드는 getint() 이다. Xxx는해당데이터타입을나타내며현재행에서지정된열인덱스에해당하는데이터를반환. 예를들어, int형데이터를읽는메소드는 getint() 이다. 반대로 MySQL에서사용될한글이포함된문자열은 Unicode에서 ISO-8859-1로변환해야 MySQL에서정상적으로처리됨 byte [] UnicodeBytes = " 홍길동 ".getbytes(); String IOS_8859_1String = new String(UnicodeBytes, "ISO-8859-1"); stmt.executequery("select name, id, dept from student where name='"+ IOS_8859_1String +"'"); 유니코드를 ISO-8859-1 로변환 예제 : 데이터검색과출력 앞서생성한 sampledb의 pet 테이블의모든데이터를출력하는프로그램과이름이 Claws 인 pet의데이터를출력하는프로그램을작성하시오. import java.io.unsupportedencodingexception; import java.sql.*; public class SampleDBPetTest { public static void main (String[] args) { Connection conn; Statement stmt = null; try { Class.forName("com.mysql.cj.jdbc.Driver"); conn = DriverManager.getConnection(DB_URL, USER, PASS); System.out.println("DB 연결완료 "); stmt = conn.createstatement(); printtable(stmt); ReseltSet rs = stmt.executequery("select name, owner, species, sex, birth, death from pet where owner= Gwen "); printdata(rs); catch (ClassNotFoundException e) { System.out.println("JDBC 드라이버로드에러 "); catch (SQLException e) { System.out.println("SQL 실행에러 "); catch (UnsupportedEncodingException e) { System.out.println(" 지원되지않는인코딩타입 "); 예제 : 데이터검색과출력 ( 소스계속 ) private static void printtable(statement stmt) throws SQLException { String sql = "SELECT name, owner, species, sex, birth, death FROM pet"; ResultSet rs = stmt.executequery(sql); while(rs.next()) { //Retrieve by column name String name = rs.getstring("name"); String owner = rs.getstring("owner"); String species = rs.getstring("species"); String sex = rs.getstring("sex"); Date birth = rs.getdate("birth"); Date death = rs.getdate("death"); //Display values System.out.print("name: " + name); System.out.print(", owner: " + owner); System.out.print(", species: " + species); System.out.print(", sex: " + sex); System.out.print(", birth: " + birth); System.out.println(", death: " + death); rs.close();

예제 : 데이터검색과출력 ( 소스계속 ) 데이터의변경 private static void printdata(resultset rs) throws SQLException { while(rs.next()) { //Retrieve by column name String name = rs.getstring("name"); String owner = rs.getstring("owner"); String species = rs.getstring("species"); String sex = rs.getstring("sex"); Date birth = rs.getdate("birth"); Date death = rs.getdate("death"); //Display values System.out.print("name: " + name); System.out.print(", owner: " + owner); System.out.print(", species: " + species); System.out.print(", sex: " + sex); System.out.print(", birth: " + birth); System.out.println(", death: " + death); 레코드추가 stmt.executeupdate("insert INTO pet VALUES ('Puffball', 'Diane', 'hamster', 'f', '1999-03-30', NULL);\r\n ); DB에변경을가하는조작은 executeupdate() 메소드사용 SQL문수행으로영향을받은행의개수반환 데이터수정 stmt.executeupdate("update pet set owner ='Benny' where name='puffball'"); where 문의 MySQL 에서처리되므로문자열을 Unicode 에서 ISO- 8859-1 로변환에주의 데이터삭제 stmt.executeupdate("delete from pet where name='puffball' );