아래는 파일에 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
파일을 읽어오는 것입니다.
급하게 작성하느라 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 |