2017-12-10 14 views
0

쿼리 용 클래스와 GUI 용 클래스가 있습니다. 그래서 내 GUI 클래스에서, 나는이 공공 회원이 :두 클래스를 사용하여 ResultSet의 jTable을 채울 수 없습니다.

model = (DefaultTableModel) table.getModel(); 
table = new JTable(); 

쿼리 클래스에 나는이 방법이 있지만 :

public void selectPassengers(int rows) { 
     PreparedStatement pst = null; 
     ResultSet rs = null; 

     String query = "SELECT * FROM brs.passenger"; 
     try { 
      pst = con.prepareStatement(query); 
      rs = pst.executeQuery(); 

      String[] attributes = new String[9]; 

      GUI rg = new GUI(); 

      while (rs.next()) { 
       attributes[0] = rs.getString(1); 
       attributes[1] = rs.getString(2); 
       attributes[2] = rs.getString(3); 
       rg.model.insertRow(rg.table.getRowCount(), new Object[] { 
         attributes[0], attributes[1], attributes[2]}); 
      } 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 

그것은 삽입하거나 예외를 발생하지 것입니다. 그것은 단지 아무것도하지 않습니다. while-loop 내에서 콘솔로 인쇄를 시도 했음에도 불구하고 적절한 데이터를 인쇄합니다. 데이터베이스와 연결이 정상입니다.

쿼리를 실행 한 후 GUI 클래스에서해야합니까?

바로 가기는 정상입니다. 나는 가장 쉬운 방법을 찾고있다.

답변

0
model = (DefaultTableModel) table.getModel(); 
table = new JTable(); 

위의 코드는 의미가 없습니다.

먼저 "테이블"변수에서 모델을 가져옵니다.

그런 다음 새 테이블을 만듭니다. 새 테이블을 만들면 표가 원래 모델을 더 이상 참조하지 않도록 새 모델을 만듭니다.

따라서 모델의 데이터를 업데이트하면 테이블의 현재 모델이 아닌 이전 모델이 업데이트됩니다.

기본 코드가 있어야한다 : 이제

DefaultTableModel model = new DefaultTableModel(...); 
JTable table = new JTable(model); 

당신이 모델의 데이터를 업데이트 할 경우, 테이블 및 모델 동기화에 있습니다.

+0

정보 주셔서 감사합니다. 그래도 작동하지 않았다. DefaultTableModel (..)에 대한 매개 변수로 행 및 열의 수를 지정하려고했습니다. 아무것도 바뀌지 않습니다. 내 삽입 코드가 맞습니까? –

+0

데이터베이스 로직에 새 GUI를 만드는 이유는 무엇입니까? 1) 프레임을 생성하고, 2) JTable을 생성해야합니다. JScrollPane에 테이블을 추가해, 스크롤 구획을 프레임에 추가합니다. 삼). 그런 다음 테이블 행에 데이터 행을 삽입하는 메소드가 있습니다. 먼저 하드 코딩 된 데이터로이 로직을 작동 시키십시오. 그래야만 데이터베이스 코드에 대해 걱정할 것입니다. – camickr

+0

또한 왜 9 개의 항목이있는 배열을 만든 다음 배열에 3 개의 항목 만 추가할까요? 그렇다면 두 번째 배열을 만들어 모델에 데이터를 추가하는 이유는 무엇입니까? insertRow() 메서드를 사용할 필요가 없습니다. addRow (...) 메소드를 사용하면 자동으로 행이 데이터베이스의 끝에 추가됩니다. 하드 코딩 된 데이터를 테이블에로드하는 첫 번째 단계에서 도움이 더 필요하면 문제를 나타내는 적절한 [mcve]를 게시하십시오. 먼저 논리적으로 만들기 위해 코드를 재구성해야합니다. – camickr