2013-03-31 47 views
0

我有一个SWT/Hibernate/Postgresql应用程序,我想在我的数据库中添加一个图像作为byte []并显示它。byte []搞砸了数据库

这里是相关的代码来加载一个bean中的图像。 AFAIK,它工作正常。

InputStream is = new FileInputStream(file); 
long length = file.length(); 
if (length > Integer.MAX_VALUE) { 
    is.close(); 
    return false; 
} 
byte[] image = new byte[(int)length]; 
int offset = 0; 
int numRead = 0; 
while (offset < image.length && (numRead=is.read(image, offset, image.length-offset)) >= 0) { 
    offset += numRead; 
} 
if (offset < image.length) { 
    result = false; 
} 
is.close(); 

然后我简单地设置我的字节[]图像中的豆,在这样的休眠建立(传统的hbm.xml):

<property name="image" type="byte[]"/> 

并且这样的数据库设置:

CREATE TABLE ... 
(
    ... 
    image bytea, 
    ... 
) 

当我在数据库(工作)创建记录并立即使用代码在我的SWT应用程序中显示图像时(因此字节数组真的是由上面的一段代码创建的),它可以正常工作并显示图像。但是,当我运行我的应用程序,并从我的数据库中检索记录时,图像是不可读的。我在创建和数据库检索后记录了字节数组的内容,它们并不完全相同。可能是什么原因?

+0

嗯,我曾在类似的问题,但没有看到这一个:可能重复http:// stackoverflow.com/questions/5602111/saving-retrieving-binary-data-from-database?rq=1 – Steph

回答

0

嗯,我觉得很蠢。只是为了记录,这只是我使用驱动程序的8.4和9.1的数据库...