📄 databl.java
字号:
package jxc.web;
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.sql.ResultSet;
import java.sql.SQLException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jxc.com.DBConnect;
import jxc.util.StrFun;
public class DataBL {
private String path;
private String bfName;
private String usname;
private boolean isError=false;
private String StrError="";
private int bfTime;
private int bfDay;
public int getBfTime() {
return bfTime;
}
public void setBfTime(int bfTime) {
this.bfTime = bfTime;
}
public int getBfDay() {
return bfDay;
}
public void setBfDay(int bfDay) {
this.bfDay = bfDay;
}
public String getBfName() {
return bfName;
}
public void setBfName(String bfName) {
this.bfName = bfName;
}
public String getUsname() {
return usname;
}
public void setUsname(String usname) {
this.usname = usname;
}
public String getPath() {
return path;
}
public void setPath(String path) {
this.path = path;
}
public boolean isError() {
return isError;
}
public void setError(boolean isError) {
this.isError = isError;
}
public String getStrError() {
return StrError;
}
public void setStrError(String strError) {
StrError = strError;
}
public boolean getBfPath() throws Exception {//得到备份目录
String Str="Select * from bfpath where id=1";
try {
DBConnect dbc = new DBConnect(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = dbc.executeQuery(Str);
if (rs.next()){
path=rs.getString("path");
bfName=rs.getString("bfName");
bfTime=rs.getInt("bfTime");
bfDay=rs.getInt("bfDay");
}
rs.close();
dbc.close();
return true;
}
catch (SQLException sqle){
return false;
}
}
public void bfpathEdit(HttpServletRequest request) throws Exception {//修改备份目录
path=StrFun.getString(request,"path");
bfName=StrFun.getString(request,"bfName");
bfTime=StrFun.getInt(request,"bfTime");
bfDay=StrFun.getInt(request,"bfDay");
String Str="Update bfpath set path='"+path+"',bfName='"+bfName+"',bfTime='"+bfTime+"',bfDay='"+bfDay+"' where id=1";
try {
DBConnect dbc = new DBConnect();
dbc.executeUpdate(Str);
dbc.close();
StrError=StrError+"success!<br>";
} catch (Exception e) {
e.printStackTrace();
StrError=StrError+"error!<br>";
}
}
//先设置环境变量:path=D:\Program Files\MySQL\MySQL Server 5.0\bin(MYSQL安装目录)
public boolean backupAuto() {//备份
String Str="Select * from bfpath where id=1";
try {
DBConnect dbc = new DBConnect(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = dbc.executeQuery(Str);
if (rs.next()){
path=rs.getString("path");
bfName=rs.getString("bfName");
}
Runtime rt = Runtime.getRuntime();
String mysql = "mysqldump -uroot -p123456 jxc";
// 调用 mysql 的 cmd:
Process child = rt
.exec("cmd /c "+mysql);// 设置导出编码为utf8。这里必须是utf8
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
// 要用来做导入用的sql目标文件:
FileOutputStream fout = new FileOutputStream(
path+bfName+".sql");
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
in.close();
xx.close();
br.close();
writer.close();//
fout.close();//
try {
String insert = "Insert into bfhyb(name,BHdate,bfpath,usname) values('备份',now(),'"
+ path + "','系统')";
dbc.executeUpdate(insert);
dbc.close();
} catch (Exception e) {
e.printStackTrace();
}
rs.close();
dbc.close();
System.out.println("/* Output OK! */");
String error="备份成功!";
StrError = (new String(error.getBytes("ISO-8859-1"),"UTF-8"));
} catch (Exception e) {
e.printStackTrace();
StrError=StrError+"failure!<br>";
}
return true;
}
public boolean backup(HttpSession session) {//备份
String Str="Select * from bfpath where id=1";
try {
DBConnect dbc = new DBConnect(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = dbc.executeQuery(Str);
if (rs.next()){
path=rs.getString("path");
bfName=rs.getString("bfName");
}
Runtime rt = Runtime.getRuntime();
String mysql = "mysqldump -uroot -p123456 jxc";
// 调用 mysql 的 cmd:
Process child = rt
.exec("cmd /c "+mysql);// 设置导出编码为utf8。这里必须是utf8
// 把进程执行中的控制台输出信息写入.sql文件,即生成了备份文件。注:如果不对控制台信息进行读出,则会导致进程堵塞无法运行
InputStream in = child.getInputStream();// 控制台的输出信息作为输入流
InputStreamReader xx = new InputStreamReader(in, "utf8");// 设置输出流编码为utf8。这里必须是utf8,否则从流中读入的是乱码
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
// 组合控制台输出信息字符串
BufferedReader br = new BufferedReader(xx);
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
// 要用来做导入用的sql目标文件:
FileOutputStream fout = new FileOutputStream(
path+bfName+".sql");
OutputStreamWriter writer = new OutputStreamWriter(fout, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
in.close();
xx.close();
br.close();
writer.close();
fout.close();
usname=String.valueOf(session.getAttribute("usname"));
try {
String insert = "Insert into bfhyb(name,BHdate,bfpath,usname) values('备份',now(),'"
+ path + "','"+usname+"')";
dbc.executeUpdate(insert);
dbc.close();
} catch (Exception e) {
e.printStackTrace();
}
rs.close();
dbc.close();
System.out.println("/* Output OK! */");
String error="备份成功!";
StrError = (new String(error.getBytes("ISO-8859-1"),"UTF-8"));
} catch (Exception e) {
e.printStackTrace();
StrError=StrError+"failure!<br>";
}
return true;
}
public boolean load(HttpSession session) {//还原
String Str="Select * from bfpath where id=1";
try {
DBConnect dbc = new DBConnect(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = dbc.executeQuery(Str);
if (rs.next()){
path=rs.getString("path");
bfName=rs.getString("bfName");
}
String fPath = path+bfName+".sql";
Runtime rt = Runtime.getRuntime();
// 调用 mysql 的 cmd:
Process child = rt.exec("mysql -uroot -p123456 jxc ");
OutputStream out = child.getOutputStream();//控制台的输入信息作为输出流
String inStr;
StringBuffer sb = new StringBuffer("");
String outStr;
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream(fPath), "utf8"));
while ((inStr = br.readLine()) != null) {
sb.append(inStr + "\r\n");
}
outStr = sb.toString();
OutputStreamWriter writer = new OutputStreamWriter(out, "utf8");
writer.write(outStr);
// 注:这里如果用缓冲方式写入文件的话,会导致中文乱码,用flush()方法则可以避免
writer.flush();
// 别忘记关闭输入输出流
out.close();
br.close();
writer.close();
usname=String.valueOf(session.getAttribute("usname"));
try {
String insert = "Insert into bfhyb(name,BHdate,bfpath,usname) values('还原',now(),'"
+ path + "','"+usname+"')";
dbc.executeUpdate(insert);
dbc.close();
} catch (Exception e) {
e.printStackTrace();
}
rs.close();
dbc.close();
System.out.println("/* Load OK! */");
StrError=StrError+"备份成功!<br>".getBytes("gb2312");
} catch (Exception e) {
e.printStackTrace();
StrError=StrError+"failure!<br>";
}
return true;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -