我从sqlserver的image栏位把数据读取,还原成图象的时候发现图象为空.代码如下:
Blob b=(Blob)rs.getBlob(1);
InputStream fin=b.getBinaryStream();//调试fin没有任何问题
Image im=javax.imageio.ImageIO.read(fin);//im却为空?
有谁知道为什么im为空吗?
Blob b=(Blob)rs.getBlob(1);
InputStream fin=b.getBinaryStream();//调试fin没有任何问题
Image im=javax.imageio.ImageIO.read(fin);//im却为空?
有谁知道为什么im为空吗?
<%
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/[email protected]: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("Application/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());
}
}
%>
swing方面的代码有没有啊?我现在不是在JSP上面实现
只是显示的时候不一样罢了,存数据取数据都差不多
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();
//=========================================================
Class.forName("oracle.jdbc.driver.OracleDriver");
Connection con = DriverManager.getConnection("jdbc:oracle:thin:scott/[email protected]: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");
}
////////////////////////////////////////////////////
以上才是重点,希望你能解决