Subhero
13 May 2010, 15:16
Ik zit weer vast helaas. Sorry dat ik jullie hier bombardeer met al die vragen maar mijn project moet zondag af zijn en ik wil toch tenminste de helft van de punten halen :shy:
Nu moet ik al de data die ik heb uit de tabellen kunnen opzoeken en inladen in een JTable. Ik heb nu dus de comboboxen met bv. de gemeenten. Als ik daar een gemeente uit kies en op zoek druk, moet hij alle stagestudenten die in de bedrijven in die gemeente op stage staan, tonen in de JTable.
Ik heb gewoon geen flauw idee hoe ik daaraan begin. Doe ik dit met queries in de Data Acces klasse of laad ik eerste alles in de JTables en daarna deze de zoekacties laten behandelen? Als ik alleen al de preferentie van gemeenten kan vinden zou ik al blij zijn, en kan ik daar verder op borduren.
public class StudentFrame extends JFrame implements ActionListener {
private Container content;
private JPanel topLeft, topRight, bottomLeft, bottomRight;
private JComboBox gemeentenBox, sectorBox, soortBox;
private JTextField aantalVeld;
private JButton zoekenButton;
private String gemeente;
private DAjstageLogin daLogin = null;
private DAjstageBedrijf daBedrijf = null;
private DAjstageGemeente daGemeente = null;
private DAjstageKeuze daKeuze = null;
private DAjstageSector daSector = null;
private DAjstageSoort daSoort = null;
private DAjstageStudent daStudent = null;
private DAjstageOpdracht daOpdracht = null;
public StudentFrame(DAjstageBedrijf daBedrijf, DAjstageKeuze daKeuze, DAjstageGemeente daGemeente, DAjstageSector daSector, DAjstageOpdracht daOpdracht, DAjstageSoort daSoort, DAjstageStudent daStudent, DAjstageLogin daLogin)
throws Exception {
this.daGemeente = daGemeente;
this.daSector = daSector;
this.daOpdracht = daOpdracht;
this.daStudent = daStudent;
this.daKeuze = daKeuze;
this.daLogin = daLogin;
this.daSoort = daSoort;
this.setLocation(150,150);
setTitle("Welkom");
setSize(1000,750);
opbouwScherm();
addWindowListener(new VensterHandler());
setVisible(true);
this.setResizable(false);
}
public void opbouwScherm(){
content = getContentPane();
content.setLayout(null);
JComboBox gemeentenBox = new JComboBox(daGemeente.getjStageGemeente());
gemeentenBox.insertItemAt("geen voorkeur", 0);
JComboBox sectorBox = new JComboBox(daSector.getjStageSector());
sectorBox.insertItemAt("geen voorkeur", 0);
JComboBox soortBox = new JComboBox(daSoort.getjStageSoort());
soortBox.insertItemAt("geen voorkeur", 0);
JTextField aantalVeld = new JTextField();
JButton zoekenButton = new JButton("Zoek");
zoekenButton.addActionListener(this);
JLabel gemeentenLabel = new JLabel("Locatie bedrijf:");
JLabel aantalLabel = new JLabel("Werkzame informatici:");
JLabel sectorLabel = new JLabel("Sector stagebedrijf:");
JLabel soortLabel = new JLabel("Soort stage:");
//comboboxen
gemeentenBox.setBounds(5, 30, 150, 20);
sectorBox.setBounds(160, 30, 325, 20);
soortBox.setBounds(495, 30, 140, 20);
aantalVeld.setBounds(625, 30, 135, 20);
//labels
gemeentenLabel.setBounds(5,10,120,20);
sectorLabel.setBounds(160,10,120,20);
soortLabel.setBounds(495,10,120,20);
aantalLabel.setBounds(625,10,135,20);
//buttons
zoekenButton.setBounds(800,30,80,20);
content.add(gemeentenBox);
content.add(sectorBox);
content.add(soortBox);
content.add(aantalVeld);
content.add(gemeentenLabel);
content.add(sectorLabel);
content.add(soortLabel);
content.add(aantalLabel);
content.add(zoekenButton);
}
public void actionPerformed(ActionEvent e) {
gemeente = gemeentenBox.getSelectedItem()+"";
System.out.println(daGemeente.getGemeenten(gemeent e));
}
class VensterHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
try {
System.exit(0);
} catch (Exception err) {
JOptionPane.showMessageDialog(content, "Fout bij sluiten databank","Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
public class DAjstageGemeente {
private Connection connection = null;
public DAjstageGemeente (String url, String login, String password, String driver)
throws ClassNotFoundException, SQLException
{
Class.forName(driver);
connection = DriverManager.getConnection(url, login, password);
}
public void close() throws SQLException {
if(connection != null) {
connection.close();
}
}
public Vector<jstageGemeente> getjStageGemeente() {
Statement stmt = null;
ResultSet rs = null;
jstageGemeente gemeente = null;
Vector <jstageGemeente> resultaat = new Vector<jstageGemeente>();
try {
stmt = connection.createStatement();
rs = stmt.executeQuery("SELECT DISTINCT (gemeente), id, postcode FROM jstageGemeente GROUP BY gemeente");
while (rs.next()) {
gemeente = new jstageGemeente();
gemeente.setId(rs.getInt(2));
gemeente.setPostcode(rs.getInt(3));
gemeente.setGemeente(rs.getString(1));
resultaat.add(gemeente);
}
}
catch(Exception e) {
e.printStackTrace();
}
finally
{ try {
if(stmt!=null) stmt.close();
if(rs!=null) rs.close();
} catch(SQLException e){}
}
return resultaat;
}
Hieronder heb ik iets geprobeerd. Namelijk om de vector te vullen met String objecten. Helaas werkt dit niet goed, zoals verwacht natuurlijk. Ik kom te verwachten dat mijn code niet werkt ondertussen. Ik heb geprobeerd om de keuze in Netbeans af te drukken
public Vector getGemeenten(String gemeenten) {
Vector result = new Vector();
PreparedStatement stmt = null;
ResultSet rs = null;
try{
stmt = connection.prepareStatement("SELECT gemeente FROM jstageGemeente WHERE gemeente = ?");
stmt.setString(1, gemeente);
rs = stmt.executeQuery ();
while (rs.next()) {
Vector rijVector = new Vector();
rijVector.add(rs.getString(1));
result.add(rijVector);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (stmt != null) stmt.close();
if (rs != null) rs.close();
} catch(SQLException e){}
}
return result;
}
}
Alvats bedankt
Nu moet ik al de data die ik heb uit de tabellen kunnen opzoeken en inladen in een JTable. Ik heb nu dus de comboboxen met bv. de gemeenten. Als ik daar een gemeente uit kies en op zoek druk, moet hij alle stagestudenten die in de bedrijven in die gemeente op stage staan, tonen in de JTable.
Ik heb gewoon geen flauw idee hoe ik daaraan begin. Doe ik dit met queries in de Data Acces klasse of laad ik eerste alles in de JTables en daarna deze de zoekacties laten behandelen? Als ik alleen al de preferentie van gemeenten kan vinden zou ik al blij zijn, en kan ik daar verder op borduren.
public class StudentFrame extends JFrame implements ActionListener {
private Container content;
private JPanel topLeft, topRight, bottomLeft, bottomRight;
private JComboBox gemeentenBox, sectorBox, soortBox;
private JTextField aantalVeld;
private JButton zoekenButton;
private String gemeente;
private DAjstageLogin daLogin = null;
private DAjstageBedrijf daBedrijf = null;
private DAjstageGemeente daGemeente = null;
private DAjstageKeuze daKeuze = null;
private DAjstageSector daSector = null;
private DAjstageSoort daSoort = null;
private DAjstageStudent daStudent = null;
private DAjstageOpdracht daOpdracht = null;
public StudentFrame(DAjstageBedrijf daBedrijf, DAjstageKeuze daKeuze, DAjstageGemeente daGemeente, DAjstageSector daSector, DAjstageOpdracht daOpdracht, DAjstageSoort daSoort, DAjstageStudent daStudent, DAjstageLogin daLogin)
throws Exception {
this.daGemeente = daGemeente;
this.daSector = daSector;
this.daOpdracht = daOpdracht;
this.daStudent = daStudent;
this.daKeuze = daKeuze;
this.daLogin = daLogin;
this.daSoort = daSoort;
this.setLocation(150,150);
setTitle("Welkom");
setSize(1000,750);
opbouwScherm();
addWindowListener(new VensterHandler());
setVisible(true);
this.setResizable(false);
}
public void opbouwScherm(){
content = getContentPane();
content.setLayout(null);
JComboBox gemeentenBox = new JComboBox(daGemeente.getjStageGemeente());
gemeentenBox.insertItemAt("geen voorkeur", 0);
JComboBox sectorBox = new JComboBox(daSector.getjStageSector());
sectorBox.insertItemAt("geen voorkeur", 0);
JComboBox soortBox = new JComboBox(daSoort.getjStageSoort());
soortBox.insertItemAt("geen voorkeur", 0);
JTextField aantalVeld = new JTextField();
JButton zoekenButton = new JButton("Zoek");
zoekenButton.addActionListener(this);
JLabel gemeentenLabel = new JLabel("Locatie bedrijf:");
JLabel aantalLabel = new JLabel("Werkzame informatici:");
JLabel sectorLabel = new JLabel("Sector stagebedrijf:");
JLabel soortLabel = new JLabel("Soort stage:");
//comboboxen
gemeentenBox.setBounds(5, 30, 150, 20);
sectorBox.setBounds(160, 30, 325, 20);
soortBox.setBounds(495, 30, 140, 20);
aantalVeld.setBounds(625, 30, 135, 20);
//labels
gemeentenLabel.setBounds(5,10,120,20);
sectorLabel.setBounds(160,10,120,20);
soortLabel.setBounds(495,10,120,20);
aantalLabel.setBounds(625,10,135,20);
//buttons
zoekenButton.setBounds(800,30,80,20);
content.add(gemeentenBox);
content.add(sectorBox);
content.add(soortBox);
content.add(aantalVeld);
content.add(gemeentenLabel);
content.add(sectorLabel);
content.add(soortLabel);
content.add(aantalLabel);
content.add(zoekenButton);
}
public void actionPerformed(ActionEvent e) {
gemeente = gemeentenBox.getSelectedItem()+"";
System.out.println(daGemeente.getGemeenten(gemeent e));
}
class VensterHandler extends WindowAdapter {
public void windowClosing(WindowEvent e) {
try {
System.exit(0);
} catch (Exception err) {
JOptionPane.showMessageDialog(content, "Fout bij sluiten databank","Error", JOptionPane.ERROR_MESSAGE);
}
}
}
}
public class DAjstageGemeente {
private Connection connection = null;
public DAjstageGemeente (String url, String login, String password, String driver)
throws ClassNotFoundException, SQLException
{
Class.forName(driver);
connection = DriverManager.getConnection(url, login, password);
}
public void close() throws SQLException {
if(connection != null) {
connection.close();
}
}
public Vector<jstageGemeente> getjStageGemeente() {
Statement stmt = null;
ResultSet rs = null;
jstageGemeente gemeente = null;
Vector <jstageGemeente> resultaat = new Vector<jstageGemeente>();
try {
stmt = connection.createStatement();
rs = stmt.executeQuery("SELECT DISTINCT (gemeente), id, postcode FROM jstageGemeente GROUP BY gemeente");
while (rs.next()) {
gemeente = new jstageGemeente();
gemeente.setId(rs.getInt(2));
gemeente.setPostcode(rs.getInt(3));
gemeente.setGemeente(rs.getString(1));
resultaat.add(gemeente);
}
}
catch(Exception e) {
e.printStackTrace();
}
finally
{ try {
if(stmt!=null) stmt.close();
if(rs!=null) rs.close();
} catch(SQLException e){}
}
return resultaat;
}
Hieronder heb ik iets geprobeerd. Namelijk om de vector te vullen met String objecten. Helaas werkt dit niet goed, zoals verwacht natuurlijk. Ik kom te verwachten dat mijn code niet werkt ondertussen. Ik heb geprobeerd om de keuze in Netbeans af te drukken
public Vector getGemeenten(String gemeenten) {
Vector result = new Vector();
PreparedStatement stmt = null;
ResultSet rs = null;
try{
stmt = connection.prepareStatement("SELECT gemeente FROM jstageGemeente WHERE gemeente = ?");
stmt.setString(1, gemeente);
rs = stmt.executeQuery ();
while (rs.next()) {
Vector rijVector = new Vector();
rijVector.add(rs.getString(1));
result.add(rijVector);
}
}
catch (Exception e) {
e.printStackTrace();
}
finally {
try {
if (stmt != null) stmt.close();
if (rs != null) rs.close();
} catch(SQLException e){}
}
return result;
}
}
Alvats bedankt