2011-12-13 55 views
0

我在一个Java项目 工作我使用JDK 1.6额外的列中自动附加JTable中(如何删除)

我想从JTable中 数据库中添加数据我以DefaulTableModel实现了这个 和我通过的使用ResultSetMetadata 得到的列名,但问题是

**我的JTable中 0号索引处得到一个额外的列名我想删除此列 它看起来像这样

A | DEPTNO

我只需要DEPTNO **

用于创建此模型的代码

private void updateTable() throws Exception { 

    String sqlrow = "Select count(*) from emp"; 
    rs= db.sta.executeQuery(sqlrow); 
     rs.next();       
    int rows=rs.getInt(1); 
    System.out.println(""+rows); 


    String sqldata = "SELECT deptno FROM emp"; 
    rs =db.sta.executeQuery(sqldata); 
    rsMD = rs.getMetaData(); 
    numberOfColumns = rsMD.getColumnCount(); 
    ColumnNames = new String[numberOfColumns+1]; 
    System.out.println(""+numberOfColumns); 

    for(int i=1;i<=numberOfColumns;i++) 
    { 
     String colName=rsMD.getColumnName(i); 
     ColumnNames[i] = colName; 
     System.out.println(""+ColumnNames[i]); 
    } 


    //Cj is a method which takes sqlQuery , rows, column 
    Object[][] rowData=CJ(sqldata,rows,numberOfColumns); 
    //jt is table name 
    jt.setModel(new DefaultTableModel(rowData,ColumnNames)); 

} 
的CJ()

 public Object[][] CJ(String sql,int rows,int cols) 
{ 
    Object[][] obj=new Object[rows][cols+1]; 
    ResultSet rs=null; 
    try{ 
     rs= db.sta.executeQuery(sql); 
     int c=0; 
      while(rs.next()) 
      {   
      for(int i=1;i<=cols;i++) 
       { 
         obj[c][i]=rs.getString(i);       
       } 
       c++; 
      } 

     } 
    catch(Exception ex) 
    { 
     ex.printStackTrace(); 
    } 
    return obj; 
} 

我使用此代码

//代码在 按钮点击

    updateTable(); 
      jsp = new JScrollPane(jt); // jt is Jtable 
      jp.add(jsp); //jp is jpanel 

请帮我

+0

修复您的shift键并将其应用于每个句子的开始, “I”这个单词的每个实例,以及适合于J2SE类的实例,我可能会阅读该问题。 –

+0

它现在okkz现在我觉得你明白了 –

回答

4

不遵守命名约定使得它很难读,但我建议采取在下面的代码段细看

numberOfColumns = rsMD.getColumnCount(); 
    ColumnNames = new String[numberOfColumns+1]; 
    System.out.println(""+numberOfColumns); 

    for(int i=1;i<=numberOfColumns;i++) 
    { 
     String colName=rsMD.getColumnName(i); 
     ColumnNames[i] = colName; 
     System.out.println(""+ColumnNames[i]); 
    } 

在这里,您明确使用多列名字然后numberOfColumns。同理,你的CJ方法,你从索引1开始。 只需在索引0开始所有for循环,使数组缩短,一切都应该工作

+0

兄弟它不能在java中完成索引从1开始,如果我们会把0然后无效索引错误 –

+3

+1发现问题(虽然解决方案关闭)。当你访问“ColumnNames”数组时,你需要使用(i-1),因为数组索引是从零开始的。 @C_J,学习标准的Java命名约定。变量名不能以上下角色开始。 – camickr

+0

我是初学者我不习惯命名约定,但我会看到它,我不会犯这种错误 –

相关问题