知识大全 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=
<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数据库 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库内容&nb
利用Java存储过程简化数据库操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 利用Java存
知识大全 java语言操作Oracle数据库中的CLOB数据类型
java语言操作Oracle数据库中的CLOB数据类型 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
专家为您详解JAVA数据库基本操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
使用JavaSwing界面实现数据库基本操作 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 实例
DB2数据库中的数据移动方法解析 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DB中所谓的数据
java解析XML和java解析HTML 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 一dom
java使用JDOM解析xml文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!java中如何使用
DB2数据库所支持外部文件格式 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在DB数据库维护中
知识大全 Java SE 6中XML数字签名标准Java接口
JavaSE6中XML数字签名标准Java接口 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 级