дополнительный столбец автоматически добавляется в jtable (как его удалить) - PullRequest
0 голосов
/ 13 декабря 2011

Я работаю над проектом Java. Я использую jdk 1.6

. Я хочу добавить данные из базы данных в jtable. Я добился этого с помощью DefaulTableModel и получил имена столбцов с помощью ResultSetMetadata, но проблемаis

** Я получаю дополнительное имя столбца A в 0-м индексе jtable. Я хочу удалить этот столбец, он выглядит следующим образом

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

, пожалуйста, помогите мне

1 Ответ

4 голосов
/ 13 декабря 2011

Несоблюдение правил именования затрудняет чтение, но я бы посоветовал поближе взглянуть на следующий фрагмент кода

   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. Просто запустите все эти циклы for с индексом 0, сделайте массивы на один короче, и все должно работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...