티스토리 뷰
1. JDBC의 정의 및 설정
- JDBC : Java가 DB와 통신할 수 있게 해주는 API(방법)
- JDBC에서 제공해주는 API를 이용해서, Java에서 DB로 접근하고 관리할 수 있음.
- eclipse에서도 Oracle의 API(JDBC)를 이용하기 위해서, Oracle LIB를 eclipse에 복사한다.
1-1 Classpath
- Eclipse -> Window -> Preferences -> Classpath Variables를 확인하여 자바의 lib -> ext 폴더에 오라클 API를 붙여넣으면 JDBC사용 가능
2 JDBC를 이용한 데이터 관리
2-1 JDBC 실행 순서
1) Oracle Driver 로딩 (Driver loading) ex) Class.forName(dirver);
-> Oracle Driver를 메모리에 로딩한다.
2) Java와 Oracle 연결 (connection) ex) con = DriverManager.getConnection(url, id, pw);
-> 연결을 위한 con 객체를 얻고, con객체에 url, id, pw값을 넣음으로서 인증 절차를 거친다
3) query 전송 객체 (Statement) stmt = con.createStatement();
-> Java에서 query를 전송하기 위한 객체
4) query 작성 (query) String sql = "SELECT * FROM book";
-> 실제 query문 작성
5) query 전송 (run) res = stmt.executeQuery(sql);
-> query 전송, Java와 Oracle의 통신
2-2 코드 예시
1) newBook.jsp
- name="member_id" : 사용자가 입력한 member id의 값이 들어감.
- input type="submit" : submit을 누르면 newBook이라는 servlet으로 변수들이 전송이 됨.
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
<form action="newBook" method="post">
member id : <input type="text" name="member_id"></br>
member pw : <input type="text" name="member_pw"></br>
member name: <input type="text" name="member_name"></br>
member phone : <input type="text" name="member_phone"></br>
<input type="submit" value="book register">
</form>
</body>
</html>
2) NewBook.java
- newBook.jsp의 데이터를 받는 servlet파일
- insert가 정상적으로 실행 됐으면, 문구출력
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/newBook")
public class NewBook extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
//newBook.jsp에서 사용자가 입력한 값을 name의 키워드로 받아옴
String memberID = request.getParameter("member_id");
String memberPW = request.getParameter("member_pw");
String memberName = request.getParameter("member_name");
String memberPhone = request.getParameter("member_phone");
// 실제로 데이터베이스를 사용하기 위한 코드 정의
String driver = "oracle.jdbc.driver.OracleDriver"; //Driver
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //DB의 IP와 port번호
String id = "SYS as sysdba";
String pw = "1234";
Connection con = null; //connection 객체
Statement stmt = null; // statement 객체
try {
Class.forName(driver); //driverloading
con = DriverManager.getConnection(url, id, pw);
stmt = con.createStatement();
String sql = "INSERT INTO member(ID, PW, NAME, PHONE)";
sql += " VALUES ( '" + memberID + "', '" + memberPW + "', '" + memberName + "', '" + memberPhone + "')";
int result = stmt.executeUpdate(sql);
if(result == 1) {
out.print("INSERT success!!");
} else {
out.print("INSERT fail!!");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3) NewBook2.java
- select를 수행하는 servlet파일
package com.servlet;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/newbook2")
public class NewBook2 extends HttpServlet {
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html; charset=UTF-8");
PrintWriter out = response.getWriter();
//newBook.jsp에서 사용자가 입력한 값을 받아옴
/*
String memberID = request.getParameter("member_id");
String memberPW = request.getParameter("member_pw");
String memberName = request.getParameter("member_name");
String memberPhone = request.getParameter("member_phone");
*/
// 실제로 데이터베이스를 사용하기 위한 코드 정의
String driver = "oracle.jdbc.driver.OracleDriver"; //Driver
String url = "jdbc:oracle:thin:@127.0.0.1:1521:orcl"; //DB의 IP와 port번호
String id = "SYS as sysdba";
String pw = "1234";
Connection con = null; //connection 객체
Statement stmt = null; // statement 객체
ResultSet res = null;
try {
Class.forName(driver); //driverloading
con = DriverManager.getConnection(url, id, pw);
stmt = con.createStatement();
String sql = "SELECT * FROM member";
res = stmt.executeQuery(sql); //select일 떄만 executeQuery 사용
// select from을 통해 받아온 data를 res셋에 받아놓는다.
while (res.next()) {
String memberID = res.getString("member_ID");
String memberPW = res.getString("member_PW");
String memberName = res.getString("member_NAME");
String memberPhone = res.getString("member_PHONE");
out.print("memberID : " + memberID + ", ");
out.print("memberPW : " + memberPW + ", ");
out.print("memberName : " + memberName + ", ");
out.print("memberPhone : " + memberPhone + "<br>");
}
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if(stmt != null) stmt.close();
if(con != null) con.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
/**
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
*/
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// TODO Auto-generated method stub
doGet(request, response);
}
}
3. PreparedStatement
- JDBC를 좀더 보기 좋은 코드로 작성하기 위한 방법
1) 기존 JDBC 실행 순서
2) PreparedStatement 실행 순서
*JDBC로 select 왜 안되는지. (newbook2.java 파일)
*preparedStatement 코드 작성 및 실습
'JSP > 인프런 JSP' 카테고리의 다른 글
19. Connection Pool (0) | 2020.02.23 |
---|---|
18. DAO와 DTO (2) | 2020.02.23 |
16. 데이터베이스 -1 (0) | 2020.02.21 |
14. 자바 빈 (0) | 2020.02.19 |
13. 예외 페이지 (0) | 2020.02.18 |
- 백준
- 20200503
- 20200804
- 20200406
- 20200624
- chapter7
- 20200427
- 20200317
- 20200417
- 20200512
- 20200429
- likelion
- 20200413
- 20200428
- 20200622
- 생활코딩리눅스
- 20200421
- 20200510
- 20200330
- 20200319
- 20201204
- 20200415
- 20200424
- 20200403
- 20200425
- 20200504
- 20200420
- chapter8
- 20200423
- 20200502
- Total
- Today
- Yesterday