`
jamesfork
  • 浏览: 32769 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
最近访客 更多访客>>
社区版块
存档分类
最新评论

使用db2 9x实现包含二进制文件内容的xml文档的存储和检索

阅读更多
使用db29.x XML类型实现二进制数据的存储与检索

存储
Xml文档可以用<[!CDATA[]]>在文档内部来包含一些二进制方式的内容,如:可执行文件、pdf文档等等。
Db2 9x提供了对xml直接存储的支持,那么怎么样将二进制文件的内容写入到xml文档,并将文档保存到db2 数据库中呢?
实验的过程如下:
在db2中建一张包含xml字段的表,只包含2个字段,a,b,其中b为xml类型的字段;
使用如下的代码实现二进制xml文件的存储:
public static void insert(Connection cnn) throws Exception{
PreparedStatement preparedStatement =
cnn.prepareStatement("INSERT INTO admin.test VALUES(1,?)");
preparedStatement.setInt(1, 1);
String xml="<root><![CDATA[";//可以在xml文档中增加一些描述性的元素来说明二进制文件的摘要信息
//以下读取文件内容
StringBuffer m_cStrXML= new StringBuffer();
File cFileBinary = new File("c:\\\\test.chm");

int fSize = new Long(cFileBinary.length()).intValue();
byte[] fContent = new byte[fSize];
   
FileInputStream fis = new FileInputStream(cFileBinary);
int bRead;
String cStrByte=null;
if((bRead=fis.read(fContent,0,fSize))!=-1)
{
//非常关键的一步,将二进制编码
    m_cStrXML.append(new String(new Base64().encode(fContent)));
}
xml+=m_cStrXML.toString();
xml+="]]></root>";
preparedStatement.setString(1, xml);
int n = preparedStatement.executeUpdate();
cnn.commit();
}
检索
前面步骤完成了包含二进制内容的xml文档的存储,通过db2提供的xquery语法,可以对这个xml表的内容进行方便的检索,那么查到需要的文件后,怎么将二进制内容重新转换成合适的文件呢?
以下的代码假设已经知道了二进制文件的格式为chm文件,在实际的应用中,可以通过在xml文档中增加其他的摘要信息来描述二进制数据,比如:文件的格式、打开文件的格式,可以与DTD、Schema等XML工具来实现更强的功能。
恢复二进制文件的代码如下:
public static void read(Connection cnn) throws Exception{
//xs:string必须加上,否则返回的xml文档会包含xml Tag
PreparedStatement preparedStatement =
cnn.prepareStatement("select xmlquery('xs:string($xx/root)' passing b as \"xx\") from admin.test");
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
String xml = resultSet.getString(1);
//Base64解码
Base64 bs = new Base64();
byte[] bt = bs.decode(xml);
//以下输出到文件,假定文件为chm格式
File fileOutput = new File("C:\\\\test1.chm");
FileOutputStream fo = new FileOutputStream(fileOutput);
fo.write(bt);
fo.close();
System.out.println("chm retrieved");
}
}
分享到:
评论

相关推荐

    IBMDB2XML操作

    在DB2中,XML字段可以被存储为BLOB(Binary Large Object)类型,允许存储大量的二进制数据,如文本、图片或XML文档。当数据库表中含有XML字段时,我们可以使用SQL语句来检索和处理这些数据。 1. **XML字段的提取**...

    DB2常见问题

    - **UNIX 和 LINUX**:同样以\SQLLIB为根目录,但子目录结构略有不同,如\BIN包含二进制文件,\FUNCTION包含用户自定义函数等。 9. **AIX安装命令** - 在AIX系统中,使用`INSTALLP`命令进行DB2的安装。 10. **多...

    全面了解DB2数据库中的各数据类型

    在使用DB2时,开发者还需要注意数据类型的转换和兼容性问题,以确保数据的正确存储和检索。此外,了解数据库的优化策略,如索引的创建和使用,也能进一步提升DB2的性能。 总结来说,DB2提供了丰富的数据类型,满足...

    DB2 9.0入门与提升

    1. **大型对象和表格**:将 XML 数据作为二进制大对象(BLOB)或文本大对象(TEXT)存储在关系数据库中。这种方法简单易行但效率较低。 2. **分解("shredding")到表格**:将 XML 数据分解成关系表格形式。这种方法提高了...

    DB2 Version 9.1 for zOS What’s New

    例如,引入了新的数据类型,如BINARY和VARBINARY,用于存储二进制数据;增强了数据完整性检查,包括对NULL值的控制和约束;优化了索引和查询优化器,提高了查询效率。这些改进使得DB2 V9.1 for z/OS在处理复杂查询时...

    DB2v9 SQL Reference Vol.1

    DB2v9支持多种数据类型,如数值类型(整数、浮点数)、字符类型(VARCHAR、CHAR)、日期/时间类型(DATE、TIME、TIMESTAMP)以及二进制数据类型(BLOB、CLOB)。了解这些数据类型对于正确存储和操作数据至关重要。 ...

    易语言程序QQ聊天记录管理易语言源码

    2. **QQ聊天记录格式**:QQ聊天记录通常以特定的二进制或XML格式存储在本地,包含聊天时间、对方账号、聊天内容等信息。开发者需要了解这些格式,以便正确解析和处理数据。在本项目中,可能涉及到对这些数据文件的...

    DB数据库指南.pptx

    DB2是一种功能强大的关系型数据库管理系统,能够存储各种类型的数据,包括传统的结构化数据、XML格式的数据以及非结构化的二进制信息,如文档、图片、多媒体内容等。它支持跨多个操作系统平台运行,如Windows、Linux...

    IBM DB2 日常维护汇总(一)

    - `BIN`: 包含 DB2 工具的二进制可执行文件。 - `BND`: 包含 DB2 工具的绑定文件。 - `CC`: 包含运行控制中心所需的文件。 - `CFG`: 包含默认的系统配置文件。 - `CONV`: 包含代码页转换表文件。 - `DOC`: 包含 DB2 ...

    db2常用命令及数据类型

    - **二进制类型**:如`BLOB`(Binary Large Object),`CLOB`(Character Large Object),`DBCLOB`等。 - **特殊类型**:如`XML`,`GRAPHIC`,`VARGRAPHIC`,`DATALINK`等。 这些数据类型用于存储各种形式的数据,...

    使用JDBC4.0操作XML类型的字段(保存获取xml数据)的方法

    这一特性使得Java程序员能够更方便地在数据库中存储和检索XML文档,而无需进行繁琐的类型转换。在SQL 2003标准中引入XML数据类型后,许多主流数据库系统,如SQL Server、Oracle和DB2,都开始支持这一类型。JDBC 4.0...

    DB2常用傻瓜问题1000问(一)第1/2页

    - **BIN:** 包含DB2工具的二进制可执行文件。 - **BND:** 包含DB2工具的绑定文件。 - **CC:** 包含运行控制中心所需的文件。 - **CFG:** 包含默认的系统配置文件。 - **CONV:** 包含代码页转换表文件。 - **DOC:** ...

    常用的数据库管理系统.ppt

    数据库管理系统是信息技术领域中的核心组件,用于存储、管理和检索数据。本篇文章将详细介绍几种常见的数据库管理系统,包括Oracle、DB2、Sybase以及SQL Server,分析它们的特点和应用场景。 Oracle数据库管理系统...

    数据库基础与应用辅导八---综合复习题及答案

    1. SQL Server是一个功能强大的关系型数据库管理系统,支持XML数据类型,允许存储和检索XML文档,同时也支持用户自定义函数,提供高级数据处理能力。此外,SQL Server还集成了邮件功能,使得数据库系统可以与其他...

    Server作为一款面向企业级应用的关系数据库产品.doc

    4. **文件流存储**:允许大型二进制对象(BLOB)数据存储在文件系统中,降低存储成本并提高访问效率。 5. **高级复制功能**:增强了复制技术,支持更多的复制类型和场景,提高了数据同步的灵活性。 6. **数据集成...

Global site tag (gtag.js) - Google Analytics