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

📄 tabledisplay.java~5~

📁 数据库查询结果表格输出实例
💻 JAVA~5~
字号:
/**
 * <p>Title: 以表格显示数据库查询结果</p>
 * <p>Description: 第五章例子</p>
 * <p>Copyright: Copyright (c) 2006</p>
 * <p>Company: </p>
 * @author 苏年乐
 * @version 1.0
 */

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

public class TableDisplay extends JFrame {
  //数据库变量定义
  private Connection connection;
  private Statement statement;
  private ResultSet resultSet;
  private ResultSetMetaData rsMetaData;

  //GUI变量定义
  private JTable table;
  private JTextArea inputQuery;
  private JButton submitQuery;

  public TableDisplay() {
    //Form的标题
    super("输入SQL语句,按提交按钮查看结果。");
    //url中指定ODBC中设置的DSN名称
    String url = "jdbc:odbc:Person";
    String username = "";
    String password = "";
    //加载驱动程序以连接数据库
    try {
      Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
      connection = DriverManager.getConnection(
          url, username, password);
    }
    //捕获加载驱动程序异常
    catch (ClassNotFoundException e) {
      System.err.println("装载JDBC/ODBC驱动程序失败。");
      e.printStackTrace();
      System.exit(1); // terminate program
    }
    //捕获连接数据库异常
    catch (SQLException e) {
      System.err.println("无法连接数据库");
      e.printStackTrace();
      System.exit(1); // terminate program
    }
    //如果数据库连接成功,则建立GUI
    //SQL语句
    String test = "SELECT * FROM Person";
    inputQuery = new JTextArea(test, 4, 30);
    submitQuery = new JButton("查询");
    //Button事件
    submitQuery.addActionListener(
        new ActionListener() {
      public void actionPerformed(ActionEvent e) {
        getTable();
      }
    }
    );

    JPanel topPanel = new JPanel();
    topPanel.setLayout(new BorderLayout());
    //将"输入查询"编辑框布置到 "CENTER"
    topPanel.add(new JScrollPane(inputQuery), BorderLayout.CENTER);
    //将"提交查询"按钮布置到 "SOUTH"
    topPanel.add(submitQuery, BorderLayout.SOUTH);
    table = new JTable();
    Container c = getContentPane();
    c.setLayout(new BorderLayout());
    //将"topPanel"编辑框布置到 "NORTH"
    c.add(topPanel, BorderLayout.NORTH);
    //将"table"编辑框布置到 "CENTER"
    c.add(table, BorderLayout.CENTER);
    getTable();
    setSize(500, 300);
    //显示Form
    show();
  }

  private void getTable() {
    try {
      //执行SQL语句
      String query = inputQuery.getText();
      statement = connection.createStatement();
      resultSet = statement.executeQuery(query);
      //在表格中显示查询结果
      displayResultSet(resultSet);
    }
    catch (SQLException sqlex) {
      sqlex.printStackTrace();
    }
  }

  private void displayResultSet(ResultSet rs) throws SQLException {
    //定位到达第一条记录
    boolean moreRecords = rs.next();
    //如果没有记录,则提示一条消息
    if (!moreRecords) {
      JOptionPane.showMessageDialog(this,"结果集中无记录");
      setTitle("无记录显示");
      return;
    }
    Vector columnHeads = new Vector();
    Vector rows = new Vector();
    try {
      //获取字段的名称
      ResultSetMetaData rsmd = rs.getMetaData();
      for (int i = 1; i <= rsmd.getColumnCount(); ++i)
        columnHeads.addElement(rsmd.getColumnName(i));
        //获取记录集
      do {
        rows.addElement(getNextRow(rs, rsmd));
      }while (rs.next());
      //在表格中显示查询结果
      table = new JTable(rows, columnHeads);
      JScrollPane scroller = new JScrollPane(table);
      Container c = getContentPane();
      c.remove(1);
      c.add(scroller, BorderLayout.CENTER);
      //刷新Table
      c.validate();
    }catch (SQLException e) {
      e.printStackTrace();
    }
  }

  private Vector getNextRow(ResultSet rs,
                            ResultSetMetaData rsmd) throws SQLException {
    Vector currentRow = new Vector();
    for (int i = 1; i <= rsmd.getColumnCount(); ++i)
      currentRow.addElement(rs.getString(i));
      //返回一条记录
    return currentRow;
  }

  public void shutDown() {
    try {
      //断开数据库连接
      connection.close();
    }
    catch (SQLException e) {
      System.err.println("Unable to disconnect");
      e.printStackTrace();
    }
  }

  public static void main(String args[]) {
    final TableDisplay app =new TableDisplay();
    app.addWindowListener(
        new WindowAdapter() {
      public void windowClosing(WindowEvent e) {
        app.shutDown();
        System.exit(0);
      }
    }
    );
  }
}

⌨️ 快捷键说明

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