如何使用jdbc从db2读取xml列 [英] How to read xml column from db2 using jdbc
本文介绍了如何使用jdbc从db2读取xml列的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
String q =select * from ABC where id = 121;
我已经尝试过rs.getObject(i),rs.getString(i)和rs.getSQLXML(i).getString(),但没有运气.. / pre>
连接conn = getConnection(dbUrl,schemaName,userName,password);
语句stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(q);
while(rs.next())
{
//此处如何在STRING格式中获取内容列值
}
我只需要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 callgetSubstring
to retrieve the xml from it. Here's an example.这篇关于如何使用jdbc从db2读取xml列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文