본문 바로가기

JSP, Servlet/JSP, Oracle 기초

[JSP] 오라클 DB에 데이터 저장하기

새로운 회원 정보의 데이터베이스에 저장하는 방법

public int executeUpdate(java.lang.String sql);

 

단점:
 고정된 값만 저장할 수 있음.
 여러 행일 경우 문장을 여러 개 사용해야 함.

 

데이터 저장과 PreparedStatement

PreparedStatement 객체의 생성은 Connection 인터페이스의 preparedStatement() 메소드를 호출함.

PreparedStatement pstmt = conn.prepareStatement(sql);

매개변수:
 sql은 컬럼에 추가할 값을 직접 지정하지 않고 ?로 표시
 <예>

String sql = “insert into member values(?, ?, ?, ?, ?, ?)”; (? => 바인드 변수)

 

바인드 변수에 값 설정

setString(int 컬럼순서, 실제 값 또는 변수);
setInt(int 컬럼순서, 실제 값 또는 변수);

<예>

pstmt.setString(1, name);

pstmt.setString(2, userid);

.......

?의 위치에 알맞은 데이터를 빠짐없이 설정해 주어야 한다.

 

PreparedStatement는 연결 객체에서 미리 Query문을 전달해 주었기 때문에 executeUpdate() 메소드만 호출함.

사용이 끝나면 close()를 호출하여 PreparedStatement 객체 변수 해제.

pstmt.executeUpdate();

pstmt.close();

 

PreparedStatement는 SQL문의 종류에 따라
 select문이면 executeQuery() 메소드를 호출하고
 insert, update, delete문이면 executeUpdate() 메소드를 호출

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ page import="java.sql.DriverManager"%>
<%@ page import="java.sql.Connection"%>
<%@ page import="java.sql.Statement"%>
<%@ page import="java.sql.PreparedStatement" %>
<%!// 변수 선언
	Connection conn = null;
	Statement stmt = null;
	PreparedStatement pstmt = null;

	String url = "jdbc:oracle:thin:@localhost:1521:XE";
	String uid = "ora_user";
	String pass = "ora123";
	
	String name = "홍길동";
	String userid = "kdhong";
	String pwd = "1234";
	String email = "kdhong@email.com";
	String phone = "010-3324-2322";
	int admin = 0;
	String sql = "insert into member values(?, ?, ?, ?, ?, ?)";%>
	
	
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		try {
			Class.forName("oracle.jdbc.driver.OracleDriver");
		conn = DriverManager.getConnection(url, uid, pass);
		pstmt = conn.prepareStatement(sql);
		pstmt.setString(1, name);
		pstmt.setString(2, userid);
		pstmt.setString(3, pwd);
		pstmt.setString(4, email);
		pstmt.setString(5, phone);
		pstmt.setInt(6, admin);
		
		pstmt.executeUpdate();
	} catch (Exception e) {
		e.printStackTrace();
	} finally {
		
		try {
			
			if (pstmt != null){pstmt.close();}
		
			if (conn != null){conn.close();}
		
			
		} catch (Exception e) {
			e.printStackTrace();
		}

	}
	%>
<h3>회원 가입 성공</h3>
<a href="01_allmember2.jsp">회원 목록 보기</a>
</body>
</html>

01_allmember2.jsp는 앞에서 만든 페이지로, 데이터들을 테이블로 보여주는 페이지 입니다.

728x90
반응형