请教各位高手~怎么在JTable里显示数据库的查询结果??? 如题,谢谢~~~ 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 /** @version 1.1 2004-08-22 @author Cay Horstmann*/import com.sun.rowset.*;import java.awt.*;import java.awt.event.*;import java.io.*;import java.sql.*;import java.util.*;import javax.swing.*;import javax.swing.table.*;import javax.sql.rowset.*;/** This program shows how to display the result of a database query in a table.*/public class ResultSetTable{ public static void main(String[] args) { JFrame frame = new ResultSetFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); }}/** This frame contains a combo box to select a database table and a table to show the data stored in the table*/class ResultSetFrame extends JFrame{ public ResultSetFrame() { setTitle("ResultSet"); setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); /* find all tables in the database and add them to a combo box */ tableNames = new JComboBox(); tableNames.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent event) { try { if (scrollPane != null) remove(scrollPane); String tableName = (String) tableNames.getSelectedItem(); if (rs != null) rs.close(); String query = "SELECT * FROM " + tableName; rs = stat.executeQuery(query); if (scrolling) model = new ResultSetTableModel(rs); else { CachedRowSet crs = new CachedRowSetImpl(); crs.populate(rs); model = new ResultSetTableModel(crs); } JTable table = new JTable(model); scrollPane = new JScrollPane(table); add(scrollPane, BorderLayout.CENTER); validate(); } catch (SQLException e) { e.printStackTrace(); } } }); JPanel p = new JPanel(); p.add(tableNames); add(p, BorderLayout.NORTH); try { conn = getConnection(); DatabaseMetaData meta = conn.getMetaData(); if (meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE)) { scrolling = true; stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); } else { stat = conn.createStatement(); scrolling = false; } ResultSet tables = meta.getTables(null, null, null, new String[] { "TABLE" }); while (tables.next()) tableNames.addItem(tables.getString(3)); tables.close(); } catch (IOException e) { e.printStackTrace(); } catch (SQLException e) { e.printStackTrace(); } addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent event) { try { if (conn != null) conn.close(); } catch (SQLException e) { e.printStackTrace(); } } }); } /** Gets a connection from the properties specified in the file database.properties. @return the database connection */ public static Connection getConnection() throws SQLException, IOException { Properties props = new Properties(); FileInputStream in = new FileInputStream("database.properties"); props.load(in); in.close(); String drivers = props.getProperty("jdbc.drivers"); if (drivers != null) System.setProperty("jdbc.drivers", drivers); String url = props.getProperty("jdbc.url"); String username = props.getProperty("jdbc.username"); String password = props.getProperty("jdbc.password"); return DriverManager.getConnection(url, username, password); } private JScrollPane scrollPane; private ResultSetTableModel model; private JComboBox tableNames; private ResultSet rs; private Connection conn; private Statement stat; private boolean scrolling; private static final int DEFAULT_WIDTH = 400; private static final int DEFAULT_HEIGHT = 300;}/** This class is the superclass for the scrolling and the caching result set table model. It stores the result set and its metadata.*/class ResultSetTableModel extends AbstractTableModel{ /** Constructs the table model. @param aResultSet the result set to display. */ public ResultSetTableModel(ResultSet aResultSet) { rs = aResultSet; try { rsmd = rs.getMetaData(); } catch (SQLException e) { e.printStackTrace(); } } public String getColumnName(int c) { try { return rsmd.getColumnName(c + 1); } catch (SQLException e) { e.printStackTrace(); return ""; } } public int getColumnCount() { try { return rsmd.getColumnCount(); } catch (SQLException e) { e.printStackTrace(); return 0; } } public Object getValueAt(int r, int c) { try { rs.absolute(r + 1); return rs.getObject(c + 1); } catch(SQLException e) { e.printStackTrace(); return null; } } public int getRowCount() { try { rs.last(); return rs.getRow(); } catch(SQLException e) { e.printStackTrace(); return 0; } } private ResultSet rs; private ResultSetMetaData rsmd;} 上面的有点麻烦 给你看看我自己以前的一个程序的一部分JTable jTable = new JTable();DefaultTableModel tableModel = new DefaultTableModel();DefaultListSelectionModel listSelection = new DefaultListSelectionModel();String[] column = new String[。];//列名Object[][] row = new Object[。。][。。]//行的数据tableModel.setDataVector(row, column);jTable.setModel(tableModel);jTable.setSelectionModel(listSelection);return jTable;其他的答题就是这样的了 具体的你可以看下JAVA书的表格部分 都有详细介绍的 jdk自己带例子。demo\jfc\TableExample 困扰了三四天的问题,servlet无法正常调用类文件,请教指点! Java short数组转byte数组 java中连接oracle时DATE数据更新问题 import的用法,各位帮帮忙 如何获得ResultSet的记录数量啊 请问这段程序的执行循序? ArrayList排序的问题 菜鸟问高手,请详细点说哦 java二叉树的建立 请大家帮我看看这个小程序 不能倒序输出数组 如何从一串字符串里取出符合正则表达式的字符! JMF播放视频的时候是否有方法选择某一个时间段的视频播放?
@version 1.1 2004-08-22
@author Cay Horstmann
*/import com.sun.rowset.*;
import java.awt.*;
import java.awt.event.*;
import java.io.*;
import java.sql.*;
import java.util.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.sql.rowset.*;/**
This program shows how to display the result of a
database query in a table.
*/
public class ResultSetTable
{
public static void main(String[] args)
{
JFrame frame = new ResultSetFrame();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}/**
This frame contains a combo box to select a database table
and a table to show the data stored in the table
*/
class ResultSetFrame extends JFrame
{
public ResultSetFrame()
{
setTitle("ResultSet");
setSize(DEFAULT_WIDTH, DEFAULT_HEIGHT); /* find all tables in the database and add them to
a combo box
*/ tableNames = new JComboBox();
tableNames.addActionListener(new
ActionListener()
{
public void actionPerformed(ActionEvent event)
{
try
{
if (scrollPane != null) remove(scrollPane);
String tableName = (String) tableNames.getSelectedItem();
if (rs != null) rs.close();
String query = "SELECT * FROM " + tableName;
rs = stat.executeQuery(query);
if (scrolling)
model = new ResultSetTableModel(rs);
else
{
CachedRowSet crs = new CachedRowSetImpl();
crs.populate(rs);
model = new ResultSetTableModel(crs);
} JTable table = new JTable(model);
scrollPane = new JScrollPane(table);
add(scrollPane, BorderLayout.CENTER);
validate();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
});
JPanel p = new JPanel();
p.add(tableNames);
add(p, BorderLayout.NORTH); try
{
conn = getConnection();
DatabaseMetaData meta = conn.getMetaData();
if (meta.supportsResultSetType(ResultSet.TYPE_SCROLL_INSENSITIVE))
{
scrolling = true;
stat = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,
ResultSet.CONCUR_READ_ONLY);
}
else
{
stat = conn.createStatement();
scrolling = false;
}
ResultSet tables = meta.getTables(null, null, null, new String[] { "TABLE" });
while (tables.next())
tableNames.addItem(tables.getString(3));
tables.close();
}
catch (IOException e)
{
e.printStackTrace();
}
catch (SQLException e)
{
e.printStackTrace();
} addWindowListener(new
WindowAdapter()
{
public void windowClosing(WindowEvent event)
{
try
{
if (conn != null) conn.close();
}
catch (SQLException e)
{
e.printStackTrace();
}
}
});
} /**
Gets a connection from the properties specified in
the file database.properties.
@return the database connection
*/
public static Connection getConnection()
throws SQLException, IOException
{
Properties props = new Properties();
FileInputStream in = new FileInputStream("database.properties");
props.load(in);
in.close(); String drivers = props.getProperty("jdbc.drivers");
if (drivers != null) System.setProperty("jdbc.drivers", drivers);
String url = props.getProperty("jdbc.url");
String username = props.getProperty("jdbc.username");
String password = props.getProperty("jdbc.password"); return DriverManager.getConnection(url, username, password);
} private JScrollPane scrollPane;
private ResultSetTableModel model;
private JComboBox tableNames;
private ResultSet rs;
private Connection conn;
private Statement stat;
private boolean scrolling; private static final int DEFAULT_WIDTH = 400;
private static final int DEFAULT_HEIGHT = 300;
}/**
This class is the superclass for the scrolling and the
caching result set table model. It stores the result set
and its metadata.
*/
class ResultSetTableModel extends AbstractTableModel
{
/**
Constructs the table model.
@param aResultSet the result set to display.
*/
public ResultSetTableModel(ResultSet aResultSet)
{
rs = aResultSet;
try
{
rsmd = rs.getMetaData();
}
catch (SQLException e)
{
e.printStackTrace();
}
} public String getColumnName(int c)
{
try
{
return rsmd.getColumnName(c + 1);
}
catch (SQLException e)
{
e.printStackTrace();
return "";
}
} public int getColumnCount()
{
try
{
return rsmd.getColumnCount();
}
catch (SQLException e)
{
e.printStackTrace();
return 0;
}
} public Object getValueAt(int r, int c)
{
try
{
rs.absolute(r + 1);
return rs.getObject(c + 1);
}
catch(SQLException e)
{
e.printStackTrace();
return null;
}
} public int getRowCount()
{
try
{
rs.last();
return rs.getRow();
}
catch(SQLException e)
{
e.printStackTrace();
return 0;
}
} private ResultSet rs;
private ResultSetMetaData rsmd;
}
JTable jTable = new JTable();
DefaultTableModel tableModel = new DefaultTableModel();
DefaultListSelectionModel listSelection = new DefaultListSelectionModel();
String[] column = new String[。];//列名
Object[][] row = new Object[。。][。。]//行的数据
tableModel.setDataVector(row, column);
jTable.setModel(tableModel);
jTable.setSelectionModel(listSelection);
return jTable;
其他的答题就是这样的了 具体的你可以看下JAVA书的表格部分 都有详细介绍的
demo\jfc\TableExample