Skip to content

Latest commit

 

History

History
139 lines (95 loc) · 4.25 KB

chap07-jdbc.md

File metadata and controls

139 lines (95 loc) · 4.25 KB

JDBC

JAVA 프로그램에서 SQL문을 실행하여 데이터를 관리하기 위한 JAVA API이다.

JDBC의 특징은 다양한 데이터 베이스에 대해서 별도의 프로그램을 만들 필요 없이, 해당 데이터 베이스의 JDBC를 이용하면 하나의 프로그램으로 데이터 베이스를 관리할 수 있다.

MySQL 연동하기

  1. https://dev.mysql.com/downloads/connector/j/5.1.html 에서 Platform Independent (Architecture Independent), Compressed TAR Archive 를 다운받는다.
  2. 압축을 푼 후 mysql-connector-java-5.1.46-bin.jar 파일을 복사한다.
  3. /Library/Java/JavaVirtualMachines/jdk1.8.0_121.jdk/Contents/Home/jre/lib/ext 로 이동한 후 복사한 파일을 붙여넣는다.
  4. Eclipse 환경설정 → Installed JREs→ 설치 버전 선택 → Edit → Add External JARs 로 위의 경로에 추가한 파일을 추가해준다.
  5. DataSource Explorer → Database Connection을 우클릭 → New → MySQL 추가

해주면 성공적으로 연동 된 것을 확인할 수 있다.

JDBC 살펴보기

데이터 베이스 연결 순서

  • JDBC 드라이버 로드(DriverManager) : 메모리에 MySQL Driver가 로드된다.
Class.forName("com.mysql.jdbc.Driver");
  • 데이터베이스 연결(Connection) : Connection 객체를 생성한다.
Connection connection=DriverManager.getConnection(JDBC URL,계정아이디,비밀번호);
  • SQL문 실행(Statement) : State 객체를 통해서 SQL문이 실행된다.
Statement statement = connection.createStatement();
  • 데이터베이스 연결 해제(ResultSet) : SQL문 결과 값을 ResultSet값으로 받는다.
ResultSet rs = statement.executeQuery();
ResultSet rs = statement.executeUpdate();

Statement 객체 살펴보기

executeQuery()

SQL문 실행 후 여러 개의 결과 값이 생기는 경우에 사용한다. (ex) select

ResultSet

executeQuery() 실행 후 반환되는 레코드 셋이다.

메소드 설명
next() 다음 레코드 이동
previous() 이전 레코드로 이동
first() 처음으로 이동
last() 마지막으로 이동
get메소드 (getString, getInt) 해당되는 값을 가져온다.

executeUpdate()

SQL문 실행 후 테이블의 내용만 변경되는 경우 사용한다. (ex) insert, delete, update

예제 코드

<%@page import="javax.servlet.jsp.tagext.TryCatchFinally"%>
<%@ page import="java.sql.*" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%!
	Connection connection;
	Statement statement;
	ResultSet resultSet;
	
	String driver = "com.mysql.jdbc.Driver";
	String url = "jdbc:mysql://localhost:3306/javaproject";
	String uid = "root";
	String upw = "비밀번호";
	String query = "SELECT * FROM member";
%>    
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
	try{
		Class.forName(driver);
		connection = DriverManager.getConnection(url,uid,upw);
		statement = connection.createStatement();
		resultSet = statement.executeQuery(query);
		
        // 다음데이터가 있으면 값을 받아온다.
		while(resultSet.next()){
			String id = resultSet.getString("id");
			String pw = resultSet.getString("pw");
			String name = resultSet.getString("name");
			String phone = resultSet.getString("phone");
			
			out.println("아이디 : "+id +", 비밀번호 : "+pw+", 이름 : "+name+", 전화번호 : "+phone+"<br />");
		}
	}catch(Exception e){
	}finally{
        //데이터베이스를 연결한 자원을 해제한다.
		try{
			if(resultSet != null) resultSet.close();
			if(statement != null) statement.close();
			if(connection != null) connection.close();
		} catch(Exception e){}
	}
	%>
</body>
</html>

연결이 제대로 됐으면 올바른 값이 나오는 것을 확인할 수 있다.