📄 displayqueryresults.java
字号:
package displayqueryresults;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) 2002 * Company: 北京师范大学计算机系 * @author 孙一林 * @version 1.0 */ 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; public DisplayQueryResults() { super( "输入SQL语句,按查询按钮查看结果。" ); //标题 String url = "jdbc:odbc:student"; String username = "xiao"; String password = "1978"; 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( "查询" ); submitQuery.addActionListener( // 定义Button事件 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 ); getTable(); setSize( 500, 300 ); show(); // 显示窗口 } 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,"结果集中无记录" ); 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 + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -