import java.sql.*; /** *
* Materialien zu den zentralen NRW-Abiturpruefungen im Fach Informatik ab 2018 *
** Klasse DatabaseConnector *
** Ein Objekt der Klasse DatabaseConnector ermoeglicht die Abfrage und Manipulation * einer MySQL-Datenbank. * Beim Erzeugen des Objekts wird eine Datenbankverbindung aufgebaut, so dass * anschließend SQL-Anweisungen an diese Datenbank gerichtet werden koennen. *
* * @author Qualitaets- und UnterstuetzungsAgentur - Landesinstitut fuer Schule * @version 2016-01-24 */ public class DatabaseConnectorMySQL{ private java.sql.Connection connection; private QueryResult currentQueryResult = null; private String message = null; /** * Ein Objekt vom Typ DatabaseConnector wird erstellt, und eine Verbindung zur Datenbank * wird aufgebaut. Mit den Parametern pIP und pPort werden die IP-Adresse und die * Port-Nummer uebergeben, unter denen die Datenbank mit Namen pDatabase zu erreichen ist. * Mit den Parametern pUsername und pPassword werden Benutzername und Passwort fuer die * Datenbank uebergeben. */ public DatabaseConnectorMySQL(String pIP, int pPort, String pDatabase, String pUsername, String pPassword){ try { //Laden der Treiberklasse Class.forName("com.mysql.jdbc.Driver"); //Verbindung herstellen connection = DriverManager.getConnection("jdbc:mysql://"+pIP+":"+pPort+"/"+pDatabase, pUsername, pPassword); } catch (Exception e) { message = e.getMessage(); } } /** * Der Auftrag schickt den im Parameter pSQLStatement enthaltenen SQL-Befehl an die * Datenbank ab. * Handelt es sich bei pSQLStatement um einen SQL-Befehl, der eine Ergebnismenge * liefert, so kann dieses Ergebnis anschließend mit der Methode getCurrentQueryResult * abgerufen werden. */ public void executeStatement(String pSQLStatement){ //Altes Ergebnis loeschen currentQueryResult = null; message = null; try { //Neues Statement erstellen Statement statement = connection.createStatement(); //SQL Anweisung an die DB schicken. if (statement.execute(pSQLStatement)) { //Fall 1: Es gibt ein Ergebnis //Resultset auslesen ResultSet resultset = statement.getResultSet(); //Spaltenanzahl ermitteln int columnCount = resultset.getMetaData().getColumnCount(); //Spaltennamen und Spaltentypen in Felder uebertragen String[] resultColumnNames = new String[columnCount]; String[] resultColumnTypes = new String[columnCount]; for (int i = 0; i < columnCount; i++){ resultColumnNames[i] = resultset.getMetaData().getColumnLabel(i+1); resultColumnTypes[i] = resultset.getMetaData().getColumnTypeName(i+1); } //Queue fuer die Zeilen der Ergebnistabelle erstellen Queue