Как прочитать XML-столбец из db2 с помощью jdbc - PullRequest
2 голосов
/ 15 декабря 2010

Допустим, у меня есть таблица ABC с двумя столбцами id (номер), контент (xml) в 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
}

Я пробовал 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); 
}

Надеюсь, это поможет ...

1 Ответ

1 голос
/ 15 декабря 2010

XML-строки реализованы в виде больших объектов. Попробуйте rs.getClob(i), затем вызовите getSubstring, чтобы извлечь из него xml. Вот пример.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...