mysqlDatabase Backup的東西,然後研究了一下java語言中怎麼來調用cmd的命令來實現mysqldump的備份功能。具體實現如下:
1.首先設定環境變數:有兩種方式。第一種,在環境變數中添加 mysql_home,設定內容為
mysql的安裝路徑,然後,在path中添加路徑
%mysql_home%bin
。第二種方法,不建立mysql_home,而是直接在path中添加
mysql安裝路徑bin 。這樣,調用cmd的時候可以直接找到mysqldump和mysql命令了。
2.現在編寫java方法類來實現資料庫的備份與還原。代碼如下:
import java.io.ioexception;
public class db_deal
{
private static string
str=null;
public static void backup(){
//使用mysqldump來備份資料庫,格式"mysqldump -u username -ppassword --opt
database_name > direction/backup_name.sql"
str="mysqldump -u root -proot
--opt hjh
>
d:/test.sql";
try {
runtime rt=runtime.getruntime();
rt.exec("cmd /c"+str);
//runtime.getruntime().exec(
)這個方法可以實現對命令的調用。具體內容看api
//上面可以cmd調用控制台,然後執行str中的字串表示的命令。
system.out.println("successly!");
} catch (ioexception e) {
e.printstacktrace();
system.out.println("something
wrong!");
}
}
public static void load(){
str="mysql -u root -proot j2603
< d:/test.sql";
// mysql命令可以實現資料庫的還原。格式"mysql -u username
-ppassword
database_name
<
back_up_dir "
runtime rt=runtime.getruntime();
try {
rt.exec("cmd /c"+str);
system.out.println("restore successly!");
} catch (ioexception e) {
e.printstacktrace();
system.out.println("restore fail!");
}
}
}
3.最後要備份的地方給這個類執行個體化,然後調用backup(),load()來實現mysql資料庫的簡單備份跟還原
//下面來看看備份mssql資料庫代碼
string
webtruepath=getservletcontext().getrealpath(request.getservletpath());//取servlet的真實路徑
java.io.file file=new java.io.file(webtruepath);
file=file.getparentfile();
string
path=file.getpath()+"/../web-inf/lib/"+name+".dbbak";//name檔案名稱
string baksql="backup database school to disk=? with
init";//sql語句
java.sql.preparedstatement
bak=dbs.getconnection().preparestatement(baksql);
bak.setstring(1,path);//path必須是絕對路徑
if(!bak.execute())over="備份成功";
else over="備份失敗";
bak.close();
資料庫恢複
if(!dbs.close()){
over="關閉所有連結失敗";
}else{
string
webtruepath=getservletcontext().getrealpath(request.getservletpath());
java.io.file file=new java.io.file(webtruepath);
file=file.getparentfile();
string path=file.getpath()+"/../web-inf/lib/"+name;
string resql="restore database school from disk=? with
replace";
class.forname(dbinf.getdriverclassname());
java.sql.connection
con=drivermanager.getconnection(dbinf.getmester());
java.sql.preparedstatement
restmt=con.preparestatement(resql);
restmt.setstring(1,path);//path必須是絕對路徑
if(!restmt.execute())over="恢複成功";
else over="恢複失敗";
restmt.close();
con.close();
}
恢複的時候,有點煩,要關閉所有與資料庫的串連,這裡我連的是mestar,其實可以
jdbc:microsoft:sqlserver://localhost:1433;user=username;password=pass
串連資料庫伺服器,不連指定的資料庫.這樣也可以
原文:http://blog.sina.com.cn/s/blog_67af0caa0100lgxm.html