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

📄 tablequeryframe.java

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

import java.awt.*;
import java.awt.event.*;
import java.util.EventObject;
import java.util.EventListener;
import java.util.Vector;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.table.*;

/**
* TableQueryFrame extends JInternalFrame to create a 
* display which builds SQL CREATE statements
* <p/>
* TableBuilder, which extends JTable, is a key component.
*/
class TableQueryFrame extends JInternalFrame{
  
  protected JTable table;
  protected JScrollPane tableScroller; 
  protected JTextArea SQLPane = new JTextArea();
  protected JButton queryButton = new JButton("Execute Query");
  protected DatabaseUtilities dbUtils;
  
  protected String tableName = null;
  protected String colNames[] = null;
  protected String dataTypes[] = null;
  protected String SQLQuery = null;
  protected String SQLCommandRoot = "";

  public TableQueryFrame(String tableName, DatabaseUtilities dbUtils){
    setLocation(0,0);
    setClosable(true);
    setMaximizable(true);
    setIconifiable(true);
    setResizable(true);
    getContentPane().setLayout(new BorderLayout());
    this.tableName=tableName;
    this.dbUtils=dbUtils;
    setTitle("Query "+tableName);
    init();
    setVisible(true);
  }

  // initialise the JInternalFrame
  private void init(){
    colNames = dbUtils.getColumnNames(tableName); 
    dataTypes = dbUtils.getDataTypes(tableName);
    SQLQuery = "SELECT * FROM "+tableName;
    System.out.println(SQLQuery);
    Vector dataSet = dbUtils.executeQuery(SQLQuery);
    System.out.println(dataSet.size());
    
    table = createTable(colNames,dataSet);
    table.setAutoResizeMode(JTable.AUTO_RESIZE_ALL_COLUMNS);
    JScrollPane sqlScroller = new JScrollPane(SQLPane);
    tableScroller = new JScrollPane(table);
    JSplitPane splitter = new JSplitPane(JSplitPane.VERTICAL_SPLIT,sqlScroller,tableScroller);
    splitter.setDividerLocation(100);
    getContentPane().add(splitter,BorderLayout.CENTER);
    getContentPane().add(queryButton,BorderLayout.SOUTH);
    queryButton.addActionListener(new ButtonListener());
    
  }
  protected JTable createTable(String[] colNames,Vector dataSet){
    int nRows = dataSet.size();
    String[][] rowData = new String[nRows][colNames.length];
    for(int i=0;i<nRows;i++){
      Vector row = (Vector)dataSet.elementAt(i);
      for(int j=0;j<row.size();j++)rowData[i][j]=((Object)row.elementAt(j)).toString();
    }
    JTable table = new JTable(rowData,colNames);
    return table;
  }
	// Listener for the Query Button
	class ButtonListener implements ActionListener{
		public void actionPerformed(ActionEvent event){
		  SQLQuery = SQLPane.getText();
		  JViewport viewport = tableScroller.getViewport();
		  viewport.remove(table);
      colNames = dbUtils.getColumnNamesUsingQuery(SQLQuery);
      Vector dataSet = dbUtils.executeQuery(SQLQuery);
      table = createTable(colNames,dataSet);
      viewport.add(table);
	  }
	}
}

⌨️ 快捷键说明

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