• JSP 实现 之 调用java方法实现MySQL数据库备份和恢复


    package cn.qm.db;  
    import java.io.BufferedReader;  
    import java.io.DataInputStream;  
    import java.io.IOException;  
    import java.io.InputStreamReader;  
      
      
    public class Command {  
        /*  
        public static void main(String[] args) throws IOException {  
            Command com = new Command();  
            com.backupDatebase("localhost","root","root", "JXC", "D:/jxc.sql");  
        }  
          
        /**  
         * 执行dos命令  
         * @param cmd  
         * @return  
         */  
        public String execCmd(String cmd) {  
            StringBuffer sb = new StringBuffer("");  
            StringBuffer str = new StringBuffer();  
            str.append("cmd.exe /c "").append(cmd).append(""");  
            System.out.println(str);        //打印执行的命令  
            Process ls_proc;  
            try {  
                ls_proc = Runtime.getRuntime().exec(str.toString());  
                BufferedReader in = new BufferedReader(  
                                        new InputStreamReader(  
                                            new DataInputStream(ls_proc.getInputStream())));  
                String ss = "";  
                while((ss = in.readLine()) != null) {  
                    sb.append(ss).append("
    ");  
                }  
                in.close();  
            } catch (IOException e) {  
                e.printStackTrace();  
            }   
      
            return sb.toString();  
        }  
          
        /**  
         * 执行mysql数据库备份  
         * @param ip  
         * @param username  
         * @param password  
         * @param datebaseName  
         * @param filePath  
         * @return  
         */  
        public boolean backupDatebase(String ip, String username, String password,String datebaseName, String filePath) {  
            String strCommand = "mysqldump -h "+ip+" -u" + username + " -p" + password + " " + datebaseName + " > " + filePath;  
            String result = execCmd(strCommand);  
            System.out.println(result);  
            return true;  
        }  
          
        /**  
         * 根据返回结果验证是否成功  
         * @param result  
         * @return  
         */  
        public boolean check(String result) {  
            return true;  
        }  
    }  

     在JSP页面只要调用这个JAVA类就可以。(文件名只能是.sql)

    <%@ page language="java" import="java.util.*,cn.qm.db.*" pageEncoding="UTF-8"%>  
    <%  
    String path = request.getContextPath();  
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
    %>  
      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <base href="<%=basePath%>">  
          
        <title>数据库备份测试</title>  
          
        <meta http-equiv="pragma" content="no-cache">  
        <meta http-equiv="cache-control" content="no-cache">  
        <meta http-equiv="expires" content="0">      
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
        <meta http-equiv="description" content="This is my page">  
        <!--  
        <link rel="stylesheet" type="text/css" href="styles.css">  
        -->  
      
      </head>  
        
      <body>  
    <%  
    Command com = new Command();  
    String ip = "localhost";//ip地址  
    String username = "root";//MySQL数据库的用户名  
    String password = "root";//MySQL数据库的密码  
    String database = "JXC";//数据库名字  
    String url = "D:/jxc.sql";//备份的目的地址  
    boolean check = com.backupDatebase(ip,username,password,database,url);  
    if(check){  
     %>  
     数据库备份成功  
     <%} %>  
      </body>  
    </html>  

    下面是恢复数据的代码。

    package cn.qm.db;  
    import java.io.*;   
    import java.lang.*;   
      
    /*   
    * 还原MySql数据库   
    * */   
    public class Recover {   
    public boolean load(){  
        String filepath = "d:\jxc.sql"; // 备份的路径地址    
          //新建数据库test   
      
          String stmt1 = "mysqladmin -u root -proot create jxctest";   
      
          String stmt2 = "mysql -u root -proot jxctest < " + filepath;   
          String[] cmd = { "cmd", "/c", stmt2 };   
      
          try {   
          Runtime.getRuntime().exec(stmt1);   
          Runtime.getRuntime().exec(cmd);   
          System.out.println("数据已从 " + filepath + " 导入到数据库中");   
          } catch (IOException e) {   
          e.printStackTrace();   
          }   
          return true;  
    }  
    }   
    <%@ page language="java" import="java.util.*,cn.qm.db.*" pageEncoding="UTF-8"%>  
    <%  
    String path = request.getContextPath();  
    String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";  
    %>  
      
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">  
    <html>  
      <head>  
        <base href="<%=basePath%>">  
          
        <title>数据恢复测试</title>  
          
        <meta http-equiv="pragma" content="no-cache">  
        <meta http-equiv="cache-control" content="no-cache">  
        <meta http-equiv="expires" content="0">      
        <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">  
        <meta http-equiv="description" content="This is my page">  
        <!--  
        <link rel="stylesheet" type="text/css" href="styles.css">  
        -->  
      
      </head>  
        
      <body>  
      
    <%  
    Recover com = new Recover();  
    String url = "D:/jxc.sql";  
    boolean check = com.load();  
    if(check){  
     %>  
     数据库恢复成功  
     <%} %>  
      </body>  
    </html> 

     

  • 相关阅读:
    linux socat创建简单的tun隧道
    【k8s】sc-nfs-pod
    c#中equals和==
    数据结构之哈希表
    数据结构之红黑树
    数据结构之2-3查找树
    数据结构之二叉查找树
    数据结构之递归与栈
    数据结构之二分查找法(折半查找)
    数据结构之基于无序链表的集合和映射
  • 原文地址:https://www.cnblogs.com/jokerjason/p/5860292.html
Copyright © 2020-2023  润新知