请教:如何将图片文件写入oracle数据库中?

milklybaby 2003-03-31 03:43:19
我是个菜鸟,对oracle不甚熟悉,现在请教一个问题,怎样图片(大字段、大对象)数据写入oracle中,图片的格式有两种:jpg、bmp。图片数量较大,上万张。

请问用何种方式存贮比较省时省力?望高手不吝赐教。
...全文
73 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
tchatcha 2003-04-03
  • 打赏
  • 举报
回复
帮你顶顶,涨涨人气
sm8848 2003-04-02
  • 打赏
  • 举报
回复
//补充:如何保存图片到数据库

File file = new File("myimage.gif");
FileInputStream fis = new FileInputStream(file);
PreparedStatement ps =
conn.prepareStatement("insert into images values (?,?)");
ps.setString(1,file.getName());
ps.setBinaryStream(2,fis,file.length());
ps.executeUpdate();
ps.close();
fis.close();


...
<img src=showimage.jsp?ID=1234>
...
=======================showimage.jsp=================
<%@ page language="java" import="java.sql.*,java.util.*"%>
<%
String image_id = (String) request.getParameter("ID");
if (image_id != null){
try
{
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:scott/tiger@www.myCompany.com:1243:myInstance","java","java");
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM IMMAGINE WHERE IMMAGINE_ID = " + image_id);
if (rs.next())
{
String dim_image = rs.getString("IMMAGINE_DIMENSIONE");
byte [] blocco = rs.getBytes("IMMAGINE_IMMAGINE");
response.setContentType("image/jpeg");
ServletOutputStream op = response.getOutputStream();
for(int i=0;i<Integer.parseInt(dim_image);i++)
{
op.write(blocco[i]);
}
}
rs.close();
stmt.close();
con.close();
} catch(Exception e) {
out.println("An error occurs : " + e.toString());
}
}
%>



///********************补充:如何保存图片到数据库

java.sql.Connection lConn = null;
java.sql.Statement lStat = null;
java.sql.ResultSet lRs = null;
try
{
DBConnectionManager lDB = DBConnectionManager.getInstance();
lConn = lDB.getConnection("ORACLE");
lStat = lConn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE);
lStat.executeUpdate("insert id,EMPTY_BLOB() from tab where id=2");
lRs = lStat.executeQuery("select pic from tab where id=2");
if(lRs.next())
{
oracle.sql.BLOB blob = (oracle.sql.BLOB)lRs.getBlob("pic");
OutputStream outstream = blob.getBinaryOutputStream();
byte[] bAtt = "data".getBytes();
outstream.write(bAtt,0,bAtt.length);
outstream.close();
lRs.updateBlob("pic",blob);
}

}
catch(Exception e)
{
e.printStackTrace();
}
finally
{
try{lRs.close();}catch(Exception e){}
try{lStat.close();}catch(Exception e){}
try{lConn.close();}catch(Exception e){}
}



//*****************************************
sy_315 2003-04-01
  • 打赏
  • 举报
回复
可以将他们存到blob字段中

我自己做了一个例子,如果你需要的话
给我发email,我把代码发给你
sy_315@163.com
zzyok 2003-03-31
  • 打赏
  • 举报
回复
用BLOB管理是比较方便,但是我觉得存储文件路径更节约数据库时间,能提高i/o性能。
这个讨论也许对你有所帮助
http://expert.csdn.net/Expert/topic/1576/1576763.xml?temp=.8561365
black_snail 2003-03-31
  • 打赏
  • 举报
回复

CREATE TABLE PHOTO
(
PICTUREID NUMBER ,
PICTURE BLOB DEFAULT EMPTY_BLOB()
);

Then use SQL*LOADER to insert data.

3,491

社区成员

发帖
与我相关
我的任务
社区描述
Oracle 高级技术相关讨论专区
社区管理员
  • 高级技术社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧