2010-12-15 11 views
2

私は、DB2に2列のid(number)、content(xml)を持つABCというテーブルがあるとしましょう。 rs.getObject(i)は、rs.getString(i)とrs.getSQLXML(I).getString()が、運...そして、私は唯一のDB2ソリューションを必要とし、私が試してみました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 
} 

このことができます

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

答えて

1

XMLの行はラージオブジェクトとして実装されています。私は私の自己を修正しました。 rs.getClob(i)を試してから、getSubstringに電話してxmlを取得してください。 Here's an example.