频道直达 - 专题 - 新闻 - 技巧 - 组网 - 开发 - 安全 - web编程 - 图像 - 操作系统 - 数据库 - 教育 - 旅游 - 健康 - 时尚 - 驱动 - 软件 - 游戏 - 多媒体 - ERP - 讨论组

Java操作DB2 XML数据实践

来源:中国IT实验室 作者:熔岩 出处:巧巧读书 2008-05-07 进入讨论组
         * 创建表
         *
         * @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=\"http://posample.org\" Cid=\"1000\">\n" +
                    "<name>Robert Shoemaker</name>\n" +
                    "<addr country=\"Canada\">\n" +
                    "<street>1596 Baseline</street>\n" +
                    "<city>zhengzhou</city>\n" +
                    "<prov-state>Ontario</prov-state>\n" +
                    "<pcode-zip>N8X 7F8</pcode-zip>\n" +
                    "</addr>\n" +
                    "<phone type=\"work\">905-555-2937</phone>\n" +
                    "</customerinfo>";
            String ins_sql = "INSERT INTO CUSTOMER (CID, INFO) VALUES (1000, ?)";
            Connection conn = DBUtils.makeConnection();
            conn.setAutoCommit(false);
            PreparedStatement pstmt = conn.prepareStatement(ins_sql);
            byte[] b = xml.getBytes();
            InputStream ins = new ByteArrayInputStream(b);
            pstmt.setBinaryStream(1, ins, b.length);
            pstmt.executeUpdate();
            conn.commit();
            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 \"http://posample.org\";\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 \"http://posample.org\";\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(1)).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=\"http://posample.org\" Cid=\"1002\">\n" +
                    "<name>Jim Noodle</name>\n" +
                    "<addr country=\"Canada\">\n" +
                    "<street>1150 Maple Drive</street>\n" +
                    "<city>Newtown</city>\n" +
                    "<prov-state>Ontario</prov-state>\n" +
                    "<pcode-zip>Z9Z 2P2</pcode-zip>\n" +
                    "</addr>\n" +
                    "<phone type=\"work\">905-555-7258</phone>\n" +
                    "</customerinfo>";
            String up_sql = "UPDATE customer SET info =?" +
                    "WHERE XMLEXISTS (\n" +
                    "'declare default element namespace \"http://posample.org\";\n" +
                    "$doc/customerinfo[@Cid = 1000]'\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(1, ins, b.length);
            pstmt.executeUpdate();
            conn.commit();
            ins.close();
            pstmt.close();
            conn.close();
        }

更多文章 更多内容请看DB2Java环境安装配置DB2中的数据处理专题,或进入讨论组讨论。
更多专题 【深 度 阅 读】 相 关 文 章
    收藏此文】【 】【打印】【关闭
    相关图文阅读
    频道图文推荐
    健 康 咨 询
    时 尚 咨 询
    巧巧读书宗旨
    相关专题
    讨论组问题推荐
    站内各频道最新更新文档
    站内最新制作专题
    热门关键字导读
    Photoshop教 程照片处理 照片制作 PS快捷键 抠图
    计 算 机 故 障XP系统修复
    艺 术 与 设 计设计 流媒体 设计欣赏 边框
    计 算 机 安 全ARP
    站内频道文章精选
    巧巧电脑频道编辑信箱  告诉我们您想看的专题或文章