##如何利用JAVA实现SQLserver数据库的数据备份与数据还原?
(以stu学生类为例)
-需要四个包
· List item
· ui:主窗体
· dao:删除、添加、模糊查询功能
· util:DBHelper类连接数据库
· entity:stu学生实体类(注:实体类也就是序列化的对象必须实现Serializable接口)(implements Serializable)、
-数据备份思路:
· 打开文件选择器,选择想要将数据备份到的文件
· 创建File对象获取选中的文件
· 创建输出流,将file对象放入文件路径处
· 包装过滤留
· 写出数据,注:因放Arraylist集合对象到数据处
· 调用showinfo方法给表格重新绑定数据
· 关闭流
-数据还原思路:
· 打开文件选择器,选择想要将数据还原到的文件
· 创建File对象获取选中的文件
· 创建输入流,将file对象放入文件路径处
· 包装过滤流
· 读取数据,进行强转
· 调用dao类,循环添加功能,将数据添加还原到文件中去
· 调用showinfo方法给表格重新绑定数据
· 关闭流
-一键删除所有数据:调用dao类中的删除功能(delete tb_stu)
接下来是代码展示
package ui;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.sql.Date;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.jbutton;
import javax.swing.JComboBox;
import javax.swing.JFileChooser;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;
import dao.Stu_Dao;
import entity.Stu;
public class Index_ui extends JFrame{
//上
JPanel jp1=new JPanel();
JComboBox jcb=new JComboBox<>();//下拉框
JTextField jtf=new JTextField(20);//文本框
jbutton jbxz=new jbutton("查询");//查询按钮
//中
JTable jt=new JTable();
JScrollPane jsp=new JScrollPane(jt);//滚动面板
DefaultTableModel dtm=new DefaultTableModel();//设置表格
//下
JPanel jp2=new JPanel();
jbutton jbbf=new jbutton("文件数据备份");
jbutton jbhy=new jbutton("文件数据还原");
jbutton jbsc=new jbutton("一键删除数据");
//创建file对象
File file=null;
public Index_ui() {
this.setTitle("主窗体");
this.setSize(500, 500);
this.setDefaultCloseOperation(3);
this.setLocationRelativeTo(null);
//上
jp1.add(jcb);
jcb.addItem("编号");
jcb.addItem("姓名");
jcb.addItem("性别");
jcb.addItem("年龄");
jcb.addItem("地址");
jp1.add(jtf);
jp1.add(jbxz);
//中
jt.setModel(dtm);
dtm.addColumn("编号");
dtm.addColumn("姓名");
dtm.addColumn("性别");
dtm.addColumn("年龄");
dtm.addColumn("地址");
//绑定数据
showinfo("sid", "");
//下
jp2.add(jbbf);
jp2.add(jbhy);
jp2.add(jbsc);
//给文件备份按钮添加事件
jbbf.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//调用dao类中的模糊查询,讲数据放入集合
ArrayList li=new Stu_Dao().selete("sid", "");
源码交易:http://jy.iis7.com/supply7/
//打开文件选择器
JFileChooser jtc=new JFileChooser();
jtc.showDialog(null, "请选择保存文件");
//选中file对象
file=jtc.getSelectedFile();
if(file!=null) {
try {
//创建输出流
FileOutputStream fos=new FileOutputStream(file);
//包装过滤流
ObjectOutputStream oos=new ObjectOutputStream(fos);
//写出数据
oos.writeObject(li);
JOptionPane.showMessageDialog(null, "数据备份成功");
//重新绑定数据
showinfo("sid", "");
//关闭流
fos.close();
oos.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
}
});
//给一键删除数据按钮添加方式
jbsc.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
//调用dao类
Stu_Dao dao=new Stu_Dao();
//判断是否删除
int i=JOptionPane.showConfirmDialog(null, "您确定要删除吗?");
if(i==0) {
//调用dao类中的删除,判断是否删除成功
if(dao.delete()>0) {
JOptionPane.showMessageDialog(null, "删除成功");
//重新绑定数据
showinfo("sid", "");
}else {
JOptionPane.showConfirmDialog(null, "删除失败");
}
}
}
});
//给文件数据还原按钮添加事件
jbhy.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
try {
//文件选择器
JFileChooser jfc=new JFileChooser();
jfc.showDialog(null, "请选择数据");
//将选中的文件给file对象
File file=jfc.getSelectedFile();
//创建输入流
FileInputStream fis=new FileInputStream(file);
//包装过滤流
ObjectInputStream ois=new ObjectInputStream(fis);
//读取数据
ArrayList like=(ArrayList)ois.readObject();//强转
Stu_Dao dao=new Stu_Dao();
for (Stu stu : like) {
dao.addstu(stu);
}
JOptionPane.showMessageDialog(null, "数据还原成功");
//重新绑定数据
showinfo("sid", "");
//关闭流
fis.close();
ois.close();
} catch (Exception e2) {
e2.printStackTrace();
}
}
});
this.getContentPane().add(jp1,"North");
this.getContentPane().add(jsp,"Center");
this.getContentPane().add(jp2,"South");
this.setVisible(true);
}
/**
* showinfo方法
* @param col
* @param str
*/
public void showinfo(String col,String str) {
int count=jt.getRowCount();
for(int i=0;i
dtm.removeRow(0);
}
Stu_Dao dao=new Stu_Dao();
ArrayList stu=dao.selete(col, str);
for (Stu ss : stu) {
Vector v=new Vector<>();
v.add(ss.getSid());
v.add(ss.getSname());
v.add(ss.getSsex());
v.add(ss.getSage());
v.add(ss.getSaddress());
dtm.addRow(v);
}
}
public static void main(String[] args) {
new Index_ui();
}
}