Самый простой способ преобразовать таблицу MySQL как есть в XML-документ? - PullRequest
1 голос
/ 19 октября 2010

Интересует, как это сделать программно, а не экспортировать данные таблицы один раз (наверняка есть инструменты).

Самый простой способ преобразовать таблицу MySQL как есть в XML-документ?

Таблица содержит, скажем, 2 строки: имя 1 "Джон Траволта" 2 "Мэри Линч"

в идеале нам нужен класс, который будет использовать логин / пароль / хост базы данных и

  GoodClass goodClass = new GoodClass(login, passw, host);
  String xml = goodClass.getTableData(nameOfTable);

 // xml : <table><row><num>1</num><id>1</id><name>John Travolta</name></row><row><num>2</num><id>2</id><name>Mary Lynch</name></row></table>

Ответы [ 3 ]

2 голосов
/ 19 октября 2010

Самый простой способ сделать это - использовать JDBC для подключения к вашей базе данных (используя передаваемую вами регистрационную информацию), а затем либо использовать класс DatabaseMetaData, чтобы получить столбцы таблицы.(это могут быть теги типа "" или "") (или вы можете использовать ResultSetMetaData после запроса таблицы), а затем просто "select * from" получит ваши данные, и простой цикл while с использованием ResultSet.next (), поскольку ваши условия получат ваши данные.

Я бы опубликовал фрагмент кода, но это звучит как домашнее задание, и если это так, я бы не хотел отказываться от опыта обучения.

2 голосов
/ 19 октября 2010

Если вы хотите пойти за борт, вы можете использовать hibernate, чтобы получить результаты своей базы данных как объекты Java, а затем использовать JAXB или JiBX, чтобы упорядочить объекты в XML.Но самый простой способ - подключиться к вашей базе данных, выполнить запрос, выполнить циклический просмотр набора результатов и создать XML.Пример кода показан ниже:

public class DataExtractor{

   private final String login, passwd, host;

   public DataExtractor(String login, String passwd, String host){
       this.login = login;
       this.passwd = passwd;
       this.host = host;
   }

   public String getTableData(String tableName) throws SQLException, ClassNotFoundException {
       Connection con = null;
       Statement st = null;
       ResultSet rs = null;
       try {
           Class.forName("com.mysql.jdbc.Driver");
           con = DriverManager.getConnection("jdbc:mysql:///" + host, login, passwd);

           st = con.createStatement();
           rs = st.executeQuery("select * from " + tableName);

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

           StringBuilder b = new StringBuilder("<table>\n");

           int num = 1;
           while (rs.next()) {
               b.append("<row>");
               b.append("<num>").append(num++).append("</num>");
               for (int i = 1; i <= colCount; i++) {
                   String columnName = rsmd.getColumnName(i);
                   b.append('<').append(columnName).append('>');
                   b.append(rs.getObject(i));
                   b.append("</").append(columnName).append('>');
               }
               b.append("</row>\n");
           }
           b.append("</table>");
           return b.toString();
       } catch (SQLException e) {
           throw e;
       } catch (ClassNotFoundException e) {
           throw e;
       } finally {
           if (rs != null)
               try {
                   rs.close();
               } catch (SQLException e) {
               }
           if (st != null)
               try {
                   st.close();
               } catch (SQLException e) {
               }
           if (con != null)
               try {
                   con.close();
               } catch (SQLException e) {
               }
       }
   }
}
1 голос
/ 19 октября 2010

Разбейте проблему на части:

  1. Запросите нужные данные.
  2. Создайте ResultSet в поток XML.

Безопасность должнабыть отдельной заботой.

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