본문 바로가기

java,jsp,spring/JSP

JSP JDBC

JDBC(Java Database Connectivity)

  • JDBC란? 자바 프로그램이 데이터베이스와 연결되어 데이터를 주고 받을 수 있게 해주는 프로그래밍 인터페이스

  • JDBC 드라이버가 없으면 HTTP 상태 500 오류 발생→ 드라이버가 제대로 설치 되어 있는지부터 확인 필요!
  • 데이터베이스 연동
    • ojdbc6.jar (oracle 폴더에서 Tomcat 라이브러리 폴더로 복사)
      • C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
      • C:\Tomcat 9.0\lib
  • JDBC를 이용한 데이터베이스 연결(Oracle)
    • DriverManager(1단계)
Class.forName(”oracle.jdbc.driver.OracleDriver”);
    • Connection(2단계)
jdbc:oracle:thin:@localhost:1521:ORCL
jdbc:oracle:thin:@localhost:1521:xe // oracle 포트, 버전
import java.sql.*;
Connection con = null;
con = DriverManager.getConnection(url, uid, pwd);
    • Statement(3단계)
Statement stmt = con.createStatement(); stmt.executeQuery() stmt.executeUpdate()
    • ResultSet(4단계)

[1, 2 단계 코드]

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.Connection"%>
<%@ 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>
	<%
		Connection conn = null;
	
		try{
			String url = "jdbc:oracle:thin:@localhost:1521:xe";
			String user = "scott";
			String password = "tiger";
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, user, password);
			out.print("데이터베이스 연결이 성공했습니다.<br>");
		}
		catch(SQLException ex){
			out.print("데이터베이스 연결이 실패했습니다.<br>");
			out.print("SQLException : "+ex.getMessage());
		} finally {
			if(conn != null) {
				conn.close();
			}
		}
	%>
</body>
</html>

[3, 4 단계 포함 코드]

<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=EUC-KR"
    pageEncoding="EUC-KR"%>
<%!
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;

	String url = "jdbc:oracle:thin:@localhost:1521:xe";
	String user = "scott";
	String password = "tiger";
	String selectQuery = "SELECT * FROM MEMBER2";
%>
<html>
<head>
<meta charset="EUC-KR">
<title>Insert title here</title>
</head>
<body>
	<table width="400" border="1">
		<tr>
			<td>아이디</td>
			<td>이름</td>
			<td>등급</td>
			<td>전화번호</td>
		</tr>
		<%
			try{
				Class.forName("oracle.jdbc.driver.OracleDriver");
				conn = DriverManager.getConnection(url, user, password);
				stmt = conn.createStatement();
				rs = stmt.executeQuery(selectQuery);
				
				while(rs.next()){
		%>
		<tr>
			<td><%= rs.getString("id") %></td>
			<td><%= rs.getString("name") %></td>
			<td><%= rs.getInt("class") %></td>
			<td><%= rs.getString("tel") %></td>
		</tr>
		<%
				}
			} catch(SQLException ex){
				ex.getMessage();
			} finally{
				try { // close 하다가 발생할 오류를 대비한 try-catch문
				if(rs != null) {
					rs.close();
				}
				if(stmt != null) {
					stmt.close();
				}
				if(conn != null) {
					conn.close();
				}
				} catch(SQLException ex){
					ex.getMessage();
				}
			}
		%>
	</table>
</body>
</html>
  • executeQuery() 메소드
    • rs.getString(1)처럼 column의 순서대로 숫자를 입력해서 사용할 수 있음
    • next() : 다음으로 이동
    • previous() : 이전으로 이동
    • first() : 첫번째로 이동
    • last() : 마지막으로 이동
String sql = “select * from member”;
ResultSet rs = stmt.executeQuery(sql);
while( rs.next() ) {
<%= rs.getString(”id”) %>
<%= rs.getString(”pw”) %>
<%= rs.getString(”name”) %>
<%= rs.getInt(”class”) %>
<%= rs.getString(”tel”) %>
}
  • executeUpdate() 메소드
    • 데이터를 추가(Insert), 삭제(Delete), 수정(Update)하는 SQL 문을 실행
    • 예시 코드
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.SQLException"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="java.sql.Connection"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("UTF-8"); %>
<%!
	Connection conn = null;
	Statement stmt = null;
	ResultSet rs = null;

	String url = "jdbc:oracle:thin:@localhost:1521:xe";
	String user = "scott";
	String password = "tiger";
%>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
	<%
		String id = "", pw = "", name = "", p1 = "", p2 = "", p3 = "", sclass="";
		id = request.getParameter("id");
		pw = request.getParameter("pw");
		name = request.getParameter("name");
		sclass = request.getParameter("mclass");
		p1 = request.getParameter("phone1");
		p2 = request.getParameter("phone2");
		p3 = request.getParameter("phone3");
		
		try{
			Class.forName("oracle.jdbc.driver.OracleDriver");
			conn = DriverManager.getConnection(url, user, password);
			stmt = conn.createStatement();
			StringBuffer insertQuery = new StringBuffer();
			insertQuery.append("INSERT INTO MEMBER2 VALUES('");
			insertQuery.append(id+"','");
			insertQuery.append(pw+"','");
			insertQuery.append(name+"','");
			insertQuery.append(sclass+"','");
			insertQuery.append(p1+"-"+p2+"-"+p3+"')");
			
			System.out.println(insertQuery.toString());
			int re = stmt.executeUpdate(insertQuery.toString());
			
			if(re == 1){
	%>
				추가 성공
				<br>
				<a href="addForm.html">추가 작업</a>
				<a href="viewMember.jsp">검색 작업</a>
	<% 
			} else {
	%>
				<font color="red">추가 실패</font>
	<%
			}
		}catch(SQLException ex){
			ex.getMessage();
	%>
			서버불량 잠시 후 다시 시도
	<%
		} finally{
			try {
			if(rs != null)	rs.close();
			if(stmt != null) stmt.close();
			if(conn != null) conn.close();
			} catch(SQLException ex){
				ex.getMessage();
			}
		}
	%>
</body>
</html>

 

'java,jsp,spring > JSP' 카테고리의 다른 글

JSP 예제 - 사용자 관리(1단계)  (0) 2022.09.03
DBCP 기법  (0) 2022.08.26
JSP 예외 처리, 자바 빈  (0) 2022.08.17
JSP 세션  (0) 2022.08.17
JSP 쿠키  (0) 2022.08.15