2013-03-31 45 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的數據庫...