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
- ojdbc6.jar (oracle 폴더에서 Tomcat 라이브러리 폴더로 복사)
- 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 |