用(java或plsql的存储过程)将文件以二进制的形式写入到oracle数据库(适用dwg格式文件)
来源:互联网 发布:淘宝手机模版 编辑:程序博客网 时间:2024/06/04 05:30
java 将文件以二进制的形式导入到oracle数据库的blob或long raw格式的字段中。
package com.dsit.zsdw.test;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.Blob;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
import org.hibernate.cfg.annotations.ArrayBinder;
import com.fr.report.script.function.ARRAY;
public class OracleImageTest {
public static void mainI(String filename,String dir,String year) {
Connection connection = null;
try {
connection = getORACLEConn();
List list=getFileName(filename,",");
for(int i=0;i<list.size();i++){
String itemfilename=dir+list.get(i).toString();
File f = new File(itemfilename);
FileInputStream fis = new FileInputStream(f);
String sql = "update GQ_TEST set file=? where year='"+year+"' and name='"+list.get(i).toString()+"'";
PreparedStatement ps = connection.prepareStatement(sql);
fis = new FileInputStream(f);
ps.setBinaryStream(1, fis,(int)f.length());
ps.execute();
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} finally {
try {
connection.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
private static List getFileName(String strfilename,String split){
String str="";
List list = new ArrayList();
for (int i=0;i<strfilename.length();i++){
char c=strfilename.charAt(i);
if(c==split.charAt(0)){
list.add((Object)str);
str="";
}else{
str=str+String.valueOf(c);
}
if(i==strfilename.length()-1){
list.add((Object)str);
str="";
}
}
return list;
}
public static Connection getORACLEConn() throws ClassNotFoundException,
SQLException {
Connection connection;
Class.forName("oracle.jdbc.driver.OracleDriver");
connection = DriverManager.getConnection(
"jdbc:oracle:thin:@192.1.0.5:1521:sdsf", "sddba",
"123456");
return connection;
}
public static void main(String[] args) {
mainI("7+555.dwg"
,"C:////"
,"2012");
}
}
plsql 只能写入到blob格式的字段中
--create chenya
--data 2012-6-12
--Description 将险段的图形文件以二进制的格式写入到字段为blob格式的字段中
-- 其中文件的名称要和桩号一一对应。
-- photo_dir:图片所在的包的路径,最后面一定要带 /
-- filename :图片名称,如果是多张图片,以,号分隔开
-- clyear : 创建时间
create or replace procedure PRC_IMPORT_FILE_XD(photo_dir varchar2,
filename varchar2 ,
clyear number
) as
a_blob blob;
a_bfile bfile;
str_sql varchar(200):='create or replace directory TMP as '''|| photo_dir||'''';
begin
prc_get_split(filename, ',');
EXECUTE IMMEDIATE str_sql;
for cur_img in (select splitname
from get_split
where trim(splitname) is not null) loop
a_bfile := bfilename('TMP', cur_img.splitname);
dbms_lob.fileopen(a_bfile);
dbms_lob.loadfromfile(a_blob, a_bfile, dbms_lob.getlength(a_bfile));
dbms_lob.fileclose(a_bfile);
-- update GQ_TEST
EXECUTE IMMEDIATE 'update GQ_TEST set file=a_blob where year='''+clyear+''' and name='''+cur_img.splitname+''''
commit;
end loop;
--EXECUTE IMMEDIATE 'drop directory TMP';
end PRC_IMPORT_FILE_XD;
- 用(java或plsql的存储过程)将文件以二进制的形式写入到oracle数据库(适用dwg格式文件)
- 将文件存储到数据库(以二进制流的形式)
- 图片以二进制的形式存储到数据库并读取
- 以二进制形式将图片保存到数据库,用存诸过程实现(完整代码+sql语句)
- 将IP以整型的形式存储到数据库中
- 将图片以二进制的格式存储到数据库中
- c#把图片以二进制的形式写入ACCESS数据库
- php将图片以二进制形式保存到mysql数据库的解决方法
- 将上传文件以二进制形式存入数据库中,并下载数据库中的二进制数据生成对应的文件
- 文件的导入(ruby :将文件写入到数据库)
- 以流的形式将文件写入页面,直接下载
- VB.NET以二进制方式将嵌入的资源写入文件(不分文件类型)
- 以二进制码形式将图片存到数据库中,再从数据库中以二进制的形式从数据库中读出来
- 将 图片 文件存储到 Oracle 的存储过程
- JAVA将以二进制形式存储在Access数据库中的图片提取出来
- JAVA将图片以二进制形式存入Access数据库
- OpenCV - 将图片的二进制信息写入到文件中
- SpringMVC 上传文件或图片并以二进制流的方式存到数据库
- C 常用库函数积累
- 5.虚拟机类加载机制
- 网格1
- 通过HttpClient从指定server获取数据
- 一个奇妙、离奇的算法题
- 用(java或plsql的存储过程)将文件以二进制的形式写入到oracle数据库(适用dwg格式文件)
- UltraEdit脱机激活和添加UltraEdit到右键关联
- 独木舟上的旅行
- 数据库中取行最大值、最小值、平均值问题
- [控件]ImageSwitcher切换图片
- 建造者模式
- part3
- 计算字符串中各个逗号的位置
- part4