HOWTO · MySQL
So stellen Sie mit JDBC eine Verbindung zu einer MySQL-Datenbank her
Erstellen Sie eine MySQL-JDBC-Verbindungs-URL und verwenden Sie Java mit MySQL Connector/J, um eine Verbindung herzustellen, die Verbindung zu überprüfen und Ressourcen zu schließen.
Auf dieser Seite
Eine MySQL-JDBC-Verbindungs-URL hat die Form jdbc:mysql://host:port/database. Übergeben Sie in Java diese URL, den Datenbank-Benutzernamen und das Passwort getrennt an DriverManager.getConnection. JDBC ist die Java-API, mit der eine Anwendung über einen Treiber mit einer Datenbank arbeitet.
Anforderungen für JDBC- und MySQL-Verbindungen
Sie benötigen ein Java Development Kit (JDK), einen MySQL-Server, der Verbindungen von Ihrer Anwendung akzeptiert, und MySQL Connector/J. Connector/J ist der Treiber, der die JDBC-Unterstützung für MySQL implementiert. Fügen Sie seine Abhängigkeit zu Ihrem Build-Tool hinzu oder fügen Sie die Connector/J-JAR zum Klassenpfad der Anwendung hinzu. Die genaue Version der Abhängigkeit hängt vom Projekt und seinen unterstützten Java- und MySQL-Versionen ab; dieses Beispiel setzt keine bestimmte Version voraus.
Eine IDE kann Ihnen beim Schreiben und Ausführen von Java helfen, ist aber optional. Kopieren Sie den Treiber nicht in ein JRE-Erweiterungsverzeichnis: Konfigurieren Sie ihn als Anwendungsabhängigkeit, damit Build und Laufzeit denselben Treiber verwenden. Konsultieren Sie beim Auswählen und Hinzufügen des Treibers die Connector/J-Dokumentation oder die Abhängigkeitskonfiguration Ihres Build-Tools.
Die MySQL-JDBC-Verbindungs-URL erstellen
Die URL beginnt mit dem exakten Präfix jdbc:mysql://, gefolgt vom Host des MySQL-Servers, dem Port und dem Datenbanknamen. Für einen lokalen Server mit dem Standard-MySQL-Port und einer Datenbank namens new lautet die URL jdbc:mysql://localhost:3306/new.
Ersetzen Sie localhost durch den Servernamen oder die Serveradresse, wenn MySQL anderswo läuft. Der übliche MySQL-Port ist 3306, verwenden Sie jedoch den für Ihren Server konfigurierten Port. Ersetzen Sie new durch die Datenbank, auf die Sie zugreifen möchten. Die Datenbank muss existieren, und das MySQL-Konto muss die Berechtigung haben, sich mit ihr zu verbinden. URL-Optionen können nach ? angehängt werden, wenn eine Verbindung zusätzliche Connector/J-Einstellungen benötigt; verwenden Sie die Optionen, die von der in Ihrem Projekt verwendeten Connector/J-Version unterstützt werden.
Die URL identifiziert den Server und die Datenbank; sie enthält in diesem Beispiel nicht die Kontoanmeldedaten. Halten Sie Benutzername und Passwort getrennt und übergeben Sie sie als Argumente an DriverManager.getConnection. Laden Sie Anmeldedaten in einer Anwendung aus einer Konfiguration oder einem Secret Store, anstatt Passwörter in die Versionsverwaltung zu übernehmen.
Mit Java eine Verbindung zu MySQL herstellen
Das folgende vollständige Programm liest die URL und die Anmeldedaten aus Umgebungsvariablen, lädt den angegebenen Treiberklassennamen, öffnet eine Verbindung und führt SELECT 1 aus. Setzen Sie MYSQL_URL, MYSQL_USER und MYSQL_PASSWORD, bevor Sie es ausführen. MYSQL_URL sollte die URL für Ihren Server und Ihre Datenbank enthalten, etwa jdbc:mysql://localhost:3306/new. Fügen Sie MySQL Connector/J zum Laufzeit-Klassenpfad hinzu und stellen Sie sicher, dass der Server erreichbar ist. Dieses servicegestützte Beispiel wurde hier nicht gegen eine konfigurierte MySQL-Instanz verifiziert, daher wird kein Verbindungsergebnis gezeigt.
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class MySQLJDBC {
public static void main(String[] args) {
String url = System.getenv("MYSQL_URL");
String username = System.getenv("MYSQL_USER");
String password = System.getenv("MYSQL_PASSWORD");
if (url == null || url.isBlank() || username == null || username.isBlank()
|| password == null || password.isBlank()) {
System.out.println("Set MYSQL_URL, MYSQL_USER, and MYSQL_PASSWORD before connecting.");
return;
}
try {
Class.forName("com.mysql.cj.jdbc.Driver");
try (Connection connection = DriverManager.getConnection(url, username, password);
Statement statement = connection.createStatement();
ResultSet result = statement.executeQuery("SELECT 1")) {
if (result.next()) {
System.out.println("Connected; SELECT 1 returned " + result.getInt(1) + ".");
}
}
} catch (ClassNotFoundException | SQLException error) {
System.out.println("Connection failed (" + error.getClass().getSimpleName() + ").");
}
}
}
Class.forName("com.mysql.cj.jdbc.Driver") benennt die in diesem Beispiel verwendete Treiberklasse; stellen Sie sicher, dass die konfigurierte Connector/J-Abhängigkeit sie bereitstellt. DriverManager.getConnection akzeptiert URL, Benutzername und Passwort als getrennte Argumente. Die try-with-resources-Anweisung schließt Result Set, Statement und Verbindung, wenn die Ausführung den Block verlässt, auch wenn eine Abfrage einen Fehler meldet. Die Meldung gibt nur den Ausnahmetyp an und lässt Verbindungsdetails und Anmeldedaten aus.
Die Verbindung überprüfen und schließen
Wenn eine Verbindung erfolgreich ist, liest das Programm die erste von SELECT 1 zurückgegebene Spalte und schreibt eine Bestätigung, die diesen Wert enthält. Diese Prüfung zeigt, dass die Anwendung eine Verbindung erhalten und eine Abfrage ausgeführt hat. Wenn der Treiber nicht geladen werden kann oder der Server die Verbindung ablehnt oder nicht empfangen kann, meldet das Programm den Ausnahmetyp, ohne die Ausnahmemeldung auszugeben, die Verbindungsdetails enthalten könnte.
Prüfen Sie, ob der Server läuft und unter dem in MYSQL_URL angegebenen Host und Port erreichbar ist, ob die benannte Datenbank existiert und ob das Konto die erforderlichen Berechtigungen hat. Bestätigen Sie außerdem, dass Connector/J auf dem Laufzeit-Klassenpfad der Anwendung enthalten ist. Eine erfolgreiche Verbindung und Abfrage erfordern alle drei Umgebungsvariablen, eine Connector/J-Abhängigkeit und einen erreichbaren MySQL-Server. Wenn eine Konfiguration fehlt oder der Treiber oder die Verbindung fehlschlägt, gibt das Programm eine Meldung aus und kehrt zurück, ohne einen von null verschiedenen Exit-Status zu setzen; diese Pfade zeigen keine erfolgreiche Abfrage.
Um die Verbindung anzupassen, setzen Sie URL und Anmeldedaten für die Zielumgebung und behalten Sie dann die Abfrage bei oder ersetzen Sie sie durch die Datenbankoperation, die Ihre Anwendung benötigt. Die URL ist die JDBC-MySQL-Verbindungszeichenfolge, während DriverManager.getConnection sie mit den Kontoanmeldedaten kombiniert, um die Verbindung zu erstellen. Das Beispiel verwendet try-with-resources, damit JDBC-Ressourcen nach Abschluss der Prüfung geschlossen werden.