2015-02-11 63 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