import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.sql.Blob;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import oracle.sql.BLOB;
public class OracleBlob {
private DBstep.iDBManager2000 DbaObj ;
private File file = null;
public OracleBlob() {
DbaObj=new DBstep.iDBManager2000(); //创建数据库对象
}
public void insert(String infile) throws Exception {
FileInputStream fis = null;
int iFileId = -1;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
//生成随机码
java.util.Date dt=new java.util.Date();
long lg=dt.getTime();
Long ld=new Long(lg);
String mRecordID=ld.toString();
file = new File(infile);
fis = new FileInputStream(file);
//得到数据库
iFileId = DbaObj.GetMaxID("INFO_DOCUMENT_FILE","FileId");
if (DbaObj.OpenConnection()) {
DbaObj.Conn.setAutoCommit(false);
String sql="insert into INFO_DOCUMENT_FILE(FileID,RecordID,FileName,FileType,FileSize,FileDate,FileBody,FilePath,UserName,Descript) values (?,?,?,?,?,?,empty_blob(),?,?,? )";
pstmt = DbaObj.Conn.prepareStatement(sql);
pstmt.setInt(1, iFileId);
pstmt.setString(2, mRecordID);
pstmt.setString(3, mRecordID+".doc");
pstmt.setString(4, "doc");
pstmt.setLong(5,file.length());
pstmt.setDate(6, DbaObj.GetDate());
pstmt.setString(7, "");
pstmt.setString(8, "");
pstmt.setString(9, "测试通用版本=="); // "通用版本"
pstmt.executeUpdate();
pstmt = DbaObj.Conn.prepareStatement("select FileBody,FileSize from INFO_DOCUMENT_FILE where RecordID='"+mRecordID+"' for update");
rs = pstmt.executeQuery();
while (rs.next()) {
oracle.sql.BLOB blob = (oracle.sql.BLOB)rs.getBlob("FileBody");
OutputStream os = blob.getBinaryOutputStream();
BufferedInputStream bis = new BufferedInputStream(fis);
byte[] buf = new byte[rs.getInt("FileSize")];
int len = 0;
if ((len = bis.read(buf)) != -1) {
os.write(buf, 0, len);
os.flush();
}
os.close();
bis.close();
}
DbaObj.Conn.commit();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
fis.close();
DbaObj.CloseConnection();
}
}
public void readDoc(String outfile,String id)throws Exception{
FileOutputStream fos = null;
InputStream is = null;
String Sql = "SELECT FileBody,FileSize FROM info_document_file WHERE RecordID='" + id + "'";
try {
if (DbaObj.OpenConnection()) {
try {
ResultSet result = DbaObj.ExecuteQuery(Sql);
if (result.next()) {
try {
int fileSize=result.getInt("FileSize");
Blob blob=result.getBlob("FileBody");
file = new File(outfile);
if(!file.exists())
{
file.createNewFile();//如果文件不存在,则创建
}
fos = new FileOutputStream(file);
is = blob.getBinaryStream();// 读出数据后转换为二进制流
byte[] data = new byte[fileSize];
int size = 0;
while((size = is.read(data)) != -1)
{
fos.write(data,0,size);
}
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
result.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
}
finally
{
DbaObj.CloseConnection();
}
}
public static void main(String args[])
{
OracleBlob blob=new OracleBlob();
try {
blob.readDoc("c://test.doc", "1281088075378");
//blob.insert("c://信息处WebService接口文档.doc");
} catch (Exception e) {
e.printStackTrace();
}
}
}
分享到:
相关推荐
批量导出oracle bolb图片到本地文件
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
Oracle导出Clob,Blob等大字段工具,自己写的工具,方便大家下载使用
只需要安装oracle client在本地,然后配置好tns,输入连接名,用户名,密码,数据表的名称,文件名数据列名以及blob数据列名,就可以批量导出ORACLE数据库BLOB字段生成图片
使用PL/SQL脚本将Oracle的Blob字段中存储的图片批量导出到文件夹,可在文件夹中直接查看。
指定文件夹下的所有文件上传至oracle的blob字段,java实现
java中读取ORACLE中BLOB字段存储的图片
Oracle导出Clob,Blob工具 ,支持导出CLob工具版本2,解决上个版本导出时间有问题的bug
分享在JAVA中Blob转换成String实例
java放blob到Oracle数据库 使用java把mp3等二进制文件放到Oracle数据库中
该程序可将ORACLE中BLOB字段导入到SQL SERVER中的IMAGE字段,方便快捷。
C# oracle blob类型 读入与保存
Oracle blob字段上传下载 Oracle blob字段上传下载Oracle blob字段上传下载 Oracle blob字段上传下载
Oracle数据库导入、导出数据库的几种方法,附件问题提供了详细的操作说明。
视频第七部共七部 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116262
从oracle中的BLOB类型字段中取出照片,转存到mysql数据库中。思路是现将oracle中的照片存储在本地文件夹,在将本地图片上传到mysql中。
视频第六部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116258
java对oracle数据库中blob字段的处理
oracle Blob转换Clob
视频第三部分共七部分 下载全才可以解压 博文链接:https://dlivan.iteye.com/blog/116256