2010-12-15 45 views
2

让我们说我有一个名为ABC的表,其中包含DB2中的2列id(number),content(xml)。如何使用jdbc从db2读取xml列

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 
} 

我试图rs.getObject(I),rs.getString(i)和rs.getSQLXML(I).getString(),但没有运气......我只需要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); 
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); 
} 

希望这有助于...

+0

我修好了我的自我 – sanumala 2010-12-15 16:06:09

回答

1

XML行实现大对象。尝试rs.getClob(i),然后调用getSubstring从中检索xml。 Here's an example.