续写:java备份mysql数据库保存到xml中

其中java备份数据库的代码注释是//开头,例如://1.获得所有的数据库
 xml的注释是/** #1 创建document */ 为了方便大家看我采用了不同的注释

@Test
 public void backDB2Xml() throws Exception{  //2 to  4 for
  
  String driver = "com.mysql.jdbc.Driver";
  String url = "jdbc:mysql://localhost:3306/?useUnicode=true&characterEncoding=UTF-8";
  String user = "root";
  String password = "1234";
  Class.forName(driver);
  //链接
  Connection conn = DriverManager.getConnection(url, user, password);
  //语句执行者
  Statement st = conn.createStatement();
  
  //0.数据库的元数据
  DatabaseMetaData databaseMetaData = conn.getMetaData();
  
  /** #1 创建document */
  Document document = DocumentHelper.createDocument();
  /** #2添加根元素 */
  Element rootElement = document.addElement("mysql");
  
  //1.获得所有的数据库
  ResultSet catalogResultSet = databaseMetaData.getCatalogs();
  
  //2.遍历所有的数据库
  while(catalogResultSet.next()){
   //3.获得数据库的名称
   String databaseName = catalogResultSet.getString(1);
   
   /** #3创建 <database> */
   Element dataBaseElement = rootElement.addElement("database");
   /** #4设置数据的名称 */
   dataBaseElement.addAttribute("name", databaseName);
   
   //4.使用数据库
   st.execute("use " + databaseName);
   //5.获得当前数据库的所有的表
   ResultSet tableResultSet = databaseMetaData.getTables(databaseName, null, null, null);
   
   //6.遍历所有的表名
   while(tableResultSet.next()){
    //7.表名
    String tableName = tableResultSet.getString(3);
    
    /** #5 给database添加table */
    Element tableElement = dataBaseElement.addElement("table");
    /** #6table元素添加name属性 */
    tableElement.addAttribute("name", tableName);
    
    //8.获得当前表的所有数据
    String sql = "select * from " + tableName;
    //9.所有数据的结果集
    ResultSet dataResultSet = st.executeQuery(sql);  //行
    //10.获得数据的元数据
    ResultSetMetaData resultSetMetaData = dataResultSet.getMetaData();
    //11.获得列数
    int columnCount = resultSetMetaData.getColumnCount();  //列
    
    //12遍历行,数据的结果集
    while(dataResultSet.next()){
     
     /** #7给table元素添加data元素 */
     Element dataElement = tableElement.addElement("data");
     
     //13获得每一列的数据  列
     for(int i = 1 ; i <= columnCount ; i ++){
      /** #8给data元素添加column */
      Element columnElement = dataElement.addElement("column");
      //14 获得列名
      String columnName = resultSetMetaData.getColumnName(i);
      /** #9给column元素设置name */
      columnElement.addAttribute("name", columnName);
      //15列的类型
      String columnType = resultSetMetaData.getColumnTypeName(i);
      /** #10 column元素设置type */
      columnElement.addAttribute("type", columnType);
      //16数据
      Object value = dataResultSet.getObject(columnName);
      if(value != null){
       //System.out.println(columnName + " ## " + columnType + " ** " + value);
       /** #11 */
       columnElement.setText(value.toString());
      }
     }
    }
   }
   
  }
  
  /** #12将document保存到xml中 */
  FileOutputStream xmlOut = new FileOutputStream(new File("mysql_back.xml"));
  XMLWriter xmlWriter = new XMLWriter(xmlOut,OutputFormat.createPrettyPrint());
  xmlWriter.write(document);
  xmlWriter.close();
  
 }

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值