3

データベースからデータを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) {
               }
       }
   }
}

ただし、このクラスのエクスポートは、特定のテーブルからのデータのみをエクスポートするため、データが特定のテーブルからではなく、データベース全体 (つまり、すべてのテーブル) からエクスポートされることを確認する方法です。つまり、出力 XML ファイル タイプを取得する必要があります。

  <database>
      <table1>
             <id> </ id>
             <Name> </ Name>
                           ...
       </ table1>

        <table2>
               ...
       </ table2>


</ database>
4

3 に答える 3

2

使用する:

show tables

次に、テーブルをループしてメソッドを呼び出しますgetTableData()

列名も取得することを検討してください。
SHOW columns FROM table

于 2012-07-08T06:18:49.900 に答える
0

Dbunitは、データベース データを XML として操作するための確立されたツールです。

関連するデータのサブセットをデータベースから抽出するのに役立つもう 1 つのツールは、jailerです。また、dbunit XML 形式もサポートしています。

于 2012-07-08T08:14:35.047 に答える
0

これを使用できます: dbsql2xmlは、リレーショナル データベースを階層型 XML に変換 (エクスポート、変換) するための Java ツール (クラス) です。JRE 5.0、JDBC、および SQL DBMS が必要です。「dbsql2xml」は XML ドキュメントを使用して、データベース テーブルと列をツリー XML の要素にマッピングします。

于 2012-07-08T06:28:02.087 に答える