java file转blob_java如何把文件转化成oracle的blob

import java.io.File;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.IOException;

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;

import oracle.sql.BLOB;

public class DbBlobTest {

private static

final String DB_URL = "jdbc:oracle:thin:@10.0.7.170:1522:ORCL5";

private static

final String DB_USER = "test";

private static final String

DB_PASSWORD = "test";

private static Connection conn =

null;

public static void main(String[] args) throws

Exception {

// insert into blob

Connection conn = getConnection();

PreparedStatement ps = conn

.prepareStatement("INSERT INTO WORD_FILE (GYO_NUM, WORD_KB, WORD_FILENAME, BIKO, USR_ID, YMDT, WORD_FILE) values(6, 'KYK002', '20171114test.doc', '備考', 'VENAS', TO_DATE('17-11-14', 'RR-MM-DD'), ?)");

String inFile =

"C:/Users/zhangrw/Desktop/test/2nANQz3wsFN8rkrTZa5P8xQY8PRBhyHw.jpg ";

//设定的是blob类型

ps.setBlob

(1, file2Blob(inFile));

ps.executeUpdate();

}

/**

* test blob data 2 file

*

* @throws Exception

*/

public static void testBlob2File() throws Exception {

Connection conn = getConnection();

PreparedStatement ps = conn

.prepareStatement

("select * from WORD_FILE a ");

ResultSet rs =

ps.executeQuery();

int index = 1;

while

(rs.next()) {

Blob bl = rs.getBlob("WORD_FILE");

String outFile =

"C:/Users/zhangrw/Desktop/test/dou_" + (index++) + ".doc";

blob2File(bl, outFile);

}

}

/**

* upload

* file

* 通过二进制的方式来上传文件

*/

public static void testFile2byte() {

try {

// insert into blob

Connection conn = getConnection();

PreparedStatement ps = conn

.prepareStatement("INSERT INTO WORD_FILE(GYO_NUM, WORD_KB, WORD_FILENAME, BIKO, USR_ID, YMDT, WORD_FILE) values(4, 'KYK002', '20171114test.doc', '備考', 'VENAS', TO_DATE('17-11-14', 'RR-MM-DD'), ?)");

String inFile = "C:/Users/zhangrw/Desktop/test/2nANQz3wsFN8rkrTZa5P8xQY8PRBhyHw.jpg ";

byte[] result = file2Byte(inFile);

//设定的是自己码文件

ps.setBytes(1, result);

ps.executeUpdate();

} catch (SQLException e) {

e.printStackTrace();

}

}

/**

* 将文件转化为

* Blob的对象

* create file 2 blob

*

* @param inFile

* @return

*/

public static Blob file2Blob(String inFile) {

try {

byte[] result = file2Byte(inFile);

//creat a new blob

// BLOB blob = BLOB.createTemporary(conn, true, BLOB.DURATION_SESSION);

BLOB blob = BLOB.empty_lob();

//set start is 1

//这个setBytes 是指定起点,然后设定字节

blob.setBytes(1, result);

//pub byte 这个方法是添加byte

// blob.putBytes(1, result);

return blob;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 将文件转化为二进制的数据

* create file 2 byte

*

* @param inFile

* @return

*/

public static byte[]

file2Byte(String inFile) {

InputStream in = null;

try {

in = new FileInputStream(new File(inFile));

int len = in.available();

byte[]

result = new byte[len];

in.read(result);

return result;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

/**

* 将Blob文件转化为Blob对象

* convert blob to file

*

* @param blob

* @param outFile

*/

public static void blob2File(Blob blob, String outFile) {

InputStream in = null;

OutputStream out = null;

try {

//通过getBinaryStream 方法获取输入流

in = blob.getBinaryStream();

out = new

FileOutputStream(new File(outFile));

byte[] buff

= new byte[1024];

int len = 0;

while

((len = in.read(buff)) > 0) {

out.write(buff,

0, len);

}

} catch (Exception e) {

e.printStackTrace();

} finally {

try {

if (in != null) {

in.close();

}

} catch (IOException e) {

e.printStackTrace();

}

try {

if (out != null) {

out.close();

}

} catch (IOException e) {

e.printStackTrace();

}

}

}

static {

try {

Class.forName

("oracle.jdbc.driver.OracleDriver");

conn =

DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);

} catch (Exception e) {

e.printStackTrace();

}

}

public static Connection getConnection() {

try {

if (conn == null) {

Class.forName

("oracle.jdbc.driver.OracleDriver");

conn =

DriverManager

.getConnection(DB_URL,

DB_USER, DB_PASSWORD);

}

return conn;

} catch (Exception e) {

e.printStackTrace();

}

return null;

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值