0

我在 Web 服务中获取查询结果并将其发送到客户端服务我已使用以下方法将结果转换为 XML:

   try {
        Class.forName("com.mysql.jdbc.Driver");
        Connection conn = DriverManager.getConnection(url + dbName, userName, password);

        Statement st = conn.createStatement();
        ResultSet rs;
        rs = st.executeQuery("SELECT * FROM  information_schema.collations where id like '%84%'");

        ResultSetMetaData rsmd = rs.getMetaData();
        int colCount = rsmd.getColumnCount();

        while (rs.next()) {
            Element row = doc.createElement("Row");
            results.appendChild(row);
            for (int i = 1; i <= colCount; i++) {
                String columnName = rsmd.getColumnName(i);
                Object value = rs.getObject(i);
                Element node = doc.createElement(columnName);
                node.appendChild(doc.createTextNode(value.toString()));
                row.appendChild(node);
            }
        }
        DOMSource domSource = new DOMSource(doc);
        TransformerFactory tf = TransformerFactory.newInstance();
        Transformer transformer = tf.newTransformer();
        transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
        transformer.setOutputProperty(OutputKeys.METHOD, "xml");
        transformer.setOutputProperty(OutputKeys.ENCODING, "ISO-8859-1");
        StringWriter sw = new StringWriter();
        StreamResult sr = new StreamResult(sw);
        transformer.transform(domSource, sr);

        System.out.println(sw.toString());

        conn.close();
        rs.close();

    } catch (SQLException e) {
        throw new RuntimeException("Could not get connection", e);
    }

这被认为是正确的方法吗?如何发送给客户服务?如何在表格中显示它?

4

1 回答 1

0

如果这是正确的方法,很大程度上取决于您要解决的问题。

通常,仅以相当通用的方式将数据库表映射到 XML 文档并不是一个很好的 XML 用法(还要确保 ISO-8859-1 编码确实是您想要的,也就是说您没有任何数据中的特殊字符,并且不要期望此应用程序可以使用涵盖不同语言的数据运行)。

通过定义具有结构和关系等的对象,您可以实现更多目标。如果您已经有一个对象结构以更好的方式表示您的数据,那么还有一些库可以将这些数据结构映射到 XML(例如 JAXB 或 XStream 是用于 XML 序列化的两个常用库)。

多解释你试图达到的目标,你可能会得到更好的答案。

于 2013-11-14T08:28:00.770 回答