首页 > 代码库 > 模拟电话簿系统,新增功能:备份数据和恢复备份

模拟电话簿系统,新增功能:备份数据和恢复备份

在原来的系统之上增加了两个新的功能,备份数据和恢复备份:

技术分享

下面是两个功能的具体实现方法:

public void saveall() // 备份所有数据
    {
        List<Person> list1 = new ArrayList();
        try {
            // 加载数据库驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");
            // 获取与数据库的连接
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "text0816",
                    "666666");
            // 获取操作数据库的声明
            Statement st = conn.createStatement();

            String sql = "select * from person";

            ResultSet rs = st.executeQuery(sql);

            
            while (rs.next()) {
                // 实例化Person类
                Person per = new Person();
                // 添加信息到per对象中
                per.setId(rs.getInt("id"));
                per.setName(rs.getString("name"));
                per.setAge(rs.getInt("age"));
                per.setSex(rs.getString("sex"));
                per.setTelNum(rs.getLong("telnum"));
                per.setAddress(rs.getString("address"));

                // 添加per对象放到list集合中
                list1.add(per);
            
            }            
            
            File file = new File("e:/DIANHUABU");
            if (!file.exists()) {
                file.mkdirs();
            }
            ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("e:/DIANHUABU/OLDMESSAGE.obj"));

            out.writeObject(list1);

            out.close();
            
            System.out.println("数据保存完成...");
            // System.out.println(cards);

            // 释放资源
            rs.close();
            st.close();
            conn.close();

        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }
    }
public void recoverall() //恢复备份
    {
        try {
            ObjectInputStream in = new ObjectInputStream(new FileInputStream("e:/DIANHUABU/OLDMESSAGE.obj"));

            List<Person> list1 = (List<Person>) in.readObject();

            // 加载数据库驱动
            Class.forName("oracle.jdbc.driver.OracleDriver");
            // 获取与数据库的连接
            Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl", "text0816",
                    "666666");
            // 获取操作数据库的声明
            Statement st = conn.createStatement();

            for (Person p : list1) 
            {
                
                String sql = "insert into person values(‘"+p.getId()+"‘,‘"+p.getName()+"‘,‘"+p.getAge()
                        +"‘,‘"+p.getSex()+"‘,‘"+p.getTelNum()+"‘,‘"+p.getAddress()+"‘)";

                st.executeUpdate(sql);
            
            }
            
            System.out.println("恢复备份成功!");
            
            // 释放资源
            st.close();
            conn.close();

        } catch (Exception e) {
            // TODO 自动生成的 catch 块
            e.printStackTrace();
        }

    }

测试结果截图如下:

首先备份所有的数据:

技术分享

然后删除所有的数据;

技术分享

此时,数据库中的所有数据已经全部被清空

技术分享

最后,我们恢复备份:

技术分享

现在再查看数据库中的数据;

技术分享

 

模拟电话簿系统,新增功能:备份数据和恢复备份