2011-12-13 69 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

我是初學者我不習慣命名約定,但我會看到它,我不會犯這種錯誤 –