2014-12-08 8 views
2

Я запускаю запрос в столбце ID, но я не хочу, чтобы он был видимым в моем фрейме/панели. Как я могу это достичь? Должен ли я сделать другую таблицу, есть ли функция в sql/mysql, которая позволяет скрыть столбцы? Я попытался это сделать, но ничего не нашел. Вот код:Как сделать столбец таблицы mySQL невидимым

public void tableChanged(TableModelEvent e) { 
    int row = e.getFirstRow(); 
    int col = e.getColumn(); 
    model = (MyTableModel) e.getSource(); 
    String stulpPav = model.getColumnName(col); 
    Object data = model.getValueAt(row, col); 
    Object studId = model.getValueAt(row, 0); 
    System.out.println("tableChanded works"); 
    try { 
     new ImportData(stulpPav, data, studId); 
    } catch (ClassNotFoundException e1) { 
     e1.printStackTrace(); 
    } catch (SQLException e1) { 
     e1.printStackTrace(); 
    } 
} 
public class ImportData { 
    Connection connection = TableWithBottomLine.getConnection(); 

    public ImportData(String a, Object b, Object c) 
      throws ClassNotFoundException, SQLException { 
     Statement stmt = null; 
     try { 

      String stulpPav = a; 
      String duom = b.toString(); 
      String studId = c.toString(); 
      System.out.println(duom); 
      connection.setAutoCommit(false); 
      stmt = connection.createStatement(); 
      stmt.addBatch("update finance.fin set " + stulpPav + " = " + duom 
        + " where ID = " + studId + ";"); 
      stmt.executeBatch(); 
      connection.commit(); 
     } catch (BatchUpdateException e) { 
      e.printStackTrace(); 
     } catch (SQLException e) { 
      e.printStackTrace(); 
     } finally { 
      if (stmt != null) 
       stmt.close(); 
      connection.setAutoCommit(true); 
      System.out.println("Data was imported to database"); 
     } 
    } 
    }   
public class MyTableModel extends AbstractTableModel{ 
    int rowCount; 
    Object data [][]; 
    String columnNames []; 
    public MyTableModel() throws SQLException{ 
     String query ="SELECT ID, tbl_Date as Date, Flat, Mobile, Food, Alcohol, Transport, Outdoor, Pauls_stuff, Income, Stuff FROM finance.fin"; 
     ResultSet rs ; 
     Connection connection = TableWithBottomLine.getConnection(); 

     Statement stmt = null; 
     stmt = connection.createStatement(); 
     rs = stmt.executeQuery(query); 

     rs.last(); 
     rowCount = rs.getRow(); 
     data = new Object[rowCount][11]; 
     rs = stmt.executeQuery(query); 
     for (int iEil = 0; iEil < rowCount; iEil++){ 
      rs.next(); 
      data[iEil][0] = rs.getInt("ID"); 
      data[iEil][1] = rs.getDate("Date"); 
      data[iEil][2] = rs.getFloat("Flat"); 
      data[iEil][3] = rs.getFloat("Mobile"); 
      data[iEil][4] = rs.getFloat("Food"); 
      data[iEil][5] = rs.getFloat("Alcohol"); 
      data[iEil][6] = rs.getFloat("Transport"); 
      data[iEil][7] = rs.getFloat("Outdoor"); 
      data[iEil][8] = rs.getFloat("Pauls_stuff"); 
      data[iEil][9] = rs.getFloat("Income"); 
      data[iEil][10] = rs.getFloat("Stuff"); 
     } 

     String[] columnName = {"ID", "Date","Flat","Mobile"   
       ,"Food","Alcohol","Transport", "Outdoor", "Pauls_stuff", "Income", "Stuff"}; 
     columnNames = columnName; 
    } 
+2

Если вы не хотите отображать столбец идентификатора, и если он не нужен в вашем запросе, вы можете оставить его в своем заявлении выбора и отобразить оставшиеся результаты ... – vembutech

+0

Кроме того, вы можете оставить ID из своего массива данных и поместите дату в столбец 0, квартиру в столбце 1 и т. д. И прекратите пытаться украсть мое имя! :) – Paul

+0

В запросе необходим столбец идентификатора, но не нужно быть видимым при показе данных. Хорошо, мне нужно переварить информацию;) спасибо за ответы. – Paul

ответ

2

Это решило мою проблему:

table.removeColumn(table.getColumnModel().getColumn(0)); 

Я поместил это в мой класс. Это позволяет удалить столбец из представления таблицы, но идентификатор столбца все еще содержится в TableModel. Я обнаружил, что многие люди ищут возможность исключить конкретный столбец (например, автоинкремент) из инструкции SELECT в sql/mysql, но сам язык не имеет этой функции. Поэтому я надеюсь, что это решение также поможет другим.

0

Не помещайте ID в избранной части запроса

String query ="SELECT tbl_Date as Date, Flat, Mobile, Food, Alcohol, Transport,  
Outdoor, Pauls_stuff, Income, Stuff FROM finance.fin"; 
Смежные вопросы