2
回答
取数据库BLOB 遇到的奇怪问题
滴滴云服务器,限时包月0.9元,为开发者而生>>>   
package cn.aresoft.job.impl;




import java.io.*;  
 import java.util.*;  
import java.sql.*;  
  /**
   * 读取数据库下载图片到本地
   * @author mx
   *
   */
public class BlobPros  
 {  
 Locale locale = Locale.getDefault();
 ResourceBundle localResource = ResourceBundle.getBundle("jdbc", locale);
 private String user = localResource.getString("jdbc.user").trim();
 private String pwd = localResource.getString("jdbc.pwd").trim();
 private String url =localResource.getString("jdbc.url").trim();
 private  final String URL = url+"&"+"user="+user+"&password="+pwd;  
 private Connection conn = null;  
 private PreparedStatement pstmt = null;  
 private ResultSet rs = null;  
 private File file = null;  
  
public BlobPros()  
 {  
 }  
  
/** 
 * 从数据库中读出BLOB对象 
 * @param outfilePath 输出的数据文件路径 
 * @throws java.lang.Exception 
 */  
  
public void blobRead(String outfilePath) throws Exception  
 {  
 FileOutputStream fos = null;  
 InputStream is = null;  
 byte[] Buffer = new byte[4096];
 
  
try  
 {  
 Class.forName("org.gjt.mm.mysql.Driver").newInstance();
 conn = DriverManager.getConnection(URL);  
 pstmt = conn.prepareStatement("select ID,PersonalData from dc_fund_manager_jy where id=227437890619;");  
 rs = pstmt.executeQuery();  
 
while(rs.next()){
//System.out.println(rs.getString("fund_code")+"/t"+rs.getString("name"));
file = new File(outfilePath+"manager"+rs.getString("ID")+".jpg");  
if(!file.exists())  
{  
file.createNewFile();     //如果文件不存在,则创建  
}  
fos = new FileOutputStream(file);  
is = rs.getBinaryStream("PersonalData"); 
int size = 0;  
 
while((size = is.read(Buffer)) != -1)  
{  
fos.write(Buffer,0,size);  

}
  
}  
 catch(Exception e)  
 {  
 System.out.println("[OutPutFile error : ]" + e.getMessage());  
 }  
 finally  
 {  
 //关闭用到的资源  
 fos.close();  
 rs.close();  
 pstmt.close();  
 conn.close();  
 }  
 }  
public static void main(String[] args) throws Exception {
BlobPros b= new BlobPros();
b.blobRead("D:/images/");
}
 } 



代码如上;

现在遇到一个问题:我在测试库上下载图片到本地,可以正常显示出来

放到生产上下载的图片就打不开,而且还有11字节的(有这么大小的图片吗)? (BLOB) 11 bytes  这是生产上longblob类型字段下的一条数据

测试库和生产库数据都是来自一个库,应该不是数据问题吧? 后来我把生产上的一条数据拉到测试上,图片也是显示不成功,这是数据问题还是其他什么原因?求指教啊

<无标签>
举报
顶部