2017-12-11 5 views
-2

私はデータベースの内容をJTableに表示するプログラムを書いていますが、難しい部分はRMIを使うことです。arraylistを渡して少し問題があります。サーバー側に送信し、更新します。私は助けを感謝する、私はほとんど完全な初心者ですので、私は本当に何が間違っているか把握できないことに注意してください、誰かが手伝って喜んでいる場合、これを達成する方法を学ぶことは本当にうれしいです。JAVA RMI arraylistの更新と返りの配列

これは私のインターフェイスの実装です:

public ArrayList passArrayList(ArrayList empjobslist, String tempName) throws RemoteException { 
    Statement st; 
    ResultSet rs; 
    String name = null; 
    String surname = null; 
    String finalUserName = null; 
    String tempFinalUserName = null; 
    ArrayList<empJobsList> a = new ArrayList<>(); 
    try { 
     String tempNametemp = tempName; 
     // converting username into name and lastname to be displayed in 
     // userLabel 
     String userQuery = "SELECT NAME, LASTNAME FROM WAITERS WHERE USERNAME = '" + tempNametemp + "'"; 
     st = con.createStatement(); 
     rs = st.executeQuery(userQuery); 
     while (rs.next()) { 
      name = rs.getString("NAME"); 
      surname = rs.getString("LASTNAME"); 
     } 
     finalUserName = name + "" + surname; 
     tempFinalUserName = finalUserName.toUpperCase(); 
     try { 
      String displayQuery = "SELECT * FROM " + tempFinalUserName + ""; 
      st = con.createStatement(); 
      rs = st.executeQuery(displayQuery); 
      empJobsList empjoblist; 
      while (rs.next()) { 
       empjoblist = new empJobsList(rs.getString("role"), rs.getString("location"), 
         rs.getString("neareststation"), rs.getString("hourlyrate"), rs.getString("hours"), 
         rs.getString("date")); 
       a.add(empjoblist); 
      } 
      System.out.println(empjobslist); 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } catch (Exception ex) { 
     System.out.println("something wrong"); 
    } 
    return a; 
} 

そして、これは私のクライアントプログラム

public ArrayList<empJobsList> getEmpJobsListList() { 
    ArrayList<empJobsList> empjobslist = new ArrayList<>(); 
    String tempName = uNameLbl.getText(); 
    WaitersInterface display = null; 
    try { 
     Registry registry = LocateRegistry.getRegistry(registryPort); 
     WaitersInterface wii = (WaitersInterface) registry.lookup(registryName); 
     System.out.println("Connected succesfully"); 
     try { 
      System.out.println(); 
      wii.passArrayList(empjobslist, tempName); 
      System.out.println("List after" + empjobslist); 
     } catch (Exception ex) { 
     } 
    } catch (Exception es) { 
    } 
    return empjobslist; 
} 

public void display_jobs() { 
    ArrayList<empJobsList> a = getEmpJobsListList(); 
    DefaultTableModel model = (DefaultTableModel) empJobTable.getModel(); 
    Object[] row = new Object[6]; 
    for (int i = 0; i < a.size(); i++) { 
     row[0] = a.get(i).getrole(); 
     row[1] = a.get(i).getlocation(); 
     row[2] = a.get(i).getneareststation(); 
     row[3] = a.get(i).gethourlyrate(); 
     row[4] = a.get(i).gethours(); 
     row[5] = a.get(i).getdate(); 
     model.addRow(row); 
    } 
} 

であり、これは

public class JobsList { 

    private String role, location, neareststation, hourlyrate, hours, date; 

    public JobsList(String role, String location, String neareststation, String hourlyrate, String hours, 
      String date) { 
     this.role = role; 
     this.location = location; 
     this.neareststation = neareststation; 
     this.hourlyrate = hourlyrate; 
     this.hours = hours; 
     this.date = date; 
    } 

    public String getrole() { 
     return role; 
    } 

    public String getlocation() { 
     return location; 
    } 

    public String getneareststation() { 
     return neareststation; 
    } 

    public String gethourlyrate() { 
     return hourlyrate; 
    } 

    public String gethours() { 
     return hours; 
    } 

    public String getdate() { 
     return date; 
    } 
} 

OUTPUT私JobsListクラスです:

List after[] 
Connected succesfully 
+0

本当にユーザー名ごとに表がありますか?おそらくそうは思われませんが、それは2番目のSELECTステートメントが必要とするものです。例外をキャッチするときは、「何かが間違っている」のような馬鹿馬鹿しいメッセージを印刷しないでください。プリントアウト*何が間違っていたかは例外で* * – EJP

+0

はい、私は顧客ごとにテーブルを持っていますが、それは愚かなように見えますが、おそらくそれは私が始めただけです。 – Quba

+0

テーブル内にデータがあります。 – Quba

答えて

0
wii.passArrayList(empjobslist, tempName); 

これはリストを更新しません。あなたは戻り値を投げ捨てています。

empjobslist = wii.passArrayList(empjobslist, tempName); 

実際、空のリストをパラメータとして渡すのは無意味です。

+0

えええええええ、どうやってこの問題を回避しますか?私のコードの中で特に間違っているものは何ですか? – Quba

+0

** EH?**あなたは何について話していますか?私はあなたの質問に答えました。私は間違ったコードを指摘しました。私は何が間違っていると述べました。私は正しいコードを提供しました。 – EJP

+0

ありがとう、本当にありがとうございました。再度、感謝します。 – Quba