知识大全 Java操作DB2 XML数据实践

Posted 操作

篇首语:青春须早为,岂能长少年。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Java操作DB2 XML数据实践相关的知识,希望对你有一定的参考价值。

Java操作DB2 XML数据实践  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  Java操作DB XML数据实践

  自学了 分钟的DB XQuery 还不很熟悉 就要在项目中用了 心里很不踏实 还是先跑个CRUD的Demo看看 以免走弯路

  代码很粗糙 主要目的是看看JDBC是否能很好的执行这种新SQL 呵呵

  另外 在此之前 看到Oracle老大已经开始实现一个操作XML数据的规范 目前还没有正式出台 希望Sun能尽快跟进 将标准的API接口定出来 以支持广大的Java社区 项目有期限 我们也没时间等Sun给我们做好任何东西 自己动手实现吧

  下面是我做的一个Demo 希望能给正在研究这一块的朋友一点参考 XQuery SQL代码参考了DB 官方文档

  一 实现一个简单的数据库工具import java sql *

  * 简单的数据连接工具    * File: DBUtils java    * User: leizhimin    * Date: : :     */    public class DBUtils         public static final String url = jdbc:db :// : /lavasoft ;        public static final String username = lavasoft ;        public static final String password = lavasoftdb ;        public static final String driverClassName = ibm db jcc DB Driver ;

  /**         * 获取数据库连接Connection         *         * @return 数据库连接Connection         */        public static Connection makeConnection()             Connection conn = null;            try                 Class forName(driverClassName);            catch (ClassNotFoundException e)                 e printStackTrace();                        try                 conn = DriverManager getConnection(url username password);            catch (SQLException e)                 e printStackTrace();                        return conn;       

  public static void main(String args[])             testConnection();       

  /*** 测试连接方法         */        public static void testConnection()             Connection conn = makeConnection();            try                 Statement stmt = conn createStatement();                ResultSet rs = stmt executeQuery( SELECT * FROM DM_HYML );                while (rs next())                     String s = rs getString( );                    String s = rs getString( );                    System out println(s + s );                                rs close();                stmt close();            catch (SQLException e)                 e printStackTrace();            finally                 try                     conn close();                catch (SQLException e)                     e printStackTrace();                                       

  二 写一个简单的测试类执行各种XQuery SQL

  import mon utils DBUtils;

  import java sql *;    import java io ByteArrayInputStream;    import java io InputStream;    import java io IOException;

  /**    * DB XML数据操作测试    * File: TestXMLDAO java    * User: leizhimin    * Date: : :     */    public class TestDB XML

  /**         * 预删除表Customer         *         * @throws SQLException         */        public static void testDropXMLTable() throws SQLException             String drop_sql = DROP TABLE Customer ;            Connection conn = DBUtils makeConnection();            Statement stmt = conn createStatement();            stmt executeUpdate(drop_sql);            stmt close();            conn close();       

  /**

* 创建表         *         * @throws SQLException         */        public static void testCreateXMLTable() throws SQLException             String ct_sql = CREATE TABLE Customer (Cid BIGINT NOT NULL PRIMARY KEY Info XML) ;            Connection conn = DBUtils makeConnection();            Statement stmt = conn createStatement();            stmt executeUpdate(ct_sql);            stmt close();            conn close();       

  /*** 插入数据         *         * @throws SQLException         * @throws IOException         */        public static void testInsertXMLTable() throws SQLException IOException             String xml = <customerinfo xmlns=\\ \\ Cid=\\ \\ >\\n +                    <name>Robert Shoemaker</name>\\n +                    <addr country=\\ Canada\\ >\\n +                    <street> Baseline</street>\\n +                    <city>zhengzhou</city>\\n +                    <prov state>Ontario</prov state>\\n +                    <pcode zip>N X F </pcode zip>\\n +                    </addr>\\n +                    <phone type=\\ work\\ > </phone>\\n +                    </customerinfo> ;            String ins_sql = INSERT INTO CUSTOMER (CID INFO) VALUES ( ?) ;            Connection conn = DBUtils makeConnection();            conn setAutoCommit(false);            PreparedStatement pstmt = conn prepareStatement(ins_sql);            byte[] b = xml getBytes();            InputStream ins = new ByteArrayInputStream(b);            pstmt setBinaryStream( ins b length);            pstmt executeUpdate();            mit();            ins close();            pstmt close();            conn close();       

  /*** XQuery查询数据         *         * @throws SQLException         */        public static void testQueryXMLTable() throws SQLException             String query_sql = SELECT XMLQUERY (\\n +                    declare default element namespace \\ \\ ;\\n +                    for $d in $doc/customerinfo\\n +                    return <out>$d/name</out> \\n +                    passing INFO as \\ doc\\ )\\n +                    FROM Customer as c\\n +                    WHERE XMLEXISTS ( declare default element namespace \\ \\ ;\\n +                    $i/customerinfo/addr[city=\\ zhengzhou\\ ] passing c INFO as \\ i\\ ) ;            Connection conn = DBUtils makeConnection();            Statement stmt = conn createStatement();            ResultSet rs = stmt executeQuery(query_sql);            StringBuffer xmls = new StringBuffer();            while (rs next())                 xmls append(rs getString( )) append( \\n );                        System out println(xmls toString());            stmt close();            conn close();       

  /*** XQuery更新数据         *         * @throws SQLException         * @throws IOException         */        public static void testUpdateXMLTable() throws SQLException IOException             String xml = <customerinfo xmlns=\\ \\ Cid=\\ \\ >\\n +                    <name>Jim Noodle</name>\\n +                    <addr country=\\ Canada\\ >\\n +                    <street> Maple Drive</street>\\n +                    <city>Newtown</city>\\n +                    <prov state>Ontario</prov state>\\n +                    <pcode zip>Z Z P </pcode zip>\\n +                    </addr>\\n +                    <phone type=\\ work\\ > </phone>\\n +                    </customerinfo> ;            String up_sql = UPDATE customer SET info =? +                    WHERE XMLEXISTS (\\n +                    declare default element namespace \\ \\ ;\\n +                    $doc/customerinfo[@Cid = ] \\n +                    passing INFO as \\ doc\\ ) ;

  Connection conn = DBUtils makeConnection();            conn setAutoCommit(false);            PreparedStatement pstmt = conn prepareStatement(up_sql);            byte[] b = xml getBytes();            InputStream ins = new ByteArrayInputStream(b);            pstmt setBinaryStream( ins b length);            pstmt executeUpdate();            mit();            ins close();            pstmt close();            conn close();       

* 查询xml列数据 用于验证         *         * @throws SQLException         */        public static void testQueryXMLColumn() throws SQLException             String query_sql = SELECT INFO FROM Customer ;            Connection conn = DBUtils makeConnection();            Statement stmt = conn createStatement();            ResultSet rs = stmt executeQuery(query_sql);            StringBuffer xmls = new StringBuffer();            while (rs next())                 xmls append(rs getString( )) append( \\n );                        System out println(xmls toString());            stmt close();            conn close();       

  /*** 测试入口 方法组调用         *         * @param rags         * @throws Exception         */        public static void main(String rags[]) throws Exception             testDropXMLTable();            testCreateXMLTable();            testInsertXMLTable();            testQueryXMLTable();            testUpdateXMLTable();            testQueryXMLColumn();           

  三 运行结果

  <out xmlns= Robert > ><name>Robert Shoemaker</name></out>

  <customerinfo xmlns= Cid= ><name>Jim Noodle</name><addr country= Canada ><street> Maple Drive</street><city>Newtown</city><prov state>Ontario</prov state><pcode zip>Z Z P </pcode zip></addr><phone type= work > </phone></customerinfo>

  Process finished with exit code

cha138/Article/program/Java/hx/201311/25786

相关参考

知识大全 java程序操作MySQL数据库

java程序操作MySQL数据库  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  数据库内容&nb

知识大全 利用 Java 存储过程简化数据库操作

利用Java存储过程简化数据库操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  利用Java存

知识大全 java语言操作Oracle数据库中的CLOB数据类型

java语言操作Oracle数据库中的CLOB数据类型  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 专家为您详解JAVA数据库基本操作

专家为您详解JAVA数据库基本操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb

知识大全 使用Java Swing界面实现数据库基本操作

使用JavaSwing界面实现数据库基本操作  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  实例

知识大全 DB2数据库中的数据移动方法解析

DB2数据库中的数据移动方法解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  DB中所谓的数据

知识大全 java解析XML和java解析HTML

java解析XML和java解析HTML  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一dom

知识大全 java 使用JDOM解析xml文件

java使用JDOM解析xml文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!java中如何使用

知识大全 DB2数据库所支持外部文件格式

DB2数据库所支持外部文件格式  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在DB数据库维护中

知识大全 Java SE 6中XML数字签名标准Java接口

JavaSE6中XML数字签名标准Java接口  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  级