📄 databak.java
字号:
package cn.edu.jfcs.actions;
import java.io.InputStream;
import java.lang.reflect.InvocationTargetException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Properties;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.jface.action.Action;
import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.dialogs.ProgressMonitorDialog;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.swt.widgets.DirectoryDialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import cn.edu.jfcs.model.SaveLogInfo;
import cn.edu.jfcs.sys.IAppConstants;
import cn.edu.jfcs.sys.IImageKey;
public class DataBak extends Action {
boolean isSucess = false;
public DataBak() {
setId("cn.edu.jfcs.actions.dataBak");
setText("数据备份@ALT+D");
setToolTipText("数据备份");
setImageDescriptor(AbstractUIPlugin.imageDescriptorFromPlugin(
IAppConstants.APPLICATION_ID, IImageKey.DATA_BAK));
setEnabled(SaveLogInfo.getInstance().getUsertag().equals("2") ? true
: false);
}
public void run() {
// 选择备份目标文件夹对话框
DirectoryDialog directoryDialog = new DirectoryDialog(Display
.getCurrent().getActiveShell());
// 对话框标题
directoryDialog.setText("系统数据备份");
// 对话框提示文字
directoryDialog.setMessage("请选择备份目标文件夹:");
final String detsFolder = directoryDialog.open();
if (detsFolder == null)
return;
InputStream inputStream = IAppConstants.class
.getResourceAsStream("derbyjdbc.properties");
final Properties dbProps = new Properties();
try {
dbProps.load(inputStream);
} catch (Exception e) {
MessageDialog.openError(null, "提示", "无法读取系统数据库配置文件!");
return;
}
ProgressMonitorDialog pmd = new ProgressMonitorDialog(null);
IRunnableWithProgress rwp = new IRunnableWithProgress() {
public void run(IProgressMonitor monitor)
throws InvocationTargetException, InterruptedException {
monitor.beginTask("正在备份数据。。。", IProgressMonitor.UNKNOWN);
String className = dbProps.getProperty("derby.className");
String connURL = dbProps.getProperty("derby.connURL");
String username = dbProps.getProperty("derby.username");
String password = dbProps.getProperty("derby.password");
String baksql = "CALL SYSCS_UTIL.SYSCS_BACKUP_DATABASE(?)";
try {
Class.forName(className);
Connection conn = DriverManager.getConnection(connURL,
username, password);
PreparedStatement ps = conn.prepareStatement(baksql);
ps.setString(1, detsFolder);
ps.execute();
ps.close();
conn.close();
isSucess = true;
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
monitor.done();
}
};
try {
pmd.run(true, false, rwp);
} catch (Exception e) {
e.printStackTrace();
}
if (isSucess)
MessageDialog.openInformation(null, "提示", "数据备份成功!");
else
MessageDialog.openError(null, "提示", "数据备份失败!");
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -