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

📄 dbmanager.java

📁 java数据库编程源码
💻 JAVA
字号:
package JavaDatabaseBible.part2;

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DBManager extends JFrame{
  JMenuBar menuBar = new JMenuBar();
  JDesktopPane desktop = new JDesktopPane();
  StatusPanel statusBar = new StatusPanel("Ready");
  String database = null;
  String jdbcDriver = null;
  String tableName = null;
  String menuSelection = null;
  TableBuilderFrame tableMaker = null;
  TableEditFrame tableEditor = null;    
  TableQueryFrame tableQuery = null;    
  DatabaseUtilities dbUtils = null;
  InfoDialog infoDlg = null;
  
  TableMenu tableMenu = new TableMenu();
  EditMenu editMenu = new EditMenu();   
  ViewMenu viewMenu = new ViewMenu();   
  WindowMenu windowMenu = new WindowMenu();   
  HelpMenu helpMenu = new HelpMenu();   
  
  MenuListener menuListener = new MenuListener();
  
  public DBManager(){
    setJMenuBar(menuBar);
		setTitle("Java Database Bible");
		setIconImage((new ImageIcon("od.gif")).getImage());
    getContentPane().setLayout(new BorderLayout());
    getContentPane().add(desktop,BorderLayout.CENTER);
    getContentPane().add(statusBar,BorderLayout.SOUTH);
    setSize(new Dimension(480,320));
  
    menuBar.add(tableMenu);
    tableMenu.setMenuListener(menuListener);
    
    menuBar.add(editMenu);                    
    editMenu.setMenuListener(menuListener);
    
    menuBar.add(viewMenu);                    
    viewMenu.setMenuListener(menuListener);
    
    menuBar.add(windowMenu);                  // added for Chapter 10
    windowMenu.setMenuListener(menuListener);
    
    menuBar.add(helpMenu);                    // added for Chapter 10
    helpMenu.setMenuListener(menuListener);
    
    setDefaultCloseOperation(EXIT_ON_CLOSE);
    setVisible(true);
  }

  private void displayTableBuilderFrame(){
    tableName = JOptionPane.showInputDialog(this,"Table:",
                "Select table",JOptionPane.QUESTION_MESSAGE);
    tableMaker = new TableBuilderFrame(tableName);
    tableMaker.setCommandListener(new CommandListener());
    desktop.add(tableMaker);
    tableMaker.setSize(desktop.getSize());
    tableMaker.setVisible(true);
  }
  
  private void displayTableEditFrame(){  
    tableName = JOptionPane.showInputDialog(this,"Table:",
                "Select table",JOptionPane.QUESTION_MESSAGE);
    tableEditor = new TableEditFrame(tableName,dbUtils);
    desktop.add(tableEditor);
    tableEditor.setSize(desktop.getSize());
    tableEditor.setVisible(true);
  }
  
  private void displayTableQueryFrame(){  
    tableName = JOptionPane.showInputDialog(this,"Table:",
                "Select table",JOptionPane.QUESTION_MESSAGE);
    tableQuery = new TableQueryFrame(tableName,dbUtils);
    desktop.add(tableQuery);
    tableQuery.setSize(desktop.getSize());
    tableQuery.setVisible(true);
  }
  // added for Chapter 10
  private void displayInfoDialog(){  
    infoDlg = new InfoDialog(dbUtils);
    Rectangle r = getBounds();
    infoDlg.setBounds(r.x+r.width-250,r.y+10,240,360);
    infoDlg.setVisible(true);
  }
  
  private void selectDatabase(){
    // revised for Chapter 10
    String[] databases = { "MSAccessContacts", "MySQLContacts", "OracleContacts", "SQLServerContacts", "SybaseContacts" }; 

    database = (String)JOptionPane.showInputDialog(null, "Database:", 
                "Select database", JOptionPane.QUESTION_MESSAGE, 
                null, databases, databases[0]); 

    dbUtils = new DatabaseUtilities();
    
    // added for Chapter 10
    dbUtils.setJdbcDriverName(selectJDBCDriver());
    
    if(database.equals("MSAccessContacts"))dbUtils.setDatabaseUrl("jdbc:odbc:Contacts");
    if(database.equals("SQLServerContacts")&&jdbcDriver.equals("com.inet.tds.TdsDriver")){
      dbUtils.setDatabaseUrl("jdbc:inetdae7:localhost:1433");
      dbUtils.setUserName("jod");
      dbUtils.setPassword("jod");
    }
    if(!dbUtils.connectToDatabase(database)){
      statusBar.setMessage("Error connecting to "+database);
      return;
    }
    // added for Chapter 10
    statusBar.setMessage("Retrieving MetaData from "+database);
    statusBar.repaint();
    
    System.out.println("Retrieving MetaData from "+database);
    java.util.Date startTime = new java.util.Date();
    
    MetaDataFrame dbTree = new MetaDataFrame(database,dbUtils);
    java.util.Date endTime = new java.util.Date();
		long elapsed = endTime.getTime() - startTime.getTime();
		statusBar.setTimerMsg("Elapsed time = "+elapsed+" ms");
    
    desktop.add(dbTree);
    dbTree.setSize(desktop.getSize());
    dbTree.setVisible(true);
    
    tableMenu.enableMenuItem("New Table",true);
    tableMenu.enableMenuItem("Drop Table",true);
    
    editMenu.enableMenuItem("Insert",true);
    editMenu.enableMenuItem("Update",true);
    editMenu.enableMenuItem("Delete",true);
    
    viewMenu.enableMenuItem("ResultSet",true);
    
    helpMenu.enableMenuItem("Database Info",true);
  }
  // added for Chapter 10
  private String selectJDBCDriver(){
    String[] drivers = { "sun.jdbc.odbc.JdbcOdbcDriver", "com.inet.tds.TdsDriver"}; 

    jdbcDriver = (String)JOptionPane.showInputDialog(null, "JDBCDriver:", 
                "Select JDBC Driver", JOptionPane.QUESTION_MESSAGE, 
                null, drivers, drivers[0]); 
    return jdbcDriver;                
  }
  
  private void executeSQLCommand(String SQLCommand){
    dbUtils.update(SQLCommand);
  }
	
  private void dropTable(){
    tableName = JOptionPane.showInputDialog(this,"Table:",
                "Select table",JOptionPane.QUESTION_MESSAGE);
		int option = JOptionPane.showConfirmDialog(null, 
			            "Dropping table "+tableName, 
			            "Database "+database, 
			            JOptionPane.OK_CANCEL_OPTION);
		if(option==0){
      executeSQLCommand("DROP TABLE "+tableName);
    }
  }
  // added for Chapter 10
  private int selected(){
    JInternalFrame[] jif = desktop.getAllFrames();
    for(int i=0;i<jif.length;i++){      
      if(jif[i].isSelected())return i;
    }
    return 0;
  }
  // added for Chapter 10
  private void cascade(){
    JInternalFrame[] jif = desktop.getAllFrames();
    int j = selected();
    int nJifs = jif.length;
    j=(j<nJifs-1)?j+1:0;
    Dimension d = desktop.getSize();
    for(int i=0;i<nJifs;i++){
      jif[i].setBounds(new Rectangle(i*20,i*20,d.width-nJifs*20,d.height-nJifs*20));
      jif[i].toFront();
      j=(j<nJifs-1)?j+1:0;
    }
  }
  // added for Chapter 10
  private void tileVertically(){
    JInternalFrame[] jif = desktop.getAllFrames();
    int j = selected();
    int nJifs = jif.length;
    Dimension d = desktop.getSize();    
    for(int i=0;i<nJifs;i++){      
      jif[i].setBounds(new Rectangle(i*d.width/nJifs,0,d.width/nJifs,d.height));
      jif[i].toFront();
      j=(j<nJifs-1)?j+1:0;
    }
  }
  // added for Chapter 10
  private void tileHorizontally(){
    JInternalFrame[] jif = desktop.getAllFrames();
    int j = selected();
    int nJifs = jif.length;
    Dimension d = desktop.getSize();    
    for(int i=0;i<nJifs;i++){
      jif[i].setBounds(new Rectangle(0,i*d.height/nJifs,d.width,d.height/nJifs));
      jif[i].toFront();
      j=(j<nJifs-1)?j+1:0;
    }
  }
   
	class MenuListener implements ActionListener{
		public void actionPerformed(ActionEvent event){
			String menuSelection = event.getActionCommand();
			if(menuSelection.equals("Database")){
        selectDatabase();
      }else if(menuSelection.equals("New Table")){
			  displayTableBuilderFrame();
			}else if(menuSelection.equals("Drop Table")){
			  dropTable();
			}else if(menuSelection.equals("Insert")){
			  displayTableEditFrame();
			}else if(menuSelection.equals("ResultSet")){
			  displayTableQueryFrame();
			}else if(menuSelection.equals("Cascade")){// added for Chapter 10
			  cascade();
			}else if(menuSelection.equals("Tile vertically")){
			  tileVertically();
			}else if(menuSelection.equals("Tile horizontally")){
			  tileHorizontally();
      }else if(menuSelection.equals("Database Info")){
			  displayInfoDialog();
			}else if(menuSelection.equals("Exit")){
			  System.exit(0);
			}
	  }
	}
	
	class ExceptionListener implements ActionListener{
		public void actionPerformed(ActionEvent event){
			String exception = event.getActionCommand();
			JOptionPane.showMessageDialog(null, exception, 
			    "SQL Error", JOptionPane.ERROR_MESSAGE); 
	  }
	}
	
	class CommandListener implements ActionListener{
		public void actionPerformed(ActionEvent event){
			String SQLCommand = event.getActionCommand();
      executeSQLCommand(SQLCommand);
	  }
	}
  public static void main(String args[]){
    DBManager dbm = new DBManager();
  }
}

⌨️ 快捷键说明

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