网站首页 > 文章中心 > 其它

数据库备份代码java

作者:小编 更新时间:2023-10-08 13:12:00 浏览量:187人看过

如何用Java实现MySQL数据库的备份和恢复

MySQL的一些前台工具是有备份恢复功能的,可是如何在我们的应用程序中实现这一功能呢?本文提供了示例代码来说明如何使用Java代码实现MySQL数据库的备份恢复.

本次实现是使用了MySQL数据库本身提供的备份命令mysqldump和恢复命令mysql,在java代码中通过从命令行调用这两条命令来实现备份和恢复.备份和恢复所使用的文件都是sql文件.

本代码是参照网上某网友提供的源码完成的.

数据库备份代码java-图1

[java] view plaincopy

package xxx.utils;

import java.io.BufferedReader;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

数据库备份代码java-图2

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStream;

import java.io.OutputStreamWriter;

import java.io.PrintWriter;

import java.io.UnsupportedEncodingException;

数据库备份代码java-图3

/**

* MySQL数据库的备份与恢复 缺陷:可能会被杀毒软件拦截

*

* @author xxx

* @version xxx

*/

public class DatabaseBackup {

/** MySQL安装目录的Bin目录的绝对路径 */

private String mysqlBinPath;

/** 访问MySQL数据库的用户名 */

private String username;

/** 访问MySQL数据库的密码 */

private String password;

public String getMysqlBinPath() {

return mysqlBinPath;

}

public void setMysqlBinPath(String mysqlBinPath) {

this.mysqlBinPath = mysqlBinPath;

public String getUsername() {

return username;

public void setUsername(String username) {

this.username = username;

public String getPassword() {

return password;

public void setPassword(String password) {

this.password = password;

public DatabaseBackup(String mysqlBinPath, String username, String password) {

if (!mysqlBinPath.endsWith(File.separator)) {

mysqlBinPath = mysqlBinPath + File.separator;

* 备份数据库

* @param output

* 输出流

* @param dbname

* 要备份的数据库名

public void backup(OutputStream output, String dbname) {

String command = "cmd /c " + mysqlBinPath + "mysqldump -u" + username

PrintWriter p = null;

BufferedReader reader = null;

try {

Process process = Runtime.getRuntime().exec(command);

InputStreamReader inputStreamReader = new InputStreamReader(process

reader = new BufferedReader(inputStreamReader);

String line = null;

while ((line = reader.readLine()) != null) {

p.println(line);

p.flush();

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

} catch (IOException e) {

} finally {

if (reader != null) {

reader.close();

if (p != null) {

p.close();

* 备份数据库,如果指定路径的文件不存在会自动生成

* @param dest

* 备份文件的路径

* 要备份的数据库

public void backup(String dest, String dbname) {

OutputStream out = new FileOutputStream(dest);

backup(out, dbname);

} catch (FileNotFoundException e) {

* 恢复数据库

* @param input

* 输入流

* 数据库名

public void restore(InputStream input, String dbname) {

String command = "cmd /c " + mysqlBinPath + "mysql -u" + username

+ " -p" + password + " " + dbname;

OutputStream out = process.getOutputStream();

String outStr = null;

StringBuffer sb = new StringBuffer("");

BufferedReader br = new BufferedReader(new InputStreamReader(input,

while ((line = br.readLine()) != null) {

sb.append(line + "/r/n");

outStr = sb.toString();

writer.write(outStr);

writer.flush();

out.close();

br.close();

writer.close();

public void restore(String dest, String dbname) {

InputStream input = new FileInputStream(dest);

restore(input, dbname);

public static void main(String[] args) {

Configuration config = HibernateSessionFactory.getConfiguration();

String binPath = config.getProperty("mysql.binpath");

String userName = config.getProperty("connection.username");

String pwd = config.getProperty("connection.password");

DatabaseBackup bak = new DatabaseBackup(binPath, userName, pwd);

bak.backup("c:/ttt.sql", "ttt");

bak.restore("c:/ttt.sql", "ttt");

最后的main方法只是一个简单的使用方法的示例代码.

本人所做的项目是使用了hibernate的,而这里需要提供MySQL的bin路径和用户名、密码,而hibernate.cfg.xml中本身就是需要配置数据库的用户名和密码,所以我把MySQL的bin路径也直接配置到了这个文件里面,也不需要创建专门的配置文件,不需要写读取配置文件的接口了.

如果不明白,可以去看hibernate.cfg.xml的说明,里面是可以配置其他的property的

java里面的sql数据库备份代码怎么写的?

直接用SQL语句(完全备份):

backup

database

数据库

to

disk='c:\你的备份文件名'

java中 sql数据库备份代码怎么写

最简单的SQL语句:备份与还原SQL Server自带的数据库

在服务器上备份:

use Northwind

Backup database Northwind to disk='d:\Northwind_bak.dat' with init

RESTORE DATABASE NorthNwind FROM DISK = 'd:\Northwind_bak.dat'

备份数据库这一操作在客户机上实现

客户机:machine

共享目录:share (要完全共享,可写权限)

backup:

bakcup database dbname to disk='\\machine\share\data.bak' with init

\\machine\share目录要有写权限.

restore:

restore database dbname from disk='\\machine\share\data.bak'

//

备注:restore 语句有很多的选项,可以查看企业管理器的在线帮助.如下

备份与还原数据库的相关内容:

备份是定期的,而不是实时的,所以利用备份并不能完全恢复数据库,它只能将数据库恢复到制作备份的那一刻 ...... 数据库日志是实时的,他忠实的记录下所有对数据库的更新操作.所以呢,当磁盘出现故障造成数据库损坏时,就可以首先利用备份恢复数据库(大部分数据),然后运行数据库日志,即将备份后所做的操作重新在做一遍,从而将数据库完全恢复.

--备份完整的数据库---------------------------------------------------------------

//创建一个备份设备:

① Create the backup device for the full MyNwind backup.///

USE master

--备份数据库的日志---------------------------------------------------------------

--1. Create the log backup device.

BACKUP LOG MyNwind TO MyNwindLog1

try

AdoQuery1.Close;

AdoQuery1.SQL.Clear;

AdoQuery1.SQL.Add('backup database pubs');

AdoQuery1.SQL.Add('to disk='+''''+edtPath.Text+'''');

AdoQuery1.ExecSQL;

except

ShowMessage('备份数据库失败!');

exit;

end;

SQL server的备份

=========================================================================

备份:

with adocommand_restore do//用ADocommand控件

begin

CommandText:='use Master';//

Execute;

CommandText:='execute sp_helpdevice';//系统存储过程

Execute ;

CommandText:='backup database '+'db_name'+' to disk='''+FileName+''' with init';//这行应当是这样

CommandText:='Use '+'db_name';//这行应当是这样

application.MessageBox('已经成功备份数据库','数据库备份',MB_OK + MB_ICONINFORMATION);

恢复:

with adocommand1 do//用AdoCommand控件

CommandText:='use Master';

CommandText:='execute sp_helpdevice';

CommandText:='Restore database '+'db_name'+' From disk='''+'c:\data1.bak'+''' with replace';//这行应当是这样

application.MessageBox('已经成功恢复数据库','数据库恢复',MB_OK + MB_ICONINFORMATION);

*注:db_name指数据库的名称

以上就是土嘎嘎小编为大家整理的数据库备份代码java相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章