어서와 Java는 처음이지! 제19장 데이터베이스 프로그래밍.

Slides:



Advertisements
Similar presentations
3. 메소드와 변수 SCJP 자격증 프로젝트 발표자 : 최선웅. 1. 메 소 드 개 념 2. 메 소 드 양 식 3. 메 소 드 변 수 4. 메 소 드 예 제 5. 참 고 문 헌 / 자 료 목 차.
Advertisements

어서와 Java는 처음이지! 제20장 실전프로젝트 #2.
JDBC.
10. 예외 처리.
PARK SUNGJIN Oracle 설치 PARK SUNGJIN
DB 프로그래밍 학기.
DB 프로그래밍 학기.
Ch.22 Command Pattern 장 덕 성 계명대학교 컴퓨터공학과 정보공학실험실
Selenium & Beautiful Soup
Power Java 제3장 이클립스 사용하기.
MS-Access의 개요 1강 MOS Access 2003 CORE 학습내용 액세스 응용 프로그램은 유용한 데이터를
최윤정 Java 프로그래밍 클래스 상속 최윤정
제 10 장 JDBC 프로그래밍 학기 인터넷비즈니스과 강 환수 교수.
소프트웨어시스템설계(6주) 데이터베이스 연동
주)INVENTORNICS 노창배 소프트웨어 김 경 순
컴퓨터 프로그래밍 실습 #7 제 4 장 GUI 클래스 작성.
JSP Programming with a Workbook
명품 JAVA Programming 제 17 장 JDBC 프로그래밍.
제 09 장 데이터베이스와 MySQL 학기 인터넷비즈니스과 강 환수 교수.
JDBC 프로그래밍 이수지 이동주 1.
Power Java 제2장 자바 개발 도구.
DB와 WEB 연동(1) [2-Tier] Java Applet 이용
6장 Mysql 명령어 한빛미디어(주).
MySQL 및 Workbench 설치 데이터 베이스.
(개정판) 뇌를 자극하는 Red Hat Fedora 리눅스 서버 & 네트워크
IOC, DI 2015 Web Service Computing.
Department of Computer Software MyongJi University
14장 질의응답 한빛미디어(주).
5장 Mysql 데이터베이스 한빛미디어(주).
12장. JDBC 프로그래밍.
4장. 웹로직 서버상에서의 JDBC와 JTA의 운용
임베디드 시스템 개론 크로스 플랫폼 설치 2일차 강의 자료 Embedded System Lab.
4-1장. MySQL 제13장.
CHAPTER 02 OpenCV 개요 PART 01 영상 처리 개요 및 OpenCV 소개.
Root Filesystem Porting
FTP 프로그램 채계화 박재은 박수민.
제 2 장 WML 시뮬레이터 및 무선인터넷 서버 설치
Root Filesystem Porting
                              데이터베이스 프로그래밍 (소프트웨어 개발 트랙)                               퍼스널 오라클 9i 인스톨.
모바일 자바 프로그래밍 JDBC / WAP Ps lab 오민경.
18강. 데이터 베이스 - II JDBC 살펴보기 Statement객체 살펴보기 Lecturer Kim Myoung-Ho
17강. 데이터 베이스 - I 데이터 베이스의 개요 Oracle 설치 기본적인 SQL문 익히기
8 데이터베이스 사용하기.
12 데이터베이스 사용하기.
KHS JDBC Programming 4 KHS
5장 Mysql 데이터베이스 한빛미디어(주).
You YoungSEok Oracle 설치 You YoungSEok
JDBC (Java Database Connectivity)
[INA470] Java Programming Youn-Hee Han
Method & library.
어서와 C언어는 처음이지 제14장.
CHAP 13. 방명록 만들기 실습.
JDBC Lecture 004 By MINIO.
㈜시스원이 제공하는 시스템 관리 통합 솔루션 SysmanagerOne Agent설치 안내서
2장. 데이터베이스 관리 시스템 데이터베이스 관리 시스템의 등장 배경 데이터베이스 관리 시스템의 정의
Lesson 2. 기본 데이터형.
Chapter6 : JVM과 메모리 6.1 JVM의 구조와 메모리 모델 6.2 프로그램 실행과 메모리 6.3 객체생성과 메모리
오라클 넷(Oracle Net)의 개념 및 구성
자바 5.0 프로그래밍.
CHAP 21. 전화, SMS, 주소록.
네트워크 환경 구축과 이미지 전송 호스트/타겟 통신 직렬 통신을 이용한 이미지 전송 수퍼 데몬 BOOTP 환경 구축
객체기반 SW설계 팀활동지 4.
문성우 SQL 실습 Part Ⅰ 문성우.
Chapter 10 데이터 검색1.
발표자 : 이지연 Programming Systems Lab.
maria db JDBC PROGRAMMING 5
1장 C 언어의 개요 C 언어의 역사와 기원 C 언어의 특징 프로그램 과정 C 프로그램 구조 C 프로그램 예제.
 6장. SQL 쿼리.
GB ridge 웹 모바일및 빅데이터 응용과정 3주차: 데이터베이스 프로그래밍 [경기도형 대학생 취업브리지 사업]
Ⅰ. 데이터베이스 정의 Ⅱ. MS SQL 서버 Ⅲ. 데이터베이스 인터페이스
Presentation transcript:

어서와 Java는 처음이지! 제19장 데이터베이스 프로그래밍

데이터베이스

자바와 데이터베이스 JDBC(Java Database Connectivity)는 자바 API의 하나로서 데이터베이스에 연결하여서 데이터베이스 안의 데이터에 대하여 검색하고 데이터를 변경할 수 있게 한다.

JDBC를 통하여 데이터베이스에 연결되면 그 다음 에는 SQL 명령어를 데이터베이스에 전달하면 됩니다. 데이터베이스 프로그램 개발 절차 ① DBMS(DataBase Management System)를 설치 ② 자신이 설치한 DBMS에 필요한 JDBC 드라이버를 설치한다. ③ JDBC가 제공하는 기능을 이용하여 데이터베이스 응용 프로그램을 개발한다. JDBC를 통하여 데이터베이스에 연결되면 그 다음 에는 SQL 명령어를 데이터베이스에 전달하면 됩니다.

예제 IP 주소: 125.209.222.142 public class host2ip { public static void main ( String[] args ) throws IOException String hostname = "www.naver.com"; try InetAddress address = InetAddress.getByName(hostname); System.out.println("IP 주소: " + address.getHostAddress()); } catch ( UnknownHostException e ) System.out.println(hostname + "의 IP 주소를 찾을 수 없습니다. " ); IP 주소: 125.209.222.142

데이터베이스란? 관계형 데이터베이스(database)는 데이터를 여러 개의 테이블에 나누어서 저장한다. 가장 많이 사용되는 DBMS 오라클, 마이크로소프트의 SQL Server, 사이베이스, MySQL

테이블 테이블의 하나의 행(row)은 레코드(record)라고 불린다. 이 레코드는 여러 개의 컬럼(column)으로 이루어져 있고, 테이블은 무결성 법칙을 따라서 작성되어야 한다

MySQL MySQL은 www.mysql.com 에서 다운로드

SQL이란? 관계형 데이터베이스에서 사용하기 위하여 설계된 언어

MySQL에서 SQL 실행하기 MySQL은 다음과 같은 명령어 행 클라이언트를 가지고 있다.

데이터베이스 생성하기

레코드 추가하기

레코드 검색하기

검색시 조건 지정

정렬하려면

레코드 수정하기

레코드 삭제하기

결과 집합과 커서 쿼리의 조건을 만족하는 레코드들의 집합이 결과 집합(result set)이다. 커서(cursor)는 결과 집합의 레코드들을 포함하고 있는 파일에 대한 포인터 레코드 커서 ….. ..… ….. ..… ….. ..… ….. ..… 결과 집합

JDBC 드라이버 설치 1. http://dev.mysql.com/downloads/connector/j/로부터 드라이버를 다운로드받아서 압축을 푼다. 2. 다음은 자바 가상 기계가 이 드라이버 파일을 찾을 수 있도록 하여야 한다. 클래스 경로를 나타내는 환경 변수인 CLASSPATH를 변경 또는 압축된 아카이브 파일을 jre/lib/ext 디렉토리에 복사

지정된 이름의 클래스를 찾아서 메모리로 적재한다. 드라이버 클래스 적재 try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e) { System.out.println("드라이버를 찾을 수 업습니다“); 지정된 이름의 클래스를 찾아서 메모리로 적재한다.

사용자 아이디와 패스워드를 사용하여 데이터베이스에 연결. 데이터베이스 연결 String url = “jdbc:mysql://localhost/book_db”; String user = “root”; String password = “password”; con = DriverManager.getConnection(url, user, password); 사용자 아이디와 패스워드를 사용하여 데이터베이스에 연결.

데이터베이스 연결 예제 import java.sql.*; public class ConnectDatabase { public static Connection makeConnection() { String url = "jdbc:mysql://localhost/book_db"; String id = "root"; String password = "password"; Connection con = null; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("드라이버 적재 성공"); con = DriverManager.getConnection(url, id, password); System.out.println("데이터베이스 연결 성공"); } catch (ClassNotFoundException e) { System.out.println("드라이버를 찾을 수 없습니다."); } catch (SQLException e) { System.out.println("연결에 실패하였습니다."); } return con;

데이터베이스 연결 예제 드라이버 적재 성공 데이터베이스 연결 성공 public static void main(String arg[]) throws SQLException { Connection con = makeConnection(); } 드라이버 적재 성공 데이터베이스 연결 성공

SQL 문장 수행

SQL 문장 수행 Statement s = con.createStatement(); // 문장 객체 생성 String select = “SELECT * FROM books ORDER BY book_id”; // SQL 문장 생성 ResultSet rows = s.executeQuery(select); // SQL 문장 실행 SQL문장을 실행하고 결과 집합을 반환한다.

데이터베이스 연결 예제 import java.sql.*; public class SQLSelectTest { public static Connection makeConnection() { ... // 앞의 코드와 동일 } public static void main(String arg[]) throws SQLException { Connection con = makeConnection(); Statement stmt = con.createStatement(); ResultSet rs = stmt.executeQuery("SELECT * FROM books"); while (rs.next()) { int id = rs.getInt("book_id"); String title = rs.getString("title"); System.out.println(id + " " + title); 결과 집합에서 다음 레코드로 이동한다. 현재 레코드에서 필드의 값을 가져온다.

실행 결과 드라이버 적재 성공 데이터베이스 연결 성공 1 Operating System Concepts 2 Head First PHP and MYSQL 3 C Programming Language 4 Head First SQL

레코드 수정, 삭제 import java.sql.*; public class SQLInsertTest { public static Connection makeConnection() { ...// 전과 동일 } public static void main(String arg[]) { addBook("Artificial Intellegence", "Addison Wesley", "2002", 35000);

레코드 수정, 삭제 private static void addBook(String title, String publisher, String year, int price) { Connection con = makeConnection(); try { Statement stmt = con.createStatement(); String s = "INSERT INTO books (title, publisher, year, price) VALUES "; s += "('" + title + "','" + publisher + "','" + year + "','" + price + "')"; System.out.println(s); int i = stmt.executeUpdate(s); if (i == 1) System.out.println("레코드 추가 성공"); else System.out.println("레코드 추가 실패"); } catch (SQLException e) { System.out.println(e.getMessage()); System.exit(0); } 레코드를 수정할때 사용.

실행 결과 드라이버 적재 성공 데이터베이스 연결 성공 INSERT INTO books (title, publisher, year, price) VALUES ('Artificial Intellegence','Addison Wesley','2002','35000') 레코드 추가 성공

LAB: 데이터베이스 레코드 뷰어 작성 다음과 같이 그래픽 사용자 인터페이스를 이용하여 데이터베이스 테이블의 내용을 화면에 표시하는 프로그램을 작성하여 보자.

SOLUTION class MyFrame extends JFrame { JTextField id, title, p, year, price, author; JButton previousButton, nextButton, InsertButton, deleteButton, searchButton; ResultSet rs; Statement stmt; public MyFrame() throws SQLException { super("Database Viewer"); Connection con = makeConnection(); stmt = con.createStatement(); rs = stmt.executeQuery("SELECT * FROM books"); setLayout(new GridLayout(0, 2)); add(new JLabel("ID", JLabel.CENTER)); add(id = new JTextField()); add(new JLabel("TITLE", JLabel.CENTER)); add(title = new JTextField()); add(new JLabel("PUBLISHER", JLabel.CENTER)); add(p = new JTextField()); add(new JLabel("YEAR", JLabel.CENTER)); add(year = new JTextField()); add(new JLabel("PRICE", JLabel.CENTER)); add(price = new JTextField()); add(new JLabel("저자 검색", JLabel.CENTER)); add(author = new JTextField());

SOLUTION previousButton = new JButton("Previous"); previousButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { try { rs.previous(); id.setText("" + rs.getInt("book_id")); title.setText("" + rs.getString("title")); p.setText("" + rs.getString("publisher")); year.setText("" + rs.getString("year")); price.setText("" + rs.getInt("price")); } catch (SQLException e) { e.printStackTrace(); } });

SOLUTION nextButton = new JButton("Next"); nextButton.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { try { rs.next(); id.setText("" + rs.getInt("book_id")); title.setText("" + rs.getString("title")); p.setText("" + rs.getString("publisher")); year.setText("" + rs.getString("year")); price.setText("" + rs.getInt("price")); } catch (SQLException e) { e.printStackTrace(); } }); add(nextButton); add(previousButton); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setSize(350, 200); // pack(); setVisible(true);

SOLUTION public static Connection makeConnection() { String url = "jdbc:mysql://localhost/book_db"; String id = "root"; String password = "password"; Connection con = null; try { Class.forName("com.mysql.jdbc.Driver"); System.out.println("드라이버 적재 성공"); con = DriverManager.getConnection(url, id, password); System.out.println("데이터베이스 연결 성공"); } catch (ClassNotFoundException e) { System.out.println("드라이버를 찾을 수 없습니다."); } catch (SQLException e) { System.out.println("연결에 실패하였습니다."); } return con; public class SQLSelectTest { public static void main(String[] args) throws SQLException { new MyFrame();

Q & A