jdbc
이클립스에 데이터베이스 연동하기
- JDBC 드라이브 설치
- C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib
- ojbc6 파일 copy
- Tomcat 8의 lib 폴더에 ojbc 붙여넣기
- 프로젝트에서 라이브러리에서 ojbc가 들어있는 것을 확인할 수 있음
오라클 접속 확인
- 접속
- 에러발생(오라클 서비스가 중지되어있어서 oracle 붙은 이름의 서비스는 실행시켜줌)
The Network Adapter could not establish the connection
이클립스-오라클 접속
- jdbc 로드
import java.sql.*;
Class.forName("oracle.jdbc.driver.OracleDriver");
- 데이터베이스 연결 객체인 Connection 생성
Connection con = null;
con=DriverManager.getConnection(url, uid, pwd);
- Statement 객체 생성하기
Statement stmt = con.createStatement( );
- SQL문을 실행하여 결과 처리
- ResultSet에 데이터가 저장되어있음
String str = "select * from member";
ResultSet rs = stmt.executeQuery(str);
- DAO : CRUD
- DTO : 테이블정보
- query 실행 시 에러 발생
- java.sql.SQLSyntaxErrorException: ORA-00917: missing comma
- 값에 콤마를 안찍어서 발생
Debuging
한줄한줄 내려가고 싶다: f6 해당 메소드에 들어가고싶다:f5
DBCP(DB Connection Pool)
- db query 요청할 때 마다 connect을 하면 많은 리소스를 잡아먹는다
- resource tag를 통해 DataSource를 얻음
- DataSource객체 안에 Connection Pool이 있다
- ‘server.xml’에서 Context 태그 사이에 DataResource 태그 추가
<Context docBase="JSP" path="/JSP" reloadable="true" source="org.eclipse.jst.jee.server:JSP">
<Resource auth="Container" driverClassName="oracle.jdbc.driver.OracleDriver" maxActive="100" maxIdle="30" maxWait="10000" name="jdbc/oracle" password="1234" type="javax.sql.DataSource" url="jdbc:oracle:thin:@localhost:1521:XE" username="kosta192"/>
</Context>
</Host>
- Connection을 java source code로 가져온다
- name으로 DataSource를 찾고, DataSource 안에 Connection을 가져온다
// DBCP방식으로 Connection객체 구하기
public Connection getConnection(){
DataSource ds = null;
try {
// server.xml에서 데이터리소스를 가져옴
Context ctx = new InitialContext();
ds = (DataSource)ctx.lookup("java:comp/env/jdbc/oracle");// jndi: name을 통해 리소스를 얻어옴.name이 jdbc/oracle
return ds.getConnection();
} catch (Exception e) {
// TODO: handle exception
}
return null;
}
- 결과 데이터를 가져오는 함수를 만든다
- 함수를 호출해서 Connection을 가져온다
public List<Board> listBoard(){
Connection conn = null;
try {
conn = getConnection();
System.out.println("conn:"+conn);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
- jsp에서 데이터를 가져오는 함수 호출
<%@page import="kosta.bean.BoardDao" %>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%
BoardDao dao = BoardDao.getInsance();
dao.listBoard();
%>
<!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>
</body>
</html>
<h3>글목록 보기</h3>
<a href="insert_form.jsp">글쓰기</a>
<table width="500" border="1" cellpadding='0' cellspacing='0'>
<tr>
<td>글번호</td>
<td>제목</td>
<td>작성자</td>
<td>작성일</td>
<td>조회수</td>
</tr>
<%
for(int i = 0; i < list.size(); ++i){
Board board = list.get(i);
}
%>
<tr>
<td><%= board.getSeq() %></td>
<td><%= board.getTitle() %></td>
<td><%= board.getWriter() %></td>
<td><%= board.getRegdate() %></td>
<td><%= board.getHitCount() %></td>
</tr>
<%}%>
</table>