import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import oracle.sql.BLOB;
public class test {
private static final String DB_URL = "jdbc:oracle:thin:@10.193.40.189:1521:orcl";
private static final String DB_USER = "system";
private static final String DB_PASSWORD = "hik12345";
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 T_HUMAN_PICTURE (photoid,photo) values ('1',?)");
String inFile = "D:/test.jpg";
//设定的是blob类型
ps.setBlob(1, file2Blob(inFile));
ps.executeUpdate();*/
//存xml文件
PreparedStatement ps = conn
.prepareStatement("INSERT INTO T_HUMAN_XML (cid,cpxml) values ('1',?)");
String inFile = "D:/test.xml";
//设定的是blob类型
// ps.setBlob(1, file2Blob(inFile));
File file = new File(inFile);
ps.setBytes(1, File2byte(file));
ps.executeUpdate();
}
public static byte[] File2byte(File file)
{
byte[] buffer = null;
try
{
FileInputStream fis = new FileInputStream(file);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte[] b = new byte[1024];
int n;
while ((n = fis.read(b)) != -1)
{
bos.write(b, 0, n);
}
fis.close();
bos.close();
buffer = bos.toByteArray();
}
catch (FileNotFoundException e)
{
e.printStackTrace();
}
catch (IOException e)
{
e.printStackTrace();
}
return buffer;
}
/**
* 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) {
// TODO 自動生成された catch ブロック
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);
//set start is 1
//这个setBytes 是指定起点,然后设定字节
blob.setBytes(1, result);
//pub byte 这个方法是添加byte
// blob.putBytes(1, result);
return blob;
} catch (Exception e) {
// TODO 自動生成された catch ブロック
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) {
// TODO 自動生成された catch ブロック
e.printStackTrace();
}
return null;
}
static {
try {
Class.forName("oracle.jdbc.driver.OracleDriver");
conn = DriverManager.getConnection(DB_URL, DB_USER, DB_PASSWORD);
} catch (Exception e) {
// TODO 自動生成された catch ブロック
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;
}
}