📄 backupframe.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 + -