首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2SE开发 >

关于jtable显示数据中Vector的有关问题

2012-03-26 
关于jtable显示数据中Vector的问题下面是一段从数据库取数据,然后添加到jtable的jbinit()代码ResultSetMet

关于jtable显示数据中Vector的问题
下面是一段从数据库取数据,然后添加到jtable的jbinit()代码
                        ResultSetMetaData   rsd   =   null;
                        Vector   col   =   new   Vector();
                        Vector   dat   =   new   Vector();
                        sql   d   =   new   sql();
                        Connection   con   =   null;
                        con   =   d.date();
                        Statement   s   =   con.createStatement();
                        ResultSet   rs   =   s.executeQuery( "Select   *   from   yuangongxinxi ");
                        rsd   =   rs.getMetaData();
                        int   i   =   0;
                        for   (i   =   1;   i   <=   rsd.getColumnCount();   i++)   {
                                col.add(rsd.getColumnName(i));
                       
                        }   while   (rs.next())   {
                                Vector   v   =   new   Vector();
                                for   (i   =   1;   i   <=   rsd.getColumnCount();   i++)   {

                                        v.addElement(rs.getString(i));
                                }
                                dat.addElement(v);
                        }
                        table   =   new   JTable(dat,   col);
                        table.setBounds(new   Rectangle(11,   0,   266,   117));
我想知道的是,这里v.addElement(rs.getString(i));已经循环取值,为什么还要将Vector实例v追加到Vector实例dat里,然后再显示出来,有什么好处吗?v和dat不是同一类吗?

[解决办法]
因为while (rs.next()) {
Vector v = new Vector();
for (i = 1; i <= rsd.getColumnCount(); i++) {

v.addElement(rs.getString(i));
}
dat.addElement(v);


}
这段代码循环一次 V就会被重新实例化一次 如果把table = new JTable(dat, col);改为table = new JTable(V, col);的话那么V中就只有一条数据,就是循环的最后一条。

其实这段代码可以写为:
while (rs.next()) {
// Vector v = new Vector();
for (i = 1; i <= rsd.getColumnCount(); i++) {
//v.addElement(rs.getString(i));
dat.addElement(rs.getString(i));
}
// dat.addElement(v);
}
[解决办法]
LS那么解释我都糊涂了,LZ可以这样取理解
因为你的程序里没有使用BEAN来封装单条数据,而是用Vector来封装单挑数据,所以你看上去有些糊涂
你可以理解成里面的Vector是封装的查询结果二维表力的单条数据,也就是一行。
而外面的Vector是封装每条数据的数据集,也就好比是整个二维表。

热点排行
Bad Request.