2016-03-21 7 views
0

ここではいくつかのビデオと質問を見ましたが、探しているものが見つかりません。私はプログラミングのnoob(NetBeans上のJavaでDerbyデータベースを使用してプログラミングしています)ですので、やさしくしてください。私はそれに2つのテーブルを持つデータベースを持っています。 StudentScoresとStudentDetails。2つのデータベーステーブルの詳細をJTableに取り込むJDBC

StudentDetailsには、NAMEID列とSTUDENTNAME列があります。

StudentScoresには、NAMEID、SCOREID、DATETAKEN、およびSCOREの列があります。

自分のプログラムにJTableを置いて、最初のデータベースのNAME列と2番目のテーブルのDATETAKENとSCORE列を表示します。 どうすればいいですか?私は、1つのデータベーステーブルのすべての詳細をJTableに取り込む方法に関するチュートリアルを見つけました。

また、ユーザーがコンボボックスで名前を選択したときに、学生が(JTable内の)すべてのレコードを表示できるようにしたいとします。私はコンボボックスの名前のIDを取得しなければならないことを知っていますし、それはQUERYですか?

私はこの http://1bestcsharp.blogspot.co.uk/2015/06/java-mysql-populate-jtable-Depending-JCombobox-Selected-Value.html

が見つかりましたが、複数のクラスが作成されていたので、私は混乱しました。 複数のクラスを作成する必要がありますか、同じJFrameフォームですべて行うことはできますか?

+0

2つのテーブル間でジョインを実行できるデータベース(他のジョインについては読んでください)の場合、Javaプログラムはジョインの結果をただ1つのテーブルと見なすことができます。それはあなたを通すだろうか? –

+0

お返事ありがとうございます。私はジョイントを見て、インナーは私が望んでいた2つのテーブルからの列に参加しました、これは今、新しいテーブルですか?サービス内のデータベースの下にある「テーブル」セクションには表示されません。クエリなどでメインプログラムでどのように参照するのですか? @ OleV.V。 – z33

+0

いいえ、新しいテーブルではありません。しかし、ResultSetからTableModelにデータを取り込むコードでは、ResultSetのデータにデータがどのように取り込まれているか気にしません。だからあなたの質問は、スイングの質問ではないSQLの質問です。 – camickr

答えて

0

はこれを試してみてください:

import java.awt.Dimension; 
import java.util.Vector; 

import javax.swing.JFrame; 
import javax.swing.JScrollPane; 
import javax.swing.JTable; 
import javax.swing.table.AbstractTableModel; 

public class Main extends JFrame { 
    private JTable m_simpleTable; 

    private SimpleTableModel m_simpleTableModel; 

    public Main() { 

    m_simpleTableModel = new SimpleTableModel(getData()); 
    m_simpleTable = new JTable(m_simpleTableModel); 
    JScrollPane scrollPane = new JScrollPane(m_simpleTable); 
    getContentPane().add(scrollPane); 
    } 

    public Vector getData(){ 
     Vector dummyMacData = new Vector(10, 10); 
     dummyMacData.addElement(new Data(new Integer(100), "ABC", "11/12/2016","A+", "E")); 
     dummyMacData.addElement(new Data(new Integer(105), "XYZ", "20/01/2015","B-", "E")); 
     return dummyMacData; 
    } 

    public static void main(String[] arg) { 
    Main m = new Main(); 

    m.setVisible(true); 
    m.setSize(new Dimension(600, 300)); 
    m.validate(); 
    } 

    class SimpleTableModel extends AbstractTableModel { 
    public String[] m_colNames = { "Student Id", "Name", "Date","Score", "" }; 

    public Class[] m_colTypes = { Integer.class, String.class, String.class, String.class, 
     String.class }; 

    Vector m_macDataVector; 

    public SimpleTableModel(Vector macDataVector) { 
     super(); 
     m_macDataVector = macDataVector; 
    } 
    public int getColumnCount() { 
     return m_colNames.length; 
    } 
    public int getRowCount() { 
     return m_macDataVector.size(); 
    } 
    public void setValueAt(Object value, int row, int col) { 
     Data macData = (Data) (m_macDataVector.elementAt(row)); 

     switch (col) { 
     case 0: 
     macData.setStudentId((Integer) value); 
     break; 
     case 1: 
     macData.setName((String) value); 
     break; 
     case 2: 
     macData.setDate((String) value); 
     break; 
     case 3: 
     macData.setScore((String) value); 
     break; 
     case 4: 
     //macData.setE((String) value); 
     break; 
     } 
    } 

    public String getColumnName(int col) { 
     return m_colNames[col]; 
    } 

    public Class getColumnClass(int col) { 
     return m_colTypes[col]; 
    } 
    public Object getValueAt(int row, int col) { 
     Data macData = (Data) (m_macDataVector.elementAt(row)); 

     switch (col) { 
     case 0: 
     return macData.getStudentId(); 
     case 1: 
     return macData.getName(); 
     case 2: 
     return macData.getDate(); 
     case 3: 
     return macData.getScore(); 
     case 4: 
     return null;//macData.getE(); 
     } 

     return new String(); 
    } 
    } 

} 

class Data { 
    private Integer studentId; 

    private String name; 

    private String date; 

    private String score; 

    private String e; 

    public Data() { 
    } 

    public Data(Integer aa, String bb, String cc, String dd, String ee) { 
     studentId = aa; 
     name = bb; 
     date = cc; 
     score = dd; 
    e = ee; 
    } 

public Integer getStudentId() { 
    return studentId; 
} 

public void setStudentId(Integer studentId) { 
    this.studentId = studentId; 
} 

public String getName() { 
    return name; 
} 

public void setName(String name) { 
    this.name = name; 
} 

public String getDate() { 
    return date; 
} 

public void setDate(String date) { 
    this.date = date; 
} 

public String getScore() { 
    return score; 
} 

public void setScore(String score) { 
    this.score = score; 
} 



} 
+0

返事をいただきありがとうございますメインのJFrameの権利で?私が得ているのは、すでに定義されているSimpleTableModelのエラーです。 – z33

+0

@ z33既に作成されているオブジェクトを確認してください。エラー自体は十分な情報を持っています。 –

0

はちょうどthis..itが

Select 
    sd.NameID, 
    sd.StudentsName, 
    sm.DATETAKEN, 
    sm.Score 
from 
    (firsttablename) sd, 
    (secondtablename) sm 
where 
    sd.NameId = sm.NameId 
    and sd.NameID = (nameid you want to display data) 

正常に動作する必要がありませんが、これであなたは、第二のテーブルの外部キーとして名前ID確認する必要があります。

関連する問題