本文不是正规的备份恢复操作,但能简单的实现功能
本文没有用网上的教程中的存储过程
其他前辈的博客(正规方法)——点我跳转
博主本机用的是SQLServer数据库
先说一下原理:
在命令行下,可以通过sqlcmd代码(SQLServer和MySql代码不通)实现数据库的备份与恢复,代替了软件的图形界面操作
我们可以在web中写一个备份与恢复的按钮,在绝对路径下写一个备份和恢复的.bat文件,通过按钮触发这个文件的执行
如下图
先说一下SqlServer环境下
备份:
恢复
代码
sqlcmd -S localhost\MSSQLSERVER,1433 -U sa -P sa -d master -Q"BACKUP DATABASE studentwork to disk='D:\idea-workspace\JavaEE\Student Work\backup.bak'"
pause
@ echo off
%1 %2
ver|find "5.">nul&&goto :Admin
mshta vbscript:createobject("shell.application").shellexecute("%~s0","goto :Admin","","runas",1)(window.close)&goto :eof
:Admin
net stop MSSQL$SQLEXPRESS
net start MSSQL$SQLEXPRESS
sqlcmd -S localhost\MSSQLSERVER,1433 -U sa -P sa -d master -Q"RESTORE DATABASE studentwork FROM disk='D:\idea-workspace\JavaEE\Student Work\backup.bak'"
pause
核心代码写完了 剩下就是触发这两个bat文件
我是写到了一个类里了,直接调用两个方法
如图这个类
package com.dhx.dao;
import java.io.IOException;
public class BackUpDao {
public void backup() throws IOException {
Runtime.getRuntime().exec("D:/idea-workspace/JavaEE/Student Work/dbbackup.bat");
}
public void restore() throws IOException {
Runtime.getRuntime().exec("D:/idea-workspace/JavaEE/Student Work/dbrestore.bat");
}
}
servlet中调用这两个方法
写了个表单+ 按钮 直接提交
然后测试
备份之后 目录下会出现一个bak文件
恢复
测试是没问题的
要注意的是编写备份和恢复那两个配置文件的时候 一定要写对
附下同组小弓同学的Mysql的代码,同时也特别感谢小弓同学提供的思路!
编写dbbackup文件和dbrestore文件
mysqldump -hlocalhost -uroot -padmin studentwork > G:\JSP2008\workplace\Student_Work\backup.sql
Pause
mysql -uroot -padmin studentwork < G:\JSP2008\workplace\Student_Work\backup.sql
Pause
下一篇会把这次的数据库课设写一下出来,供大家参考