본문 바로가기

닷컴's_열공/JAVA

파일 읽어서 db에 저장, db서 data 읽어와서 파일로 저장

아래는 파일에 c:\\adsl.exe 라는 파일을 저장하고,
파일을 읽어오는 것입니다.

급하게 작성하느라 exception 처리를 완전히 하지 않았습니다.
java.sql 패키지에 있는 PreparedStatement 의 setBinaryStream과
getBinaryStream 을 이용하기 바랍니다.

또한, 테이블 생성시에은 long raw 타입을 이용해야 합니다.

그럼 즐거운 날 되십시요.

데이터 베이스는 oracle8.1.6 을 사용하였으며 jdbc 드라이버는
classes12.zip 을 이용하였습니다.

---------------------------------------------------------------

파일저장하기 JdbcTest.java

/*------------------------------------------------------------
아래와 같은 테이블을 만든다. 파일을 저장하기 위하여는 blob 데이터
타입을 이용한다.
SQL> create table testblob
  2  ( name varchar2(20),
  3    datafile long raw );
--------------------------------------------------------------*/

import java.io.*;
import java.util.*;
import java.sql.*;

public class JdbcTest
{
    public static void main(String args[])
{
try{
  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  Connection con =
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:sid","id","passwd");
  if(con == null)
  {
System.out.println("con is null");
  }
  java.io.File f = new java.io.File("c:\\adsl.exe");
  FileInputStream fis = new FileInputStream("c:\\adsl.exe");
  PreparedStatement ps = con.prepareStatement("insert into testblob values ( ?, ? )");
  ps.setString(1,"adsl.exe"); // 1번째 칼럼에 파일명지정
  ps.setBinaryStream(2, fis, (int)(f.length()));
  ps.executeUpdate(); // 실제 query 의 수행
  ps.close();
  con.close();
}catch(SQLException e)
{
System.out.println(e);
}catch(IOException ioe)
{
System.out.println(ioe);
}
}
} // end JdbcTest

------------------------------------------------------------
데이터베이스에서 데이터를 읽어와서 파일로 저장하기

import java.io.*;
import java.util.*;
import java.sql.*;

public class JdbcTest2
{
    public static void main(String args[])
{
try{
  DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
  Connection con =
DriverManager.getConnection("jdbc:oracle:thin:@127.0.0.1:1521:sid","id","passwd");
  if(con == null)
  {
System.out.println("con is null");
  }
  PreparedStatement ps = con.prepareStatement("select datafile from testblob");
  ResultSet rs = ps.executeQuery();
  rs.next();
  InputStream is = rs.getBinaryStream(1);
  FileOutputStream fos = new FileOutputStream("c:\\adsl2.exe");
  int i = 0;
  while((i = is.read()) != -1)
  {
fos.write(i);
  }
  fos.close();
  is.close();
  con.close();
}catch(SQLException e)
{
System.out.println(e);
}catch(IOException ioe)
{
System.out.println(ioe);
}
}
} // end JdbcTest

'닷컴's_열공 > JAVA' 카테고리의 다른 글

형변환 Integer.parseInt와 Integer.valueOf의 차이점  (1) 2007.12.27
아래는 파일에 c:\\adsl.exe 라는 파일을 저장하고,  (0) 2007.12.26
JAVAC, JAVA OPTION  (0) 2007.12.26
JDK 설정  (0) 2007.12.26
메일전송 프로그램  (0) 2007.12.26