1. 程式人生 > >JDBC 備份還原資料庫

JDBC 備份還原資料庫

jdbcTest.java

package test;

import java.sql.Connection;
import java.sql.SQLException;

import org.junit.Test;

import service.JdbcUtil;
import service.XmlUtil;

public class JdbcTest {

	@Test
	public void testConnection() throws SQLException
	{
		Connection conn = JdbcUtil.getConnection("SQLServer", "Test", "sa", "016051");
		JdbcUtil.transformDataBase(conn);
		
	    XmlUtil.Database2Xml(JdbcUtil.getDataBase());
		JdbcUtil.release(conn, null, null);
	}
	
      public static void main(String [] args) throws SQLException {
    	Connection conn = JdbcUtil.getConnection("SQLServer", "Test", "sa", "016051");
		JdbcUtil.transformDataBase(conn);
		
	    XmlUtil.Database2Xml(JdbcUtil.getDataBase());
		JdbcUtil.release(conn, null, null);
	}
      
      @Test
      public void testXML2Database() throws SQLException{
    	  Connection conn = JdbcUtil.getConnection("SQLServer",  "sa", "016051");
    	  JdbcUtil.createDatabase("H:\\Java\\JavaEE\\DBMSRecovery\\Backups\\20140716172255.xml", conn);
    	  JdbcUtil.release(conn, null, null);
      }
      
      
	
	
}
main.java
package main;

import java.io.File;
import java.sql.Connection;
import java.sql.SQLException;

import service.JdbcUtil;
import service.XmlUtil;

public class Main {

	public static void main(String[] args) {
                    /*備份命令格式:
                     * Java –jar db.jar  -dbType (SQLServer || mysql) -U (uesrName) -P (password) -dbName (dbname)
                     * 恢復命令格式:
                     * Java –jar db.jar  -dbType (SQLServer || mysql) -U (uesrName) -P (password) -path (filepath)
                     * */
		        String dbType=null,uesrName=null,password=null,  dbname=null,filepath=null;
		         
		        //解析命令列引數
		         for (int i = 0; i < args.length; i=i+2) {
					  if (args[i].equals("-dbType")) {
						  dbType = args[i+1];
					  }
					  if (args[i].equals("-U")) {
						  uesrName = args[i+1];
					  }
					  if (args[i].equals("-P")) {
						  password = args[i+1];
					 }
					  if (args[i].equals("-path")) {
						  filepath = args[i+1];
					 }
					  if (args[i].equals("-dbName")) {
						  dbname =  args[i+1];
					}
				}
		            
		         
		         if (dbname != null) {
		        	  	Connection conn;
						try {
							conn = JdbcUtil.getConnection(dbType, dbname, uesrName,password );
							JdbcUtil.transformDataBase(conn);
							XmlUtil.Database2Xml(JdbcUtil.getDataBase());
				            JdbcUtil.release(conn, null, null);
						} catch (SQLException e) {
							System.out.println("資料庫解析備份出現錯誤:"+e.toString());
							return;
						}
				}else if (filepath != null) {
				  	  Connection conn;
					try {
						  conn = JdbcUtil.getConnection(dbType,  uesrName, password);
						  File file = new File(filepath);
						  if (!file.exists()) {
							  System.out.println("XML路徑不存在,請重試");
							  return;
						  }
						  JdbcUtil.createDatabase(filepath, conn);
				    	  JdbcUtil.release(conn, null, null);
					} catch (Exception e) {
						System.out.println("資料庫解析匯入出現錯誤:"+e.toString());
						return;
					}
			    	
				}
          		
	}

}