1. boards 테이블에서 bwriter가 winter인 게시물의 정보를 가져오기 2. bwriter가 winter인 게시물 정보를 가져오는 SELECT 문. prepareStatement() 메소드로부터 PreparedStatement를 얻고, ?에 값을 지정 3. executeQuery() 메소드로 SELECT 문을 실행해서 ResultSet을 얻음 4. while 문을 이용해서 next() 메소드가 false를 리턴할 때까지 반복해서 데이터 행을 Board 객체에 저장하고 출력한다 5. Blob 객체에 저장된 바이너리 데이터를 얻기 위해서는 입력 스트림 또는 배열을 얻어냄 6. Blob 객체에서 InputStream을 얻고, 읽은 바이트를 파일로 저장
◎ 게시판 만들기 예제
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class BoardSelectExample {
public static void main(String[] args) {
Connection conn = null;
try {
// JDBC Driver 등록
Class.forName("oracle.jdbc.OracleDriver");
// 연결하기
conn = DriverManager.getConnection(
"jdbc:oracle:thin:@연결 주소:포트/SID",
"오라클 ID",
"오라클 PW"
);
// 매개변수화된 SQL문 작성
String sql = ""+
"SELECT bno, btitle, bcontent, bwriter, bdate, bfilename, bfiledata "
+ "FROM boards "
+ "WHERE bwriter=?";
// PreparedStatement 얻기 및 값 지정
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setString(1, "winter");
// SQL문 실행 후, ResultSet을 통해 데이터 읽기
ResultSet rs = pstmt.executeQuery();
while(rs.next()) {
// 데이터 행을 읽고 Board();
Board board = new Board();
board.setBno(rs.getInt("bno"));
board.setBtitle(rs.getString("btitle"));
board.setBcontent(rs.getString("bcontent"));
board.setBwriter(rs.getString("bwriter"));
board.setBdate(rs.getDate("bdate"));
board.setBfilename(rs.getString("bfilename"));
board.setBfiledata(rs.getBlob("bfiledata"));
// 콘솔에 출력
System.out.println(board);
// 파일로 저장
Blob blob = board.getBfiledata();
if(blob != null) {
InputStream is = blob.getBinaryStream();
OutputStream os = new FileOutputStream("C:/Temp/"+
board.getBfilename());
is.transferTo(os);
os.flush();
os.close();
is.close();
}
}
rs.close();
// PreparedStatement 닫기
pstmt.close();
} catch(Exception e) {
e.printStackTrace();
} finally {
if(conn != null) {
try {
// 연결 끊기
conn.close();
} catch (SQLException e) {}
}
}
}
}
// 출력 :
// Board(bno=10, btitle=크리스마스, bcontent=메리 크리스마스~, bwriter=winter, bdate=2023-02-14, bfilename=chrismas.jpg, bfiledata=oracle.sql.BLOB@5f049ea1)
// Board(bno=8, btitle=봄의 정원, bcontent=정원의 꽃이 이쁘네요., bwriter=winter, bdate=2023-02-14, bfilename=spring.jpg, bfiledata=oracle.sql.BLOB@909217e)
// Board(bno=9, btitle=눈오는 날, bcontent=함박눈이 내려요., bwriter=winter, bdate=2023-02-14, bfilename=snow.jpg, bfiledata=oracle.sql.BLOB@18271936)
UPDATE, DELETE, ResultSet를 이용해서 java와 오라클을 연결해보는 예제들을 수행해보았습니다.