如何使用jdbc从db2读取xml列 [英] How to read xml column from db2 using jdbc

查看:146
本文介绍了如何使用jdbc从db2读取xml列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我们来说说我有一个名为ABC的表格,在DB2中有2列id(number),content(xml)。

  String q =select * from ABC where id = 121; 
连接conn = getConnection(dbUrl,schemaName,userName,password);
语句stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
while(rs.next())
{
//此处如何在STRING格式中获取内容列值
}
我已经尝试过rs.getObject(i),rs.getString(i)和rs.getSQLXML(i).getString(),但没有运气.. / pre>

我只需要db2解决方案



我已经修复了我的自我:

  String q =select * from ABC where id = 121; 
连接conn = getConnection(dbUrl,schemaName,userName,password);
语句stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
if(rsmd.getColumnTypeName(i).equalsIgnoreCase(XML))
{
convertInStreamToString(rs。 getBinaryStream(i));

}
else
{
rs.getObject(i);
}
}

private String convertInStreamToString(InputStream data)throws Exception
{
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte [] buf = new byte [1024];
int n = 0;
while((n = data.read(buf))> = 0)
{
baos.write(buf,0,n);
}

data.close();
byte [] bytes = baos.toByteArray();
return new String(bytes);
}

希望这有帮助...

解决方案

XML行被实现为大对象。尝试 rs.getClob(i),然后调用 getSubstring 从中检索xml。 这是一个例子。


Let us say I have a table called ABC with 2 columns id(number), content(xml) in DB2.

String q="select * from ABC where id=121";
Connection conn = getConnection(dbUrl,schemaName,userName,password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
while(rs.next())
{
   //HERE HOW CAN I GET CONTENT COLUMN VALUE IN STRING FORMAT
}

I have tried rs.getObject(i), rs.getString(i) and rs.getSQLXML(i).getString() but no luck... And I need only db2 solution

I have fixed my self:

String q="select * from ABC where id=121";
Connection conn = getConnection(dbUrl,schemaName,userName,password);
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
ResultSetMetaData rsmd = rs.getMetaData();
while(rs.next())
{
   if(rsmd.getColumnTypeName(i).equalsIgnoreCase("XML"))
   {
            convertInStreamToString(rs.getBinaryStream(i));

    }
    else
    {
        rs.getObject(i);
    }
}

private String convertInStreamToString(InputStream data) throws Exception
{
        ByteArrayOutputStream baos = new ByteArrayOutputStream();
        byte[] buf = new byte[1024];
        int n = 0;
        while ((n=data.read(buf))>=0)
        {
           baos.write(buf, 0, n);
        }

        data.close();
        byte[] bytes = baos.toByteArray();
        return new String(bytes); 
}

Hope this helps...

解决方案

XML rows are implemented as large objects. Try rs.getClob(i), then call getSubstring to retrieve the xml from it. Here's an example.

这篇关于如何使用jdbc从db2读取xml列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆