图片如何存放在oracle数据库

如题所述

第1个回答  推荐于2017-10-03
测试可行。这只是核心Class文件代码,你要是弄不出来,就再联系我,我再把整个项目给你。这是把图片真个放到数据库

package com.dao;

import java.io.FileInputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.Scanner;

import oracle.sql.BLOB;

public class Insert {
Scanner sc =new Scanner(System.in);

@SuppressWarnings("deprecation")
public int insertbinary(String pname,String src1){
Connection con = null;
String sql = "insert into test values(?,?)";
String sql1 ="update test set image=? where pname=?";
int res = 0;
try {
con=BaseDAO.getConnection();
con.setAutoCommit(false);
PreparedStatement pstm = con.prepareStatement(sql);
pstm.setString(1, pname);
//EMPTY_BLOB和EMPTY_CLOB返回一个空的LOB定位器,
//可以用来初始化一个LOB变量,或在INSERT或UPDATE语句,
//初始化LOB列或属性为空。 EMPTY表示LOB初始化,但不填充数据。
pstm.setBlob(2, oracle.sql.BLOB.empty_lob());
pstm.executeUpdate();
pstm.close();
pstm = con.prepareStatement("select * from test where pname=?");
pstm.setString(1, pname);
ResultSet rs = pstm.executeQuery();
rs.next();
BLOB blob = (BLOB) rs.getBlob(2);
OutputStream os = blob.getBinaryOutputStream();
FileInputStream fi = new FileInputStream(src1);
byte[] buff = new byte[1024];
int len = fi.read(buff);
while (len != -1) {
os.write(buff);
len = fi.read(buff);
}
pstm = con.prepareStatement(sql1);
pstm.setBlob(1, blob);
pstm.setString(2, pname);
res = pstm.executeUpdate();
con.commit();
pstm.close();
con.close();
if (res > 0) {
System.out.println("success");

}
} catch (Exception ex) {
ex.printStackTrace();
}
return res;

}

}本回答被提问者和网友采纳
相似回答