📄 java.txt
字号:
显示数据库中的表用java(完整)- -
*该程序代码用到了前面说的database.java的数据库连接池的类
---------------------------------------------------------------------------------------
package com.test;
import com.test.database;//导入的数据库连接池的那个类;
import java.sql.*;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
public class Untitled1 extends JFrame{
private JTable table;//定义一个表控件;
private JTextArea inputQuery;//定义一个多文本显示框,用来输入SQL语句;
private JButton submitQuery;//定义一个按钮用来执行查询;
private ResultSet resultSet;
//构件器
public Untitled1(){
super( "输入SQL语句,按提交按钮查看结果。" );
String test="SELECT * FROM XIAOXING";//定义个一个字符串存放sql语句;
inputQuery = new JTextArea( test, 4, 30 );//把存放SQL语句的字符串放入控件中,定义该控件的宽高;
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( 500, 300 );
show();//显示Form
}
private void getTable()
{
try {
//执行SQL语句
String query = inputQuery.getText();//获得控件中的内容;
resultSet = database.getSimpleRs(database.getConn() ,query) ;//连接并查询数据库;
displayResultSet( resultSet );//放到displayResultSet方法中处理,在表格中显示查询结果
}
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 {
/*获取字段的名称
getMetaData() ResultSet 的列编号、类型和特性由 getMetaData 方法提供。
ResultSetMetaData 对象可以用于查找 ResultSet 中的列的类型和特性。
*/
ResultSetMetaData rsmd = rs.getMetaData();
//getColumnCount获得 ResultSet 中的列数
for ( int i = 1; i <= rsmd.getColumnCount(); ++i )
/*
getCatalogName(int) 获得列的表的目录名。
然后用vector类中的addElement方法添加
*/
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 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 {
//断开数据库连接
database.kill(resultSet);
}
catch ( Exception sqlex ) {
System.err.println( "Unable to disconnect" );
sqlex.printStackTrace();
}
}
public static void main( String args[] )
{
final Untitled1 app =
new Untitled1();
app.addWindowListener(
new WindowAdapter() {
public void windowClosing( WindowEvent e )
{
app.shutDown();
System.exit( 0 );
}
}
);
}
}
- 作者: 小兴 2005年08月9日, 星期二 14:27 Trackback
你可以使用这个链接引用该篇日志 http://publishblog.blogdriver.com/blog/tb.b?diaryID=882540
回复
发布人:邮箱:
主 页:
评论内容:
2003-2004 BLOGDRIVER.COM All rights reserved
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -