displayqueryresults.java
来自「主要是对于JAVA的编程的基本语言 希望能够帮得上你。」· Java 代码 · 共 174 行
JAVA
174 行
package database;import java.applet.*;import java.sql.*;import javax.swing.*;import java.awt.*;import java.awt.event.*;import java.util.*;/** * Title: 显示查询数据库结果 * Description: Java语言演示程序:显示查询数据库结果,用于泸州职业技术学院电信系Java课程教学示范。 * Copyright: Copyright (c) 2007 * Company: 泸州职业技术学院电信系 * @author 华卫 * @version 1.0 *//* * 从数据库中获得查询结果后,为了便于显示,常常需要整理和重新排列数据, * java.util包中的Vector类为此提供了方便,在该类中封装了异构链表和 * 复杂数组体,它实际上是一个对象引用的可变长数组,即向量的大小是可以 * 动态增加和减少的,它不要求每个元素的类型相同,即向量中可以混合多种 * 对象类型,因此,Vector类正好符合数据库记录中属性类型不一的特点, * 而其动态性也正好符合数据库查询时,结果集中记录个数不定的特点。通过 * getElement()和addElement()等方法亦可以方便地得到向量中的一个 * 对象和加入一个对象等操作。 * * 程序功能:根据输入的SQL语句,以表格方式显示查询结果。 */public class DisplayQueryResults extends JFrame { //数据库变量定义 private Connection connection; private Statement statement; private ResultSet resultSet; private ResultSetMetaData rsMetaData; //定义组件 private JTable table; private JTextArea inputQuery; private JButton submitQuery; //声明屏幕宽度和高度变量 int screenWidth,screenHeight; //构造方法 public DisplayQueryResults() { //设置窗口标题 super("输入SQL语句,按查询按钮查看结果。"); String url="jdbc:odbc:testdb.mdb"; String username="testdb"; String password="123456"; screenWidth=(int)Toolkit.getDefaultToolkit().getScreenSize().getWidth(); screenHeight=(int)Toolkit.getDefaultToolkit().getScreenSize().getHeight(); try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); connection=DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException cnfex) { System.err.println("装载 JDBC/ODBC 驱动程序失败。"); cnfex.printStackTrace(); System.exit(1); } catch (SQLException sqlex) { System.err.println("无法连接数据库"); sqlex.printStackTrace(); System.exit(1); } String test="select * from test where 性别='女';"; 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()); topPanel.add(new JScrollPane(inputQuery), BorderLayout.CENTER); topPanel.add(submitQuery, BorderLayout.SOUTH); table=new JTable(); Container c=getContentPane(); //获得内容面板 c.setLayout(new BorderLayout()); c.add(topPanel, BorderLayout.NORTH); c.add(table, BorderLayout.CENTER); inputQuery.setFont(new Font("宋体",Font.PLAIN,15)); getTable(); setSize(500, 300); setLocation((screenWidth-getWidth())/2, (screenHeight-getHeight())/2); //让窗口在屏幕居中 setVisible(true); // 显示窗口 } private void getTable() { try { String query=inputQuery.getText(); statement=connection.createStatement(); resultSet=statement.executeQuery(query); //执行SQL语句 displayResultSet(resultSet); // 显示查询结果 } catch (SQLException sqlex) { sqlex.printStackTrace(); } } private void displayResultSet(ResultSet rs) throws SQLException { boolean moreRecords=rs.next(); // 定位到第一条记录 if (!moreRecords) { // 如果没有记录,则显示一条消息 JOptionPane.showMessageDialog(this,"结果集中无记录!","错误提示",JOptionPane.WARNING_MESSAGE); 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); c.validate(); } catch (SQLException sqlex) { sqlex.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 sqlex) { System.err.println("不能断开数据库连接"); sqlex.printStackTrace(); } } //主方法 public static void main(String args[]) { final DisplayQueryResults app=new DisplayQueryResults(); app.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { app.shutDown(); System.exit(0); } }); }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?