Department of Computer Software MyongJi University

Slides:



Advertisements
Similar presentations
Transaction ㅇ Transaction 을 직접 구현하려면, 까다로운 설계와 복잡한 코드를 필요로 하고 수정에 공수가 많이 들게 된다. ㅇ 스프링에서 제공하는 Transaction Manager 를 사용하여 쉽고 간편하게 어려운 트랜잭션을 해결할 수 있다. xml.
Advertisements

1 SQL 정보보호학과 양 계 탁. 2 SQL 개요 SQL 개요 3 Database u 연관된 데이터들의 집합 u 데이터를 쉽게 관리하는 프로그램 종 류종 류 관계형 데이터베이스 객체지향형 데이터베이스 계층형 데이터베이스 네트워크 데이터베이스 데이터를 2 차원적인 테.
멘토링 2 주차 장 프로그래밍을 위한 자바의 자료형  값이 변하지 않는 상수  메모리 기억공간인 변수.
명품 JAVA Programming 제 3 장 반복문, 배열, 예외처리.
어서와 Java는 처음이지! 제3장선택과 반복.
11장. 프로토콜 핸들러 AI &HC I LAB 김 성 현.
JDBC 연결 Oracle.
JDBC.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
컴퓨터 응용 및 실습 Part1. OOP&Java Programming data type Review
PL/SQL.
어서와 Java는 처음이지! 제2장 자바 프로그래밍 기초.
소프트웨어시스템설계(6주) 데이터베이스 연동
C#에서 데이터베이스 연동 방법.
Java Presentation 중간 시험2 풀이
4부 클래스 라이브러리 “4부에서는 자바 언어의 API인 클래스 라이브러리에 관해 설명합니다
JDBC 개요 Section 04 JDBC 개념과 역할 JDBC 구조 애 플 리 케 이 션 오라클 DBMS MySql DBMS
어서와 Java는 처음이지! 제19장 데이터베이스 프로그래밍.
명품 JAVA Programming 제 17 장 JDBC 프로그래밍.
JDBC 프로그래밍 이수지 이동주 1.
자바란 무엇인가? JDK의 다운로드 및 설치 방법 Hello, Java 프로그램의 작성 자바 프로그램의 작동 원리
데이터베이스 담당교수 신정식 Chapter 4 SQL(1).
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
2주 실습강의 Java의 기본문법(1) 인공지능연구실.
Chapter 02 자바 기본구조 자바 프로그래밍의 기초적인 문법을 소개
2강. JAVA 프로그래밍이란?-II & 변수 JAVA 프로그램 환경설정과 실행 방법 변수란?
명품 JAVA Essential.
Power Java 제4장 자바 프로그래밍 기초.
데이터베이스 와 JDBC 1.데이터베이스와 데이터베이스 관리 시스템은? 2.데이터베이스 장점?
JDBC 소개 및 설치 슬라이드 노트에 모든 설명을 작성 Database Laboratory.
객체 지향 원리 송치형.
IOC, DI 2015 Web Service Computing.
JAVA 프로그래밍 6장 객체지향프로그래밍의 핵심.
Power Java 제10장 배열.
Choi, Namseok Java 기초 (Java의 제어문과 배열) Choi, Namseok
기초 T-SQL.
중 간 고 사 (웹프로그래밍)
명품 Java Programming.
2장 자바환경과 자바 프로그램 2.1 자바 개발 환경 2.2 자바 통합환경 2.3 자바 응용 프로그램과 애플릿 프로그램
DataScience Lab. 박사과정 김희찬 (월)
16장. 테이블의 변경 새로운 행 삽입 테이블에서 테이블로 행을 복사 행 값의 변경 테이블에서 행 삭제
제 2 장 변수와 상수.
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
주소록 프로그램.
21강. 스프링JDBC JDBC를 이용한 반복코드 줄이기 Spring빈을 이용한 코드 간소화
자바 5.0 프로그래밍.
제 4주 2014년 1학기 강원대학교 컴퓨터학부 담당교수: 정충교
JDBC (Java Database Connectivity)
데이터 타입 데이터 타입.
23강 API - II - 약방의 감초 Random 클래스 - Scanner 및 Sysout - Wrapper 클래스의 이해
컴퓨터 개론 및 실습 Dept. Computer Eng. Hankuk University of Foreign Studies
DataScience Lab. 박사과정 김희찬 (월)
컴퓨터의 기초 제 2강 - 변수와 자료형 , 연산자 2006년 3월 27일.
03. 안드로이드를 위한 Java 문법 제목. 03. 안드로이드를 위한 Java 문법 제목.
WAP Java Seminar
Ch.1 Iterator Pattern <<interface>> Aggregate +iterator
제 2장 어휘구조와 자료형 토 큰 리 터 럴 주 석 자 료 형 배 열 형.
Java의 정석 제 2 장 변수(Variable) Java 정석 남궁성 강의
4장 - PHP의 표현식과 흐름 제어-.
컴퓨터공학실습(I) 3주 인공지능연구실.
Java의 정석 제 4 장 조건문과 반복문 Java 정석 남궁성 강의
자바 5.0 프로그래밍.
Java 3장. 자바의 기본 구조 I : 변수, 자료형, 연산자 public class SumTest {
자바 5.0 프로그래밍.
컴퓨터 프로그래밍: 실습 1 제 1장 . 서론.
Lecture 05 문자열, 배열, 디버깅 Kwang-Man Ko
Choi Younghwan CSE HUFS
자바 가상 머신 프로그래밍 Chapter 3. 메소드 작성하기 Pslab 오민경.
GB ridge 웹 모바일및 빅데이터 응용과정 3주차: 데이터베이스 프로그래밍 [경기도형 대학생 취업브리지 사업]
Presentation transcript:

Department of Computer Software MyongJi University 데이터베이스 프로그래밍 Department of Computer Software MyongJi University 정보통신진흥원 데이터베이스 프로그래밍 강의교안 참조

데이터베이스 연결

JDBC와 데이터베이스 연결 JDBC 를 이용하여 데이터베이스에 연결하는 방법 DriverManager DataSource URL을 이용하여 특정 드라이버를 로딩하여 사용 DataSource JDBC 2.0 Optional Package 에서 등장한 방법 어플리케이션에 투명한 개발 가능(연결 상세사항을 캡슐화) ConnectionPoolDataSource XADataSource

드라이버 Driver 클래스 Driver 클래스 예 모든 드라이버는 java.sql.Driver를 implement한 Driver 클래스를 제공해야 한다. DriverManager 클래스에 등록되며 관리된다. Driver 클래스 예 Oracle : oracle.jdbc.driver.OracleDriver MySQL : org.gjt.mm.mysql.Driver Mini-SQL : com.imaginary.sql.msql.MsqlDriver ODBC : sun.jdbc.odbc.JdbcOdbcDriver

DriverManager(1) DriverManager 클래스 데이터베이스 드라이버(MySQL, Oracle 등)를 관리. Connection을 요구하는 URL을 처리할 수 있는 드라이버를 찾아서 Connection을 얻어준다.

DriverManager(2) DriverManager 클래스 중요 메소드 public static void registerDriver (Driver driver) throws SQLException 사용 가능한 드라이버 세트에 드라이버를 등록하고, 드라이버가 로딩될 때 무조건 호출된다. public static Connection getConnection (String url, String user, String pw) throws SQLExcpetion 클라이언트가 Connection 을 구할 때 호출한다. DriverManager 는 드라이버 세트에서 사용되는 해당 드라이버를 찾은 후에 그 드라이버의 Connection 객체를 리턴한다.

DriverManager와 데이터베이스 연결(1) 1) JDBC 드라이버 로딩 Class.forName(“JDBC 드라이버명”); 또는 DriverManager.registerDriver(“JDBC 드라이버명”); 2) JDBC 드라이버를 이용한 데이터베이스 연결 Connection con = DriverManager.getConnection (“JDBC URL”,” 사용자 계정”, “비밀번호”); JDBC URL = jdbc:<subprotocol>:<subname>

DriverManager와 데이터베이스연결(2) 예 : 오라클의 경우 1) JDBC 드라이버 로딩 Class.forName(“oracle.jdbc.driver.OracleDriver”); 또는 DriverManager.registerDriver(neworacle.jdbc.driver.OracleDriver()); 2) JDBC 드라이버를 이용한 데이터베이스 연결 thin 드라이버의 경우 Connection con = DriverManager.getConnection (“jdbc:oracle:thin:@serverName:1521:SID”,” 사용자 계정”, “비밀번호”); serverName : 예) db.sd.ac.kr SID : 예) ora9

SQL 처리

Statement 객체로 SQL 명령문 실행(1) 생성 전진과 읽기만 가능한 ResultSet 생성 Statement stmt = con.createStatement(); 스크롤과 수정 가능한 ResultSet 생성 createStatment 내에 옵션 지정 스크롤 옵션 TYPE_FORWARD_ONLY(디폴트) TYPE_SCROLL_INSENSITIVE TYPE_SCROLL_SENSITIVE 동시성 옵션(다른 트랜잭션의 수정에 영향을 받는지 여부) CONCUR_READ_ONLY CONCUR_UPDATABLE :

Statement 객체로 SQL 명령문 실행(2) ResultSet executeQuery(String sql) SQL 문 중 select문만 가능 select를 통해 추출한 값들을 Resultset형태로 리턴 예 Statement stmt = con.createStatement(); String sql = “select * from enroll”; ResultSet rs = stmt.executeQuery(sql); Int executeUpdate(String sql) SQL 문 중 select문 이외의 SQL 명령문 명령문이 영향을 끼친 row 개수(변경 개수)를 리턴 String sql = “insert into enroll (s_id,c_id,c_id_no,e_year,e_semester) values (‘123’,’C400’,3,2004,1)”; Int res = stmt.executeUpdate(sql);

Statement 객체로 SQL 명령문 실행(3) 실행(Cont’d) boolean execute(String sql) 모든 종류의 SQL문 첫번째 결과가 ResultSet이면 true, 결과가 없거나 변경 개수이면 false 리턴 실행 후, 결과에 따라 다음 명령문 추가 실행 ResultSet getResultSet() Int getUpdateCount() 예 if (stmt.execute(query) == false) { int num = stmt.getUpdateCount(); System.out.println(num + “ rows affected”); } else { ResultSet rs = stmt.getResultSet(); /* print rs */ }

ResultSet 객체로 데이터 가져오기(1) 데이터 베이스 질의에 의해 얻어진 데이터의 로우(row)를 대표하는 오브젝트 주요 메소드 결과값의 컬럼에 해당하는 정보를 얻기 위해 일련의 메소드 제공 데이터를 한번에 하나씩 처리하므로 next()로 결과값의 다음 행 지정

ResultSet 객체로 데이터 가져오기(2) 명시된 데이터 타입으로 컬럼 데이터 가져오기 xxx getXxx(String columnName) 예: resultSet.getInt(“StoreID”) xxx getXxx(int columnPosition) 이 때, columnPosition값은 0이 아니라 1로 시작 예 : resultSet.getInt(1);

ResultSet 객체로 데이터 가져오기(3) 널(NULL)값 처리하기 널 값은 주어진 컬럼에 대한 어떤 데이터도 정의되어 있지 않다는 것을 나타냄 컬럼 데이터가 널 값인 경우에 getXXX() 메소드를 호출할 때 리턴 값 오브젝트를 리턴하는 메소드 : java null 숫자를 리턴하는 메소드 : 0 getBoolean() : false 널 값 처리 방법 (널 값 유무 확인) JDBC 메소드 사용 : wasNull() 메소드 호출 SQL문 사용 : 조건 절에서 널 값 유무 확인

ResultSet 객체로 데이터 가져오기(4) 자바 데이터 타입과 SQL 데이터 타입의 맵핑 SQL 타입 자바 타입 BIT boolean DATE java.sql.Date TINYINT byte TIME java.sql.Time SMALLINT short TIMESTAMP java.sql.Timestamp INTEGER int BINARY byte[] BIGINT long VARBINARY REAL float LONGVARBINARY FLOAT double BLOB java.sql.Blob DOUBLE CLOB java.sql.Clob NUMERIC java.math.BigDecimal ARRAY java.sql.Array CHAR java.math. BigDecimal REF java.sql.Ref VARCHAR java.lang.String STRUCT java.sql.Struct LOGVARCHAR

ResultSet 객체로 데이터 가져오기(5) next() 메소드 처음 호출하는 경우 : 커서를 처음 행에 위치 처음 호출하는 것이 아닌 경우 : ResultSet을 한번에 한 행씩 전진 이동 스크롤 가능한 ResultSet의 경우는 next()이외에도 다양한 이동 방법이 존재 previous(), first(), last(), absolute(), relative() moveToInsertRow(), moveToCurrentRow()

트랜잭션 JDBC에서의 트랜잭션 데이터베이스 처리의 논리적 단위로 함께 실행되는 하나이상의 Statement JDBC에서는 어떤 방식으로 Connection 객체를 생성하더라도 AutoCommit 모드를 on 시킴 AutoCommit 모드(디폴트) 각 SQL 문장이 트랜잭션으로 간주됨 각 트랜잭션은 실행된 후 바로 커밋됨 2개 이상의 statement를 하나의 트랜잭션으로 그룹시키는 방법 AutoCommit모드를 off로 셋팅한 후 사용 예) Connection conn = DriverManger.getConnection(); Conn.setAutoCommit(false); … If (<executed-transaction---successfully>) conn.commit(); else conn.rollback();

JDBC Example (1) import java.sql.*; import oracle.jdbc.driver.*; class JDBCVersion { public static void main (String args[]) throws SQLException // Load the Oracle JDBC driver DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver()); Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:oraclets","scott","tiger"); // // Create Oracle DatabaseMetaData object DatabaseMetaData meta = conn.getMetaData(); // gets driver info: System.out.println("JDBC driver version is " + meta.getDriverVersion()); }

JDBC Example (2) import java.sql.*; import java.io.*; class SQLExample { public static void main(String[] args) throws SQLException, IOException System.out.println("Hello World!"); Connection myConn = null; Statement stmt = null, mySQL = null; DriverManager.registerDriver (new oracle.jdbc.driver.OracleDriver());

myConn = DriverManager.getConnection ("jdbc:oracle:thin:@localhost:1521:oraclets","scott","tiger"); stmt = myConn.createStatement(); ResultSet myResultSet = stmt.executeQuery("select ename from emp"); while ( myResultSet.next() ) System.out.println(myResultSet.getString(1)); stmt.close(); myConn.close(); }