有一个代码可以在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>
答案 0 :(得分:2)
使用:
show tables
然后循环遍历表并调用方法getTableData()
您可能还需要考虑获取列名称:
SHOW columns FROM table
答案 1 :(得分:0)
您可以使用:dbsql2xml是用于将关系数据库转换(导出,转换)为分层XML的Java工具(类)。它需要JRE 5.0,JDBC和SQL DBMS。 “dbsql2xml”使用XML文档将数据库表和列映射到树XML的元素
答案 2 :(得分:0)