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