您的位置:首页 > 编程语言 > Java开发

在JSP页面调用JAVA方法实现MySQL数据库的备份和恢复

2012-11-29 09:41 901 查看
今天弄了好久,终于搞定了这个问题。使用java代码实现数据库的备份。

Java代码代码



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("\n");

}

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)

Html代码代码



<%@ 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>

下面是恢复数据的代码。

Java代码代码



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;

}

}

Html代码代码



<%@ 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐