📄 dbbackup.java
字号:
//Copyright 1998 John Wiley and Sons, Inc.import java.io.*;import java.util.*;import java.net.*;import java.sql.*; public class DBBackup extends Object{ Connection connection; Statement statement; String xmlFile; String tableToSave; public DBBackup(String url, String driverName, String user, String passwd, String file, String table) { try { //load the driver Class.forName(driverName); connection = DriverManager.getConnection(url, user, passwd); statement = connection.createStatement(); xmlFile = file; tableToSave = table; } catch (Exception exp) { System.out.println("Error connecting: "+exp); } } public void performBackup() { DatabaseMetaData dbMetaData; ResultSet tables=null; ResultSet resultSet=null; ResultSetMetaData metaData; Vector allTables = new Vector(); PrintWriter out; String tableName,colName; int curType; int i,max; byte[] rawData; int j,rawMax; int k,maxTables; String data; try { out = new PrintWriter( new BufferedWriter( new FileWriter(xmlFile))); if(tableToSave == null) { dbMetaData = connection.getMetaData(); tables = dbMetaData.getTables("","",null,null); while(tables.next()) { allTables.addElement(tables.getString("TABLE_NAME")); System.out.println("Adding "+tables.getString("TABLE_NAME")+" to table list."); } tables.close(); } else { allTables.addElement(tableToSave); } maxTables = allTables.size(); out.println("<?xml version=\"1.0\"?>"); out.println("<!DOCTYPE jdbc SYSTEM \"jdbc.dtd\">"); out.println(); out.println("<DATABASE>"); for(k=0;k<maxTables;k++) { tableName = (String) allTables.elementAt(k); out.println("<TABLE NAME=\""+tableName+"\">"); resultSet = statement.executeQuery("select * from " +tableName); metaData = resultSet.getMetaData(); max = metaData.getColumnCount(); while(resultSet.next()) { out.println("<ROW>"); for(i=1;i<=max;i++) { curType = metaData.getColumnType(i); colName = metaData.getColumnLabel(i); switch(curType) { case Types.CHAR: case Types.VARCHAR: case Types.LONGVARCHAR: case Types.BINARY: case Types.VARBINARY: case Types.LONGVARBINARY: data = resultSet.getString(i); if(data == null) data = ""; else data = URLEncoder.encode(data); out.print("<TEXT NAME=\""+colName+"\">"); out.print(data); out.println("</TEXT>"); break; case Types.TINYINT: case Types.SMALLINT: case Types.INTEGER: case Types.BIGINT: out.print("<NUMERIC NAME=\""+colName+"\">"); out.print(resultSet.getLong(i)); out.println("</NUMERIC>"); break; case Types.FLOAT: case Types.DOUBLE: out.print("<NUMERIC NAME=\""+colName+"\">"); out.print(resultSet.getDouble(i)); out.println("</NUMERIC>"); break; case Types.DATE: out.print("<TEXT NAME=\""+colName+"\">"); out.print(resultSet.getDate(i)); out.println("</TEXT>"); break; case Types.TIME: out.print("<TEXT NAME=\""+colName+"\">"); out.print(resultSet.getTime(i)); out.println("</TEXT>"); break; case Types.TIMESTAMP: out.print("<TEXT NAME=\""+colName+"\">"); out.print(resultSet.getTimestamp(i)); out.println("</TEXT>"); break; default: //do nothing } } out.println("</ROW>"); } resultSet.close(); out.println("</TABLE>"); } out.println("</DATABASE>"); out.close(); } catch (Exception exp) { System.out.println("Error performing backup: "+exp); } } public void close() { try { statement.close(); connection.close(); } catch (Exception exp) { System.out.println("Error closing DB connection: "+exp); exp.printStackTrace(); } } public static void main(String args[]) { String url=null,driver=null,user=null; String password=null,file=null,table=null; DBBackup backup; int i,max; if ((args != null) && (args.length > 1)) { max = args.length; for (i = 0;i < max;i++) { if (args[i].equals("-url")) url = args[++i]; else if (args[i].equals("-driver")) driver = args[++i]; else if (args[i].equals("-user")) user = args[++i]; else if (args[i].equals("-password")) password = args[++i]; else if (args[i].equals("-file")) file = args[++i]; else if (args[i].equals("-table")) table = args[++i]; } } if((url == null)||(driver == null)||(file == null)) { System.out.println("usage: DBBackup" +" -url url" +" -driver driverClassName" +" [-user user]" +" [-password pass]" +" -file XMLFileName" +" [-table tableName]"); System.exit(0); } backup = new DBBackup(url,driver,user,password,file,table); backup.performBackup(); backup.close(); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -