日期:2014-05-20 浏览次数:20673 次
/** * @author Administrator * * connection:数据库的连接 * sql:要查询的sql语句 * name:希望在表格每列顶行显示的文字 * */ public class DisplayDialog extends JDialog {//假设表格在JDialog上 Statement stmt = null; DisplayDialog(Connection connection, String sql, Object[] name) { this.setBounds(200, 200, 400, 500); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setVisible(true); try { stmt = connection.createStatement( ResultSet.TYPE_SCROLL_INSENSITIVE,// 对滚动不敏感,结果集可滚来滚去 ResultSet.CONCUR_READ_ONLY);// 只能够读取里边的内容, ResultSet rs = stmt.executeQuery(sql); rs.last();// 指到定位到最后一行 int row = rs.getRow();// 获得总行数 rs.beforeFirst();// 定位到开始 ResultSetMetaData rsmd1 = rs.getMetaData();// 计算字段个数 int col = rsmd1.getColumnCount(); // 计算字段个数 Object a[][] = new Object[row][col]; JTable table = new JTable(a, name); for (int index = 0; rs.next(); index++) for (int j = 0; j < col; j++) a[index][j] = rs.getString(j + 1); getContentPane().removeAll(); add(new JScrollPane(table), BorderLayout.CENTER); validate(); rs.close(); } catch (SQLException e) { System.out.println("SQL语句无效"); add(new JLabel("SQL语句无效")); e.printStackTrace(); } } }
------解决方案--------------------
LS代码给的很详细,不过个人给点建议。自从学了集合之后,数组这东西基本上就放弃使用了。因为数组定长有很多局限性,或者说浪费很多操作。比如说ls
int row = rs.getRow();// 获得总行数
因为你要定义2维数组,你就必须获得它的长度。
因为集合不定长,只要不断往里加就可以。所以在做解决类似问题时,用集合会远比用数组方便哈。
个人建议~