Hoe mysql join in java werkend krijgen?

Status
Niet open voor verdere reacties.

Agap

Gebruiker
Lid geworden
1 nov 2010
Berichten
40
Ik heb het volgende query:

select vaknaam, maxDeelnemers , count(deelnemerCode) from inschrijving i join les l on i.lesCode l.lesCode join vak v on l.vakCode = v.vakCode group by i.lesCode;


Ik wil dus een tabel met alle vaknamen met bijbehorende maximaal aantal deelnemers en hoeveel mensen zich ingeschreven hebben voor een les waarin die vak wordt gegeven.

Vaknaam en maxDeelnemers zitten beide in het tabel 'vak' en deelnemerCode haal ik uit tabel inschrijving, want in inschrijving wordt een deelnemer ingeschreven voor een cursus.

Mijn query werkt in mysql. Nu wil ik deze query in java zetten en de uitkomst van de query in een jtextarea printen. Mijn probleem is dat ik niet weet waar ik moet beginnen. De klassen heb ik al en ik kan gewoon gegevens registreren.

Kan iemand mij op weg helpen? Ik weet dat het niet extreem moeilijk is maar ik moet het wel een keer gezien/geleerd hebben om het te kunnen.

Misschien kan iemand hier een voorbeeld code of iets dergelijks plaatsen waarin gegevens dmv join uit verschillende tabellen gehaald worden en in een textarea geprint worden?

alvast bedankt :)
 
Eerst en vooral moet je een Driver hebben om te communiceren met je MySql database. Ik gebruik hiervoor die van MySql zelf, deze kan je hier downloaden (let wel, je moet je eerst registreren). Je haalt de mysql-connector-java-*.*.*-bin.jar uit je zip en zorgt dat die aan je programma gekoppeld wordt.

Dan kan je de Driver.class gebruiken om een connectie op te bouwen:
Code:
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

/**
 *
 * @author GAB
 */
public class SQL_Tester {

    public static void main(String[] args) {
        SQL_Tester tester = new SQL_Tester();
        tester.showSelect(tester.connect());
    }

    public Connection connect() {
        Connection connection = null;
        try {
            String driverName = "com.mysql.jdbc.Driver"; // Hier moet je zelf je Driver class uit je jar halen
            //als je de mysql-connector-java-*.*.*-bin.jar gebruikt is bovenstaande correct
            Class.forName(driverName); // hier wordt de driver gestart
            String serverName = "localhost";
            String mydatabase = "mijnDataBaseName"; 
            String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // JDBC url
            String username = "naam"; //van je mysql gebruiker 
            String password = "paswoord"; 
            connection = DriverManager.getConnection(url, username, password);
            return connection;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
            return null;
        } catch (SQLException e) {
            e.printStackTrace();
            return null;
        }

    }

    public void showSelect(Connection conn) {
        String query = "SELECT table1.columnName, table2.columnName FROM table1 INNER JOIN table2 ON table1.comparableColumn = table2.comparableColumn";
        if (conn == null) {
            System.out.println("no connection!");
        } else {
            try {
                Statement st = conn.createStatement();
                ResultSet rs = st.executeQuery(query);
                if (rs == null) {
                    System.out.println("Not able to retrieve results");
                } else {
                    int cntr = 0;
                    System.out.println("\tSTRING1\tSTRING2");
                    while (rs.next()) {
                        cntr++;
                        String string1 = rs.getString("table1.columnName");
                        String string2 = rs.getString("table2.columnName");

                        // print de resultaten...
                        System.out.format("%s\t%s\t%s\n", cntr, string1, string2);
                    }

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

        }
    }
}
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan