2015-02-11 29 views
0

我創建了一個databasetable「斑點」,它可以包含TEXTFILES,XML的文件或ZIP檔案:如何使用BLOB列解決此問題?

CREATE TABLE "RT"."BLOB" 
( "B_ID" INTEGER NOT NULL GENERATED ALWAYS AS IDENTITY (START WITH 1 INCREMENT BY 1 MINVALUE 1 MAXVALUE 2147483647 NO CYCLE CACHE 20), 
     "L_ID" INTEGER NOT NULL, 
     "ATTACHMENTS" BLOB(1048576) NOT NULL, 
     "NAME" VARCHAR(600) 
    ) 

我想現在的原始文件,其內容已降落在blob-的名字列(「ATTACHMENTS」)應顯示爲JSP頁面上的鏈接。這沒有問題。 如果我在JSP頁面中單擊blob-Name(數據庫中的「NAME」列),應該從表中加載blob,然後根據格式進行相應顯示 - 在下一個JSP頁面中無需額外處理。我怎樣才能在JSP中實現? INSERT命令應該如何查找blob表?我需要幫助。謝謝

回答

0

在目前的狀態下,您的JSP正在嘗試幾個步驟,因此找出第一個故障發生的位置很重要。您使用與INSERT的源和SELECT的目標相同的物理文件的方式正在使故障排除過程變得非常困難。至少,使用兩個不同的文件,以便可以判斷JSP中的特定SQL語句是失敗還是成功。

您提到ATTACHMENTS BLOB列可能包含ZIP文件。根據您的DDL,我認爲NAME列將顯示附件的文件類型。 ZIP文件或任何其他二進制數據不能像JSP當前正在嘗試的那樣內嵌到HTML文檔中。從JSP返回實際的二進制數據需要在另一個SO帖子中描述一些額外的注意事項:Display BLOB (image) through JSP

就TXT附件而言,JSP可以在HTML頁面上內聯打印它們(例如參見DtLob.java),但即使如此,您仍然希望確保文件的文本編碼和/或代碼頁與周圍的HTML文件。例如,某些文本編碼方案以不屬於網頁中間的byte order mark開頭。出於這些和其他原因,如果您打算在HTML頁面上內聯顯示其內容,我建議將文本附件存儲爲CLOB而不是BLOB。對於以內聯方式顯示在網頁上的XML附件,您還需要以防止客戶端瀏覽器嘗試將其呈現爲HTML標記的方式轉義XML。

切線方向,我必須指出BLOB對於任何DBMS中的表格都是一個糟糕的名稱,即使它不是DB2中的reserved word