2017-01-31 6 views
-1

私はJavaでこのクエリを持っています(phpAdmin、SQLでチェックし、2つのテーブルから必要なレコードフィールドを得ます)。JavaレコードセットでJOINを使用して2つのテーブルからsqlクエリの結果を表示

質問:その結合テーブルのすべてのフィールドをJavaのレコードセットに入れる方法は?

これまでのところ、私が持っている:

PreparedStatement ps = null; 
    ResultSet rs = null; 
    String query = "SELECT ttslot.*, class.* FROM ttslot JOIN class USING(classId)where classId=?"; 

    ps = c.prepareStatement(query); 
    ps.setInt(1, id); 

    while (rs.next()) { 

     this.setId(rs.getInt("Id")); 
     this.setClassId(rs.getInt("classId")); 
     this.setTitle(rs.getString("title")); 
     this.setDate(rs.getString("date")); 
     this.setPlacesLeft(rs.getInt("placesLeft")); 

    } 

このクエリはttslotのJava Bean内ではありませんので、私はそのテーブルのすべての変数にアクセスすることができ、何の問題が、どのように「クラス」テーブルから値を取得すること(あります参加しましたか?私はクラスコストを持っている、例えば、フィールド、私は格納する必要があります。

this.?????? 

申し訳ありませんが混乱します。ありがとう

あなたの ttslot内タイプ クラスの属性を作成することができます
+0

Err、 'this.setCost(rs.getInt(" cost "));'? – Kayaman

+0

お返事ありがとうございます。私は "プライベートintコスト"を持っていないjavaで、それはttslotテーブルに存在しないデータベース自体のように。それは別のクラス、テーブルから来ます。私はそれをあなたのやり方で試してみました - NULLポインタの抜け毛 – KTM950

+0

まあ、それはあなたが望むところに置くのはあなた次第です。 – Kayaman

答えて

0

パブリッククラスttslot {

//... 
    private Class cls; 
    //... 

    while (rs.next()) { 

     this.setId(rs.getInt("Id")); 
     this.setClassId(rs.getInt("classId")); 
     this.setTitle(rs.getString("title")); 
     this.setDate(rs.getString("date")); 
     this.setPlacesLeft(rs.getInt("placesLeft")); 

     //this is just an example i don't know how your table look like 
     this.cls = new Class(); 
     this.cls.setCost(rs.getInt("class.cost")); 
    } 

public class ttslot{ 
    //Set attributes of your table 
    private int id; 
    private int classId; 
    private String title; 

    //create attribute of type Class 
    private Class cls; 

    //... 
    //getters and setters 
} 

と、あなたの属性を取得したいとき

クラス名をクラスにしてください。これが問題になることがあります。

ありがとうございます。

関連する問題