LHeinrich.com Blog & News

Der Blog für News und alle anderen Themen!

MySQL in Java Anwendungen

Du hast deine Anwendungsdaten immer in Dateien gespeichert?
Dann wird es endlich mal Zeit, auf ein Datenbank umzusteigen. Hier zeige ich dir, wie du MySQL in Java Anwendungen nutzt!

Achtung: Speichere die MySQL Anmeldedaten nicht direkt im Quellcode deiner öffentlichen Anwendungen, denn sonst hat jeder Zugriff auf die Datenbank!

Dann fangen wir mal an.

1. Schritt

Du musst dir die MySQL Connector (Treiber) herunterladen und als Dependency einbinden. Zum Download

Nachdem du das Archiv entpackt hast, kopierst du die mysql-connector-java-*-bin.jar an einen Ort, wo du die Datei wiederfinden kannst.

Jetzt musst du die Jar Datei nur noch als Dependency in deiner IDE hinzufügen.

Ich zeige es hier für IntelliJ:

Als erstes gehst du auf File und dann auf Project Structure. Dort wählst du Modules und dein Module aus.

In meinem Fall ist das DB und anschließend klickst du auf Dependencies und das grüne +. Dort kannst du mit „JARs or directories“ die Jar Datei auswählen.

GnG8k7L.png

2. Schritt

Erstelle dir eine Klasse, die du MySQL nennst. Kopiere dann den folgenden Quellcode hinein.

import java.sql.*;

/**
 * Copyright (c) 2017 Lennart Heinrich (www.lheinrich.com)
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
public class MySQL {

    private String host;
    private int port;
    private String database;
    private String username;
    private String password;
    private Connection connection;

    public MySQL(String host, int port, String database, String username, String password) {
        this.host = host;
        this.port = port;
        this.database = database;
        this.username = username;
        this.password = password;
    }

    public void connect() {
        try {
            connection = DriverManager.getConnection(
                    "jdbc:mysql://" + host + ":" + port + "/" + database + "?autoReconnect=true&useSSL=false", username,
                    password);
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public void disconnect() {
        try {
            connection.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }

    public boolean isConnected() {
        try {
            return connection == null || connection.isClosed() ? false : true;
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return false;
    }

    public Connection getConnection() {
        return connection;
    }

    public ResultSet doQuery(String query, Object... args) {
        try {
            PreparedStatement preparedStatement = getConnection().prepareStatement(query);
            for (int i = 1; i <= args.length; i++)
                preparedStatement.setObject(i, args[i - 1]);

            ResultSet resultSet = preparedStatement.executeQuery();

            return resultSet;
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
        return null;
    }

    public void doUpdate(String query, Object... args) {
        try {
            PreparedStatement preparedStatement = getConnection().prepareStatement(query);
            for (int i = 1; i <= args.length; i++)
                preparedStatement.setObject(i, args[i - 1]);

            preparedStatement.executeUpdate();
            preparedStatement.close();
        } catch (SQLException ex) {
            ex.printStackTrace();
        }
    }
}

3. Schritt

Jetzt musst du nur noch wissen, wie du die MySQL Klasse verwendest.

Erstelle dir dafür am besten noch eine Klasse.

Verbindung zur MySQL Datenbank herstellen:

MySQL mySQL = new MySQL("localhost", 3306, "MeineDatenbank", "MeinUser", "MeinPasswort");
mySQL.connect();

Ersetze die Variablen durch deine Anmeldedaten und eventuell einen abweichenden Host oder Port.

In der zweiten Zeile wird sich dann zum Server verbunden.

Tabelle erstellen:

mySQL.doUpdate("CREATE TABLE IF NOT EXISTS test (id BIGINT(255),uuid VARCHAR(255))");

Hier wird ein SQL Update durchgeführt und eine Tabelle mit den Spalten id (Zahl) und uuid (Text) erstellt, falls sie noch nicht existiert.

Daten einfügen:

mySQL.doUpdate("INSERT INTO test VALUES (?,?)", 1, UUID.randomUUID().toString());

Hier wird ein Update durchgeführt, wobei jedes ? nur eine nachfolgende Variable ersetzt wird. Hier: 1 und UUID.randomUUID().toString().

Daten auslesen:

ResultSet client = mySQL.doQuery("SELECT id,uuid FROM test ORDER BY id");
if (client.next()) {
  System.out.println("ID: " + client.getLong("id"));
  System.out.println("UUID: " + client.getString("uuid"));
}
client.getStatement().close();

Hier wird kein Update durchgeführt, sondern Daten ausgelesen. Variablen werden hier ebenso wie beim Daten einfügen unterstützt.

Wenn du möglicherweise mehrere Werte auslesen willst, solltest du aber eine while Schleife verwenden. Zu Testzwecken reicht auch eine einfache if Abfrage.

Dann verwenden die Werte des ResultSets ausgelesen. Anschließend wird das Statement und das ResultSet geschlossen.

Achtung: Wenn du das Statement/ResultSet nicht schließt, kann die Anwendungen durch einen OutOfMemory Fehler crashen!

Das war’s dann auch mit meinem ersten richtigen Blog Eintrag. Ich hoffe du fandest den Artikel nützlich.

Falls du fragen hast, kannst du dich gerne an mich wenden. 😉

Mit freundlichen Grüßen,

Lennart Heinrich

Nächster in Artikel

Vorheriger in Artikel

1 Kommentar

  1. Anonymous 16. September 2017

    Danke

Antworten

© 2017 LHeinrich.com Blog & News

Datenschutzerklärung | Impressum