如何使用BLOB-Column解决此问题?

时间:2015-02-11 13:33:25

标签: jsp insert db2 blob

我创建了一个数据库表" Blob",它可以包含Textfiles,XML-Files或zip-Files:

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-column(" ATTACHMENTS")的原始文件的名称显示为JSP页面上的链接。这没有问题。 如果我在JSP-Page中单击blob-Name(列" NAME"在数据库中),则应从表中加载blob,然后根据格式进行相应显示 - 无需额外处理下一个JSP-Page。我怎样才能在JSP中实现它? INSERT命令应该如何查找blob表?我需要紧急帮助。 Thankss

1 个答案:

答案 0 :(得分:0)

在目前的状态下,您的JSP正在尝试几个步骤,因此确定第一个故障发生的位置非常重要。您使用与INSERT的来源和SELECT的目标相同的物理文件的方式会使故障排除过程变得不必要。至少,使用两个不同的文件,以便您可以判断JSP中的特定SQL语句是失败还是成功。

您提到ATTACHMENTS BLOB列可能包含ZIP文件。根据您的DDL,我假设NAME列将显示附件的文件类型。当前JSP正在尝试时,不能将ZIP文件或任何其他二进制数据内联转储到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