Connection con=null;
PreparedStatement prst=null;
ResultSet res=null;

Vector columnName=new Vector();

Vector rowData=new Vector();
try{

con=DBconnection.Dbconnection1();
prst=con.prepareStatement("select * from dept");
res=prst.executeQuery();

while(res.next())

Vector  one=new Vector();
one.add(res.getInt(1));
one.add(res.getString(3));
rowData.add(one);
}
}catch(Exception ex)
{
ex.printStackTrace();
}


//rowData.add(two);

columnName.add("部门编号");
columnName.add("部门名称");

tbl_tableOne=new JTable(rowData,columnName);
tbl_tableOne.repaint();
数据库中有4条记录 ,但是我用上面的方法写进去的时候,jtable表  只有一条记录。 请问我哪错了?

解决方案 »

  1.   

    没用过Jtable,不过你调试一下,跟着代码跑一遍就差不多知道问题在哪了,随时看变量的变化。
      

  2.   

     boolean add(E o) 
              将指定元素追加到此向量的末尾。 
    使用
     void add(int index, E element) 
              在此向量的指定位置插入指定的元素。 
    就可以了
      

  3.   

    调试一下  查看while循环结束之后 rowdata 的大小是否为4,如果为4,那么你就在             res=prst.executeQuery();
    之后加一条语句con.commit();结束事务的意思
      

  4.   

    没用过JTableBTW 如果不考虑线程同步的话 List 比Vector效率高一些
      

  5.   

    1、先定位 问题出现在哪里,哪一行之前是对的 哪一行之后就错了
    2、分析问题原因,找出症结所在
    3、想办法解决问题,粗心大意以后注意;知识缺陷 及时补充遇到问题莫急、莫慌、莫害怕 莫郁闷 乐观一点 阳光一点 遇到问题 解决了你也就进步了 成长了 有问题是好事 说明你在成长 
    友情提醒:
    学会用dubug模式跟踪调试 对于问题排查有很大的帮助 
      

  6.   

    你是不是在插入数据时没有 commit?
      

  7.   


    Vector  one=new Vector();
    很简单,你在while里面定义Vector,每循环一次,你都重新定义一遍,最总结过,肯定是取到你sql查询出来的最后一条值,你把Vector放在while循环外面定义就好了。正确结果如下:
    Vector  one=new Vector();
                
    while(res.next())

         one.add(res.getInt(1));
         one.add(res.getString(3));
         rowData.add(one);
    }
      

  8.   

    这是我操作数据库用的代码  运行正常 和你写的代码差不多 你可以参考下 Connection ct;
    PreparedStatement ps;
    ResultSet rs;


    Vector col;
    Vector row;

    public void init(String sql)
    {
    //操作数据库
    try {
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    ct=DriverManager.getConnection("jdbc:odbc:mytest","sa","sa");
    ps=ct.prepareStatement(sql);
    rs=ps.executeQuery();
    col=new Vector();
    row=new Vector();
    col.add("empno");
    col.add("ename");
    col.add("job");

    while(rs.next())
    {

    Vector hang=new Vector();
    hang.add(rs.getInt(1));
    hang.add(rs.getString(2));
    hang.add(rs.getString(3));
    row.add(hang);

    }


    } catch (Exception e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }finally{
    try {
    rs.close();
    ps.close();
    ct.close();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }

    }
    }
      

  9.   

    我用JDK1.5试了,根本没有发现问题,是不是展示你的JTable的高度不够,挡住了部分数据,我用JFrame显示,高度设了100,我的程序如下:
                    Vector columnName = new Vector();
    Vector rowData = new Vector(); Connection con = null;
    PreparedStatement prst = null;
    ResultSet res = null; try {
    int i = 1;
    Class.forName("com.ibm.db2.jcc.DB2Driver");
    con = DriverManager.getConnection("jdbc:db2://localhost:50000/temp", "db2admin", "db2admin"); prst = con.prepareStatement("select * from table1");
    res = prst.executeQuery(); while (res.next()) {
    Vector one = new Vector();
    one.add(res.getInt(1));
    one.add(res.getString(2));
    rowData.add(one);
    System.out.println("add " + (i++));

    }
    } catch (Exception ex) {
    ex.printStackTrace();
    } finally {
                       // close DB....
    } columnName.add("部门编号");
    columnName.add("部门名称"); System.out.println("rowData size : " + rowData.size());
    JFrame jFrame = new JFrame(); JTable tbl_tableOne = new JTable(rowData, columnName);
    tbl_tableOne.repaint();
    jFrame.add(tbl_tableOne);
    jFrame.setSize(100, 100);
    jFrame.setLocation(500, 300);
    jFrame.show();
    System.out.println("end.");