1 / 60

데이터베이스와 JDBC

데이터베이스와 JDBC. 데이터베이스 기본 개념을 이해한다 기본적인 SQL 문을 익힌다 오라클 데이터베이스의 사용 방법을 익힌다 자바에서 데이터베이스를 사용하는 JDBC 사용 방법을 익힌다. 데이터베이스 개요. 데이터베이스 (Database) 여러 사람이 공유해서 사용할 목적으로 , 체계적으로 정리된 정보를 효율적으로 관리하고 검색할 수 있는 정보의 집합 . 생활 속의 데이터베이스 휴대폰의 전화번호 목록 . ㄱ , ㄴ , ㄷ 으로 정리된 수첩의 주소록 .

Download Presentation

데이터베이스와 JDBC

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 데이터베이스와 JDBC • 데이터베이스 기본 개념을 이해한다 • 기본적인 SQL문을 익힌다 • 오라클 데이터베이스의 사용 방법을 익힌다 • 자바에서 데이터베이스를 사용하는 JDBC 사용방법을 익힌다

  2. 데이터베이스 개요 • 데이터베이스(Database) • 여러 사람이 공유해서 사용할 목적으로, • 체계적으로 정리된 정보를 효율적으로 관리하고 검색할 수 있는 정보의 집합. • 생활 속의 데이터베이스 • 휴대폰의 전화번호 목록. • ㄱ,ㄴ,ㄷ 으로 정리된 수첩의 주소록. • 거의 모든 프로그램은 어떠한 형태로든 데이터베이스와 연결됨. • 데이터베이스와 DBMS • 데이터베이스 관리 시스템(DBMS, Database Management System) • 데이터베이스를 구성하고 운영하기 위해 구성된 소프트웨어 시스템 • 오라클, SQL 서버 등 일반적으로 알고 있는 데이터베이스 제품이 DBMS다. • 오라클 데이터베이스와 MySQL • 오라클은 전세계에서 가장 많이 사용되는 상용 DBMS. • MySQL은 무료로 중소규모 웹사이트개발에 많이 사용됨.

  3. 총무처 학생처 학과 교무처 학생 등록금 고지서 파일 학생 DM 파일 학생 주소록 파일 성적 처리 파일 친구 주소록 파일시스템 • 파일시스템 • 데이터를 저장한 파일을 데이터파일(Data File) 이라고 함. • 파일시스템은 데이터를 관리하는 기본. • 파일시스템의 문제점 • 데이터중복, 데이터의 불일치. • 데이터의 공유가 어려움. • 데이터 용량증가에 따른 검색효율 저하. • 데이터에 대한 보안성 미비. • 텍스트 위주의 데이터 관리.

  4. 총무처 학생처 학과 교무처 학생 데이터베이스 관리 시스템(DBMS) 학사 관리 통합 데이터베이스 (학생 정보, 성적 정보, 등록금 정보, 기타) 데이터베이스 도입 장점 • 중복성 최소화 • 데이터 불일치성 해결 • 데이터 공유 편이성 • 정보 표준화 유리 • 데이터 보안성 제공 • 데이터 무결성 유지 • 대량 데이터의 빠른 검색 • 다양한 데이터 관리 가능 • 이미지 파일 등 • 응용 프로그램 개발이 쉽다.

  5. 데이터베이스 구분 • 파일(파일시스템) • 세그먼트(계층형 데이터베이스 관리시스템 : HDBMS) • 테이블(관계형 데이터베이스 관리시스템 : RDBMS) • 데이터에 관계 개념 부여 • 대부분의 데이터베이스가 관계형 데이터베이스 • 레코드타입(네트워크형 데이터베이스 관리시스템 : NDB) • 클래스(객체지향형 데이터베이스 관리시스템 : OO/ORDB) • 객체지향개념을 데이터베이스에 부여 • 객체지향 도입 확대로 주목  관계형의 완전한 대체는 아님 • 관계형 데이터베이스 + 객체지향형 데이터베이스 -> ORDB

  6. 테이블 구성요소 • 테이블 • 데이터에서 공통 속성 분류 • 테이블명 : 학생정보 테이블(MEMBER) • 컬럼 • 데이터를 구별하기 위한 속성 • 컬럼 혹은 필드라 불림 • 컬럼 이름 : 이름(member), 성멸(sex), 거주지(city)… • 로우 • 한 줄 단위의 데이터 집합(하나의 데이터 그룹) • 첫번째 로우 : 홍길동, 남, 서울, 1980, 02-345-0987 • 테이블 구성요소가 가지는 특징 • 로우는 하나의 데이터만 표시할 수 있다. • 그룹이나 배열의 형태는 허용하지 않는다. • 각각의 컬럼에는 특정한 형태의 값만을 가질 수 있다. • 모두 로우의 데이터는 해당 컬럼에서 요구하는 형태의 값만을 포함.

  7. 홍길동, 서울, 1980, 02-345-0987, 남 강동수, 남, 인천, 1981, 032-143-1239 대구, 홍길동, 여, 1982, 011-987-2321 기동차, 1980, 여, 서울, 02-432-9564 컬럼 성별 이름 거주지 출생년도 전화번호 컬럼 명 남 홍길동 서울 1980 02-345-0987 남 강동수 인천 1981 032-143-1239 로우 여 홍길동 대구 1982 011-987-2321 여 기동차 서울 1980 02-432-9564 테이블 구성요소 • 테이블은 데이터베이스 관리의 기본단위

  8. 데이터베이스 키 • 데이터베이스 키 • 서로 다른 로우를 구분하기 위한 특징을 가진 필드. • 관계형 데이터베이스의 특징 • 주키(Primary Key) • 테이블내 데이터를 구분해 주는 유일한 값을 대표하는 키. • 학번, 주민등록번호, 접수번호 등 중복되지 않는 유일한 값. • 외래키(Foreign Key) • 테이블간의 관계를 표현. • 데이터 일관성 유지. • 대표적으로 코드 테이블을 참조하기 위해 사용.

  9. 데이터베이스 키 • 데이터베이스 키 • 주키와 외래키의 관계 예시

  10. Create Table 테이블 생성 Alter Table 테이블 구조 변경 DDL Drop Table 테이블 삭제 SQL 문 Select 데이터 조회 Insert 데이터 삽입 DML Delete 데이터 삭제 Update 데이터 수정 SQL 개요 • Structured Query Language • 표준화된 데이터베이스 질의어 • DML(Data Manipulation Language)과 DDL(Data Definition Language)로 구분

  11. 데이터베이스 자료형 • 데이터베이스에 저장되는 데이터의 유형 정의. • 데이터베이스 종류마다 자료형 이름에 차이가 있음. • 기본적으로 숫자형, 문자형, 바이너리형, 날짜형. • 가변형 문자열은 길이를 고정하지 않기 때문에 관리에 유리. • 이미지화일등의 저장에는 바이너리형이 필요함. • 날짜 기간 검색 등을 위해서는 날짜형을 반드시 사용해야 함. • 숫자를 문자형으로 저장한 경우에는 +,- 등 연산이 되지 않음. • 사용 목적에 따라 신중히 결정해야 함.

  12. 자료형 설명 크기 CHAR(size) 고정 길이 문자열 최대 255문자 DATE 날짜형(형식은 지정 가능) LONG 가변 길이 문자열 최대 2G Byte LONG RAW 바이너리 데이터 최대 2G Byte NUMBER NUMBER(n) NUMBER(p,s) 숫자 데이터(정수, 실수 등) 최대 38자리 정수, 실수 최대 n byte 정수 p=소수점을 제외한 자리수, s=소수점 이하 자리수 VARCHAR2(size) 가변 길이 문자열 데이터 최대 2000 문자 CLOB 1바이트 문자를 처리하는 대용량 자료형 최대 4G byte NCLOB 2바이트를 포함한 다국어 문자를 처리하는 대용량 자료형 최대 4G byte BLOB 바이너리 데이터를 처리하는 대용량 자료형 최대 4G byte 오라클 데이터베이스 자료형

  13. id id username username dept dept birth birth email email SQL 기본 문법 • create table : 테이블 생성 CREATE TABLE 테이블명 ( 컬럼명 데이터형(크기) 옵션, 컬럼명 데이터형(크기), … ) CREATE TABLE member ( id NUMBER NOT NULL Primary Key, username VARCHAR2(20), dept VARCHAR2(7), birth DATE, email VARCHAR2(40) )

  14. id id username username dept dept birth birth email email email tel SQL 기본 문법 • alter table : 테이블 구성 정보 수정 • 형식 ALTER TABLE 테이블명 [SQL 명령어] (컬럼명 데이터형) • 사용 예 ALTER TABLE member add (tel varchar2(30) NOT NULL) ALTER TABLE member modify (username varchar2(10))

  15. SQL 기본 문법 • delete table : 테이블 삭제 • 형식 DROP TABLE 테이블명 • 사용 예 DROP TABLE member

  16. id username dept birth email 200701 홍길동 정보기술 85.08.10 test@test.net 200702 아무개 정보기술 85.10.02 tt@tt.net … SQL 기본 문법 • select : 테이블 데이터 조회 • 형식 SELECT 컬럼명 FROM 테이블명 WHERE 조건 • 사용 예 SELECT * FROM member WHERE id = “200701” SELECT id, username, birth FROM member WHERE id = 200701 AND name=”홍길동”

  17. id username dept birth email 200701 홍길동 정보기술 85.08.10 test@test.net 200702 아무개 정보기술 85.10.02 tt@tt.net 200703 강기동 정보기술 85.04.12 my@my.net SQL 기본 문법 • insert : 테이블에 데이터 추가 • 형식 INSERT INTO 테이블명(삽입할 컬럼명…) VALUES(컬럼에 넣을 값…) • 사용 예 • 테이블에 정의된 컬럼 순서대로 모든 컬럼 데이터가 들어감. INSERT INTO member values(200703,”강기동”,”정보기술”,”85.04.12”,”my@my.net”) • 지정된 필드의 순서에 따라 데이터가 들어감. INSERT INTO member(id,gwa,name) values(200701, ”정보기술”,”홍길동”)

  18. id username dept birth email 200701 홍길동 정보기술 85.08.10 test@test.net 200702 아무개 정보기술 85.10.02 tt@tt.net 200705 이쁜이 SQL 기본 문법 • update : 테이블 데이터 수정 • 형식 UPDATE 테이블명 set 컬럼명 = 수정할 값1, field = 수정할 값2 … WHERE 조건 • 사용 예 UPDATE member set id = 200705, name=”이쁜이” WHERE id = 200702

  19. id username dept birth email 200701 홍길동 뉴미디어 85.08.10 test@test.net 200702 아무개 뉴미디어 85.10.02 tt@tt.net SQL 기본 문법 • delete : 테이블 데이터 삭제 • 형식 DELETE FROM 테이블명 WHERE 조건 • 사용 예 DELETE FROM member WHERE id = 200701 DELETE FROM member WHERE id = 200701 AND name=”홍길동

  20. 플 리 케 이 션 오라클 JDBC 드라이버 오라클 DBMS 구현 JDBC 드라이버 관리자 사용 MySql DBMS MySql JDBC 드라이버 인포믹스 JDBC 드라이버 인포믹스 DBMS JDBC 개념과 역할 • JDBC(Java Database Connectivity) 구조 • 자바에서 데이터베이스를 표준화 된 방법으로 접속할 수 있도록 만든 API 규격 • 각 데이터베이스 접속에 대한 상세한 정보를 알 필요 없음. • 데이터베이스 벤더와 상관없이 동일한 개발이 가능함

  21. 자바 애플리케이션 JDBC API JDBC 드라이버 관리자 JDBC 드라이버 API JDBC-ODBC 드라이버 Net-Protocol 드라이버 Native-Protocol 드라이버 Native-API 드라이버 ODBC 드라이버 JDBC 미들웨어 DBMS DBMS DBMS DBMS DBMS JDBC 드라이버 유형

  22. JDBC 드라이버 설치 • JDBC 드라이버 선택 • JDBC 드라이버는 사용하고자 하는 데이터베이스 벤더 별로 제공 됨 • 오라클 JDBC드라이버 • c:\jsp\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar • 설치 디렉터리(다음 중 한 가지를 이용함) • JDK설치디렉터리\jre\lib\ext\ 에 복사하는 방법. • 톰캣설치디렉터리\common\lib 폴더에 복사하는 방법 • 이클립스 프로젝트의 WebContent\WEB-INF\lib 폴더에 복사하는 방법

  23. JDBC 프로그래밍 단계

  24. 1. 데이터베이스 드라이버 로드 • jdbc.drivers 환경변수 이용 System.setProperty( “jdbc.drivers”, “oracle.jdbc.driver.OracleDriver”); • DriverManager 클래스가 초기화 될 때 자동으로 해당 드라이버를 로드 • Class.forName() 이용 Class.forName(“oracle.jdbc.driver.OracleDriver”); • 프로그램 코드에서 로드 • 드라이버가 로드되면 프로그램을 작성 할 수 있는 상태가 된 것을 의미

  25. 2. 데이터베이스 연결 • 실제 데이터베이스와의 연결을 위해 Connection 클래스의 인스턴스가 필요 • DriverManger.getConnection()를 이용해 레퍼런스를 얻는다. Connection conn = DriverManger.getConnection( JDBC_URL, ”아이디”, ”비밀번호”); • 아이디, 비번 : 시스템에 로그인 하는 계정이 아니라 데이터베이스 자체에서 관리하는 계정 • JDBC_URL 구조 JDBC:<서브프로토콜>:<데이터 원본 식별자> JDBC:oracle:thin:@IP주소:포트:SID • IP주소: 오라클이 설치된 컴퓨터의 IP주소 • 포트: 리스너의 사용 포트, 기본값 1521 • SID: 오라클 인스턴스 이름으로 MySQL에서는 DB 이름으로도 불림, 생략가능

  26. 3-1. Statement 생성 및 쿼리 실행 • Statement는 SQL 문장을 수행할 수 있도록 하는 클래스 • createStatement() Statement stmt = conn.createStatement(); stmt.executeUpdate(“insert into test values (‘ “+request.getParameter("username")+“ ‘, ‘ "+request.getParameter("email")+“ ')");

  27. 3-2. Statement 생성 및 쿼리 실행 • prepareStatement 생성 • PreparedStatement는 객체 생성시 SQL 문장을 미리 만들어 두고 • 변수 부는 별도의 메서드로 대입하는 방식, 성능과 관리 면에서 권장 되는 방식임 • prepareStatement() PreparedStatement pstmt = conn.prepareStatement(“insert into test values(?,?)”); pstmt.setString(1, request.getParameter("username"); pstmt.setString(2, request.getParameter("email"); pstmt.executeUpdate(); // int count = pstmt.executeUpdate(); • Statement의 close stmt.close(); pstmt.close();

  28. 4. Statement 쿼리 실행 • executeUpdate() • 데이터의 입력, 수정, 삭제시 사용 • 리턴값 : int, 처리된 데이터의 수 • Statement Statement stmt = conn.createStatement(); stmt.executeUpdate(); • PreparedStatement PreparedStatement pstmt = conn.prepareStatement(“insert into test values(?,?)”); pstmt.executeUpdate(); // int count = pstmt.executeUpdate();

  29. 5-1. 결과 받기 • executeQuery() 사용 • select문의 결과를 받기 위해 사용 • 리턴값 : ResultSet 클래스의 인스턴스 • 결과를 row단위로 가져올 수 있음 : next()메서드 사용 • getXXX() 메소드 : String, int, long, Date등 다양한 데이터를 처리 ResultSet rs=pstmt.executeQuery(); while(rs.next()) { name = rs.getString(1); // or rs.getString(“name”); age = rs.getInt(2); // or rs.getInt(“email”); } rs.close();

  30. 5-2. 결과 받기

  31. 6. 연결해제 conn.close(); • Connection 을 close()해주지 않으면 사용하지 않는 연결이 유지됨. • close()해주지 않으면 사용하지 않으면 DB 자원을 낭비하게 됨. • 주의 : 순차적으로 close() rs.close();// ResultSet close conn.close(); // connect close

  32. DB 서버 ①DB 연결: server IP, DB userID, userPass, SID(DB) ②쿼리 전달 ④결과 전달 ③ 리스너 웹 서버(톰캣) DB 1 DB 2 DB 3 클라이언트 JDBC 프로그래밍 동작 과정 - 정리

  33. 오라클 데이터베이스 설치 및 설정 • 대표적 데이터페이스인 오라클 10g Express 버전 설치 • 오라클 관련 설정 항목 및 포트 변경 실습 • 오라클 사용자 생성 및 기본 도구 사용법 실습

  34. 오라클 10g XE 데이터 베이스 설치 1 • 설치 파일의 위치 : 다운로도 또는 부록 CD • 설치 위치 : c:\jsp\oracle10xe • OracleXEUniv.exe 파일을 실행한다. • 라이센스 동의 • 설치디렉토리 c:\jsp\oraclexe • 암호지정 : jsppasswd • 설치시 "방화벽 관련 연결시도" 메세지가 나오면 "허용"을 선택한다. • 설치종료후 “데이터베이스 홈페이지 시작”은 선택하지 않는다. • 오라클 포트 변경 • 시작->실행->cmd 입력 ->명령 창 실행 • SQL plus 실행 : sqlplus/nolog • 데이터베이스 접속 : CONNECT SYSTEM/설치할 때 입력한 패스워드 • 포트 변경 명령 수행 : EXEC DBMS_XDB.SETHTTPPORT(8087); • SQL plus 종료 : exit

  35. 오라클 10g XE 데이터 베이스 설치 2 • 오라클 데이터베이스 홈페이지 접속 • 브라우저에서 : http://127.0.0.1:8087/apex • 사용자 이름 : SYSTEM • 패스워드 : jsppasswd • 사용자 생성 • 오라클 데이터베이스 홈페이지에서 : 관리->데이터베이스 사용자->사용자생성 선택 • 사용자 이름 : jspdbuser, 암호 – jsppasswd • "생성" 버튼을 눌러 사용자 생성 • JDBC 드라이버 설치 • c:\jsp\oracle10xe\app\oracle\product\10.2.0\server\jdbc\lib 에 있는 ojdbc14.jar 를 • 톰캐설치 디렉토리 c:\jsp\tomcat5\common\lib 에 복사 • 이클립스 디렉토리 c:\jsp\work\jsptest\WebContent\WEB-INF\lib 에 복사

  36. 이클립스 개발환경 구성 1 • 연결 설정 1 • 이클립스 실행 • oracle 데이터 베이스 실행 확인 : 시작메뉴->오라클 • 창 -> 보기 표시 -> 기타 -> Data -> Database Explorer 선택 • 중앙하단 -> Connecttions -> 마우스 오른쪽 버튼 -> New Connection 선택

  37. 이클립스 개발환경 구성 2 • 연결 설정 2 • Oracle 10버전 선택 -> 사용자 정보 -> • 사용자 이름 : jspdbuser, 암호 : jsppasswd • 오른쪽 세부 연결 정보 -> • 사용자가 이용할 데이터 베이스로 USERS 입력, • Oracle JDBC 클래스 이름 oracle.jdbc.driver.OracleDriver 입력 • 클래스 위치 • Browse 버튼 선택 -> • c:\jsp\oraclexe\app\oracle\product\10.2.0\server\jdbc\lib\ojdbc14.jar 선택 • 접속 URL : jdbc:oracle:thin:@127.0.0.1:1521 • SID 생략 • 연결 성공 확인 : Test Connection

  38. 이클립스 개발환경 구성 3

  39. 이클립스 개발환경 구성 4 • 필터 설정 • Database Explorer에서 불필요한 정보를 보여주지 않도록 지정하기 위한 것(해당 사용자의 데이터 베이스 객체들만 보여주게 됨) • Disable filter의 체크를 해제 -> Selection으로 변경 -> jspdbuser만 선택 • 이렇게 한번만 설정해두면 이후 이클립스에서 언제든지 Database Explorer를 이용해 데이터 베이스 사용 가능

  40. 이클립스에서 데이터 베이스 구성 1 • jsptest 프로젝트 -> WebContent 폴더 아래 -> test 폴더 아래 -> sql 폴더 • sql 폴더를 선택한 상태에서 오른쪽 마우스 클릭 -> 새로작성-> 기타-> Data -> Sql Scrapbook Page 선택

  41. 이클립스에서 데이터 베이스 구성 2 • 파일 이름 : jdbc_test -> 완료 -> 메모장편집기 상태에서 SQL문 작성 -> 저장 CREATE TABLE jdbc_test ( username VARCHAR2(12), email VARCHAR2(50) )

  42. 이클립스에서 데이터 베이스 구성 3 • 편집기 창에서 오른쪽 마우스 클릭 -> Run SQL 선택

  43. 이클립스에서 데이터 베이스 구성 4 • Use an existing connection 선택 -> USERS 지정 -> 완료 -> SQL문 실행

  44. 이클립스에서 데이터 베이스 구성 5 • 생성된 테이블 확인 • Database Explorer 뷰 -> USERS Oracle 10 -> USERS -> jsptest -> Tables -> 오른쪽 마우스 클릭 -> Refresh

  45. JDBC 프로그래밍 • 과제 개요 • 간단한 등록 양식을 통해 데이터베이스 연동 프로그램 작성 • 오라클 데이터베이스와 JDBC를 이용한 프로그래밍 기술 습득 • 이클립스 및 오라클 관리도구를 이용한 SQL 관리 실습

  46. jdbctest.jsp (1) <%@ page import="java.sql.*" %> <% request.setCharacterEncoding("euc-kr"); %> <% // 데이터베이스 연결관련 변수 선언 Connection conn = null; Statement stmt = null; // 데이터베이스 연결관련정보를 문자열로 선언 String jdbc_driver = "oracle.jdbc.driver.OracleDriver"; String jdbc_url = "jdbc:oracle:thin:@127.0.0.1:1521";

  47. jdbctest.jsp (2) try{ // JDBC 드라이버 로드 Class.forName(jdbc_driver); // 데이터베이스 연결정보를 이용해 Connection 인스턴스 확보 conn = DriverManager.getConnection(jdbc_url,“jspdbuser",“jsppasswd"); // Connection 클래스의 인스턴스로 부터 SQL 문 작성을 위한 Statement 준비 stmt = conn.createStatement(); // username 값을 입력한 경우 sql 문장을 수행. if(request.getParameter("username") != null) { String sql = "insert into jdbc_test values('"+request.getParameter("username")+"','"+request.getParameter("email")+"')"; stmt.executeUpdate(sql); } } catch(Exception e) { System.out.println(e); } %>

  48. jdbctest.jsp (3) <HTML> <HEAD><TITLE>JDBC 테스트 </TITLE></HEAD> <BODY> <center> <H2>이벤트 등록</H2> <HR> <form name=form1 method=post action=jdbctest.jsp> 등록이름 : <input type=text name=username> email주소 : <input type=text name=email size=20> <input type=submit value="등록"> </form> <HR> </center> # 등록 목록<P>

  49. jdbctest.jsp (4) <% try{ // select 문장을 문자열 형태로 구성한다. String sql = "select username, email from jdbc_test"; // select 를 수행하면 데이터정보가 ResultSet 클래스의 인스턴스로 리턴됨. ResultSet rs = stmt.executeQuery(sql); int i=1; // 마지막 데이터까지 반복함. while(rs.next()) { out.println(i+" : "+rs.getString(1)+" , "+rs.getString("email")+"<BR>"); i++; } // 사용한 자원의 반납. rs.close(); stmt.close(); conn.close(); } catch(Exception e) { System.out.println(e); } %> </BODY> </HTML>

  50. jdbctest.jsp 실행

More Related