⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databl.java

📁 web版的进销存系统
💻 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 + -