📄 queryevent.java
字号:
/**
* 显示查询数据库结果
*/
import java.applet.*;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class QueryEvent extends JFrame {
private Connection connection;
// 数据库变量定义
private Statement statement;
private ResultSet resultSet;
private ResultSetMetaData metaData;
private JTable table;
private JTextArea inputQuery;
private JButton submitQuery;
public QueryEvent() {
super( "输入SQL语句,按查询按钮查看结果" );
//输出标题
String url = "jdbc:odbc:info.mdb";
String username = "infodb";
String password = "123456";
try {
Class.forName( "sun.jdbc.odbc.JdbcOdbcDriver" );
//加载odbc数据驱动
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 年龄 = 20;";
inputQuery = new JTextArea( test, 4, 30 );
submitQuery = new JButton( "查询" );
submitQuery.addActionListener(
new ActionListener() {
public void actionPerformed( ActionEvent e )
{
getTable();
}
}// 定义Button监听
);
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( 400, 300 );
show();
// 显示窗口
}
private void getTable() {
try {
String query = inputQuery.getText();
statement = connection.createStatement();
resultSet = statement.executeQuery( query ); //执行SQL语句
QueryResultSet( resultSet ); // 显示查询结果
}
catch ( SQLException sqlex ) {
sqlex.printStackTrace();
}
}
private void QueryResultSet( ResultSet row ) throws SQLException {
boolean moreRecords = row.next();
// 定位到第一条记录
if ( ! moreRecords ) {
JOptionPane.showMessageDialog( this,"无记录" );
setTitle( "无记录显示" );
return;
}// 如果没有记录,则显示消息
Vector columnHeads = new Vector();
// 声明向量对象并实例化向量
Vector rows = new Vector();
try {
ResultSetMetaData recor = row.getMetaData();
// 获取字段的名称
for ( int i = 1; i <= recor.getColumnCount(); ++i )
columnHeads.addElement( recor.getColumnName( i ) );
do { // 获取记录集
rows.addElement( getNextRow( row, recor ) );
} while ( row.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 row,ResultSetMetaData recor ) throws SQLException{
Vector currentRow = new Vector();
for ( int i = 1; i <= recor.getColumnCount(); ++i )
currentRow.addElement( row.getString( i ) );
return currentRow;
//返回一条记录
}
public void disconnect() {
try {
connection.close();
//关闭数据库连接
}
catch ( SQLException sqlex ) {
System.err.println( "无法关闭数据库连接" );
sqlex.printStackTrace();
}
}
public static void main( String args[] ) {
final QueryEvent ben = new QueryEvent();
ben.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e ) {
ben.disconnect();
System.exit( 0 );
}
}
);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -