📄 displayqueryresults.java
字号:
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class DisplayQueryResults 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 DisplayQueryResults()
{
super( "输入SQL语句,按提交按钮查看结果。" ); //Form的标题
String url = "jdbc:odbc:baozhi";//url中指定ODBC中设置的DSN名称
String username = "";
String password = "";
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 ); // terminate program
}
//捕获连接数据库异常
catch ( SQLException sqlex )
{
System.err.println( "无法连接数据库" );
sqlex.printStackTrace();
System.exit( 1 ); // terminate program
}
//如果数据库连接成功,则建立GUI
String test="SELECT * FROM paper"; //SQL语句
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 ); //将"输入查询"编辑框布置到 "CENTER"
topPanel.add( submitQuery, BorderLayout.SOUTH ); //将"提交查询"按钮布置到 "SOUTH"
table = new JTable();
Container c = getContentPane();
c.setLayout( new BorderLayout() );
c.add( topPanel, BorderLayout.NORTH ); //将"topPanel"编辑框布置到 "NORTH"
c.add( table, BorderLayout.CENTER ); //将"table"编辑框布置到 "CENTER"
getTable();
setSize( 600, 300 );
show(); //显示Form
}
private void getTable()
{
try { //执行SQL语句
String query = inputQuery.getText(); //接受输入的sql语句
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 );
c.validate(); //刷新Table
}
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( "Unable to disconnect" );
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 + -