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

📄 backupframe.java

📁 Java实例入门
💻 JAVA
字号:
package databackup;import java.awt.*;import java.awt.event.*;import javax.swing.*;import com.borland.dx.sql.dataset.*;import javax.swing.event.*;import com.borland.dbswing.*;import javax.swing.border.*;import java.sql.*;import java.beans.*;import com.borland.dx.dataset.*;/** * Title:        数据库备份 * Description:  这是一个数据库备份应用程序 * Copyright:    Copyright (c) 2001 * Company: * @author * @version 1.0 */public class BackupFrame extends JFrame {  JPanel contentPane;  JLabel statusBar = new JLabel();  BorderLayout borderLayout1 = new BorderLayout();  QueryDataSet queryDataSetDb = new QueryDataSet();  Database db = new Database();  JTabbedPane jTabbedPane = new JTabbedPane();  JPanel jPanelBacup = new JPanel();  JPanel jPanelRestore = new JPanel();  BorderLayout borderLayout2 = new BorderLayout();  BorderLayout borderLayout3 = new BorderLayout();  TableScrollPane tableScrollPaneTable = new TableScrollPane();  TitledBorder titledBorder1;  JPanel jPanelTable = new JPanel();  FlowLayout flowLayout1 = new FlowLayout();  JLabel jLabel1 = new JLabel();  JComboBox cboTableFrom = new JComboBox();  JPanel jPanelCmd = new JPanel();  JButton cmdBackup = new JButton();  JdbTable jdbTableDb = new JdbTable();  TableScrollPane tableScrollPaneFile = new TableScrollPane();  TitledBorder titledBorder2;  JPanel jPanelSelFile = new JPanel();  JLabel jLabel2 = new JLabel();  JTextField txtExistFile = new JTextField();  JButton cmdBrowse = new JButton();  JPanel jPanelResCmd = new JPanel();  JLabel jLabel3 = new JLabel();  JComboBox cboTableTo = new JComboBox();  JButton cmdRestore = new JButton();  JdbTable jdbTableFileData = new JdbTable();  QueryDataSet queryDataSetFile = new QueryDataSet();  TextDataFile bakDataFile = new TextDataFile();  QueryDataSet queryDataSetTemp = new QueryDataSet();  boolean dataChanged=false;  /**Construct the frame*/  public BackupFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);    try {      jbInit();    }    catch(Exception e) {      e.printStackTrace();    }  }  /**Component initialization*/  private void jbInit() throws Exception  {    //setIconImage(Toolkit.getDefaultToolkit().createImage(BackupFrame.class.getResource("[Your Icon]")));    contentPane = (JPanel) this.getContentPane();    titledBorder1 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(134, 134, 134)),"表中的数据");    titledBorder2 = new TitledBorder(BorderFactory.createEtchedBorder(Color.white,new Color(134, 134, 134)),"备份文件中的数据");    contentPane.setLayout(borderLayout1);    this.setSize(new Dimension(400, 337));    this.setTitle("数据库备份与恢复");    statusBar.setText(" ");    db.setConnection(new com.borland.dx.sql.dataset.ConnectionDescriptor("jdbc:odbc:JavaTest", "sa", "java", false, "sun.jdbc.odbc.JdbcOdbcDriver"));    db.setTransactionIsolation(java.sql.Connection.TRANSACTION_READ_UNCOMMITTED);    jPanelRestore.setLayout(borderLayout2);    jPanelBacup.setLayout(borderLayout3);    jTabbedPane.addChangeListener(new javax.swing.event.ChangeListener() {      public void stateChanged(ChangeEvent e) {        jTabbedPane_stateChanged(e);      }    });    tableScrollPaneTable.setBorder(titledBorder1);    jPanelTable.setLayout(flowLayout1);    jLabel1.setText("请选取需要备份的数据库表:");    cmdBackup.setText("备份");    cmdBackup.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        cmdBackup_actionPerformed(e);      }    });    tableScrollPaneFile.setBorder(titledBorder2);    jLabel2.setText("请选取备份文件:");    txtExistFile.setEditable(false);    txtExistFile.setColumns(10);    cmdBrowse.setText("浏览");    cmdBrowse.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        cmdBrowse_actionPerformed(e);      }    });    jLabel3.setText("请选取需要恢复的数据库表:");    cmdRestore.setText("恢复");    cmdRestore.addActionListener(new java.awt.event.ActionListener() {      public void actionPerformed(ActionEvent e) {        cmdRestore_actionPerformed(e);      }    });    jdbTableDb.setDataSet(queryDataSetDb);    jdbTableFileData.setDataSet(queryDataSetFile);    cboTableFrom.addItemListener(new java.awt.event.ItemListener() {      public void itemStateChanged(ItemEvent e) {        cboTableFrom_itemStateChanged(e);      }    });    bakDataFile.setFileName("D:\\publishers.txt");    bakDataFile.setLoadAsInserted(true);    cboTableTo.addItemListener(new java.awt.event.ItemListener() {      public void itemStateChanged(ItemEvent e) {        cboTableTo_itemStateChanged(e);      }    });    contentPane.add(statusBar, BorderLayout.SOUTH);    contentPane.add(jTabbedPane,  BorderLayout.CENTER);    jTabbedPane.add(jPanelBacup,    "数据备份");    jPanelBacup.add(tableScrollPaneTable, BorderLayout.CENTER);    tableScrollPaneTable.getViewport().add(jdbTableDb, null);    jPanelBacup.add(jPanelTable, BorderLayout.NORTH);    jTabbedPane.add(jPanelRestore,    "数据恢复");    jPanelRestore.add(tableScrollPaneFile, BorderLayout.CENTER);    tableScrollPaneFile.getViewport().add(jdbTableFileData, null);    jPanelRestore.add(jPanelSelFile, BorderLayout.NORTH);    jPanelSelFile.add(jLabel2, null);    jPanelSelFile.add(txtExistFile, null);    jPanelSelFile.add(cmdBrowse, null);    jPanelRestore.add(jPanelResCmd,  BorderLayout.SOUTH);    jPanelResCmd.add(jLabel3, null);    jPanelResCmd.add(cboTableTo, null);    jPanelResCmd.add(cmdRestore, null);    jPanelTable.add(jLabel1, null);    jPanelTable.add(cboTableFrom, null);    jPanelBacup.add(jPanelCmd,  BorderLayout.SOUTH);    jPanelCmd.add(cmdBackup, null);    loadTables();  }  /**Overridden so we can exit when window is closed*/  protected void processWindowEvent(WindowEvent e) {    super.processWindowEvent(e);    if (e.getID() == WindowEvent.WINDOW_CLOSING) {      System.exit(0);    }  }  void jTabbedPane_stateChanged(ChangeEvent e) {    statusBar.setText((jTabbedPane.getSelectedIndex()==0)?"数据备份":"数据恢复" );   if(jTabbedPane.getSelectedIndex()==0){      if(!queryDataSetDb.isOpen() )         queryDataSetDb.open();      if(dataChanged)    queryDataSetDb.refresh() ;   }   else{      if( queryDataSetDb.isOpen()) queryDataSetDb.close() ;      dataChanged=false;   }  }  void loadTables(){    String types[]=new String[1];    types[0]="TABLE";    Database dbTemp=new Database();    dbTemp.setConnection(db.getConnection());    DatabaseMetaData dbSchemaData=dbTemp.getMetaData();    try{        ResultSet rs=dbSchemaData.getTables(null,null,null,types);       if(rs!=null){            while(rs.next() ){               String tableName=rs.getString("TABLE_NAME").trim();               cboTableFrom.addItem(tableName);               cboTableTo.addItem(tableName);            }       }       rs=null;    }catch(Exception e){       System.out.println(e);       dbTemp.commit();       dbTemp.closeConnection();       dbTemp=null;    }       dbTemp.commit();       dbTemp.closeConnection();    dbTemp=null;  }  void cboTableFrom_itemStateChanged(ItemEvent e) {    String strSql="select * from "+cboTableFrom.getSelectedItem().toString().trim();    QueryDescriptor query=new  QueryDescriptor(db,strSql,null,true,2);    if(queryDataSetDb.isOpen() )queryDataSetDb.close();    queryDataSetDb.setQuery(query);    queryDataSetDb.open();    queryDataSetDb.refresh();    statusBar.setText("选取"+cboTableFrom.getSelectedItem().toString()+"表");  }  void cmdBackup_actionPerformed(ActionEvent e) {    statusBar.setText("开始备份"+cboTableFrom.getSelectedItem().toString()+"表");    JFileChooser jFileChooser=new JFileChooser();    try{       if(JFileChooser.APPROVE_OPTION== jFileChooser.showSaveDialog(this)){            String strFileName=jFileChooser.getSelectedFile().getAbsolutePath();            TextDataFile txtDataFile=new TextDataFile();            txtDataFile.setFileName(strFileName);            txtDataFile.save( queryDataSetDb);            statusBar.setText("备份"+cboTableFrom.getSelectedItem().toString()+                             "表到文件 "+strFileName+" 成功");        }    }catch(Exception ex){        statusBar.setText("备份失败");    }  }  void cmdBrowse_actionPerformed(ActionEvent e) {    JFileChooser jFileChooser=new JFileChooser();    try{       if(JFileChooser.APPROVE_OPTION== jFileChooser.showOpenDialog(this)){            String strFileName=jFileChooser.getSelectedFile().getAbsolutePath();            bakDataFile.setFileName(strFileName);            txtExistFile.setText(strFileName);            bakDataFile.load( queryDataSetFile);            queryDataSetFile.refresh();            statusBar.setText("选取备份文件"+txtExistFile.getText());        }    }catch(Exception ex){    }  }  void cmdRestore_actionPerformed(ActionEvent e) {    statusBar.setText("开始恢复");    try{        DataRow dbRow=new  DataRow(queryDataSetTemp);        DataRow fileRow=new  DataRow(queryDataSetFile);        queryDataSetTemp.getDataRow(dbRow);        db.executeStatement("delete * from "+cboTableTo.getSelectedItem().toString());        db.commit();        queryDataSetTemp.refresh();        queryDataSetTemp.clearStatus();       for(int i=1;i<=queryDataSetFile.getRowCount() ;i++){            queryDataSetFile.getDataRow(i,fileRow);            fileRow.copyTo(dbRow);            queryDataSetTemp.addRow(dbRow);        }        db.saveChanges(queryDataSetTemp);        db.commit();        statusBar.setText("恢复表 "+cboTableTo.getSelectedItem().toString()+" 成功");        dataChanged=true;    }catch(Exception ex){         System.out.println(ex);         statusBar.setText("恢复失败");    }  }  void cboTableTo_itemStateChanged(ItemEvent e) {        String strSql="select * from "+cboTableTo.getSelectedItem().toString().trim();        QueryDescriptor query=new  QueryDescriptor(db,strSql,null,true,1);        if(queryDataSetTemp.isOpen() )  queryDataSetTemp.close();        queryDataSetTemp.setQuery(query);        queryDataSetTemp.open();  }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -