Wie stellen Sie eine Verbindung zu einer MySQL-Datenbank in Java her?
Wenn ich es versuche, bekomme ich
java.sql.SQLException: No suitable driver found for jdbc:mysql://database/table
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
Oder
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
Oder
java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver
Antworten:
DriverManager
ist eine ziemlich alte Art, Dinge zu tun. Der bessere Weg ist, einen zu erhaltenDataSource
, indem Sie entweder einen nachschlagen, den Ihr App-Server-Container bereits für Sie konfiguriert hat:oder einen von Ihrem Datenbanktreiber direkt instanziieren und konfigurieren:
und erhalten Sie dann Verbindungen von ihm, wie oben:
quelle
com.mysql.jdbc.Driver
? ist diese Methode besser?MysqlDataSource
implementiert,javax.sql.DataSource
welches der neuere Mechanismus ist.rs
undstmt
? Warum nicht einfachconn
?Hier finden Sie eine schrittweise Erklärung zur Installation von MySQL und JDBC und zur Verwendung:
Laden Sie den MySQL-Server herunter und installieren Sie ihn . Mach es einfach wie gewohnt. Merken Sie sich die Portnummer, wenn Sie sie geändert haben. Es ist standardmäßig
3306
.Laden Sie den JDBC-Treiber herunter und geben Sie den Klassenpfad ein , extrahieren Sie die ZIP-Datei und fügen Sie die enthaltene JAR-Datei in den Klassenpfad ein. Der herstellerspezifische JDBC-Treiber ist eine konkrete Implementierung der JDBC-API ( Tutorial hier ).
Wenn Sie eine IDE wie Eclipse oder Netbeans verwenden, können Sie sie dem Klassenpfad hinzufügen, indem Sie die JAR-Datei als Bibliothek zum Erstellungspfad in den Projekteigenschaften hinzufügen .
Wenn Sie es "Plain Vanilla" in der Befehlskonsole tun, müssen Sie den Pfad zur JAR-Datei im Argument
-cp
oder angeben,-classpath
wenn Sie Ihre Java-Anwendung ausführen.Das
.
ist nur da, um das aktuelle Verzeichnis zum Klassenpfad hinzuzufügen, damit es es finden kann,com.example.YourClass
und das;
ist das Klassenpfadtrennzeichen, wie es in Windows ist. Unter Unix:
sollten Klone verwendet werden.Erstellen Sie eine Datenbank in MySQL . Lassen Sie uns eine Datenbank erstellen
javabase
. Sie möchten natürlich die Weltherrschaft, also verwenden wir auch UTF-8.Erstellen Sie einen Benutzer für Java und gewähren Sie ihm Zugriff . Einfach weil das Verwenden
root
eine schlechte Praxis ist.Ja,
java
ist der Benutzername undpassword
ist das Passwort hier.Bestimmen Sie die JDBC-URL . Um die MySQL-Datenbank mit Java zu verbinden, benötigen Sie eine JDBC-URL mit der folgenden Syntax:
hostname
: Der Hostname, auf dem der MySQL-Server installiert ist. Wenn es auf demselben Computer installiert ist, auf dem Sie den Java-Code ausführen, können Sie ihn einfach verwendenlocalhost
. Es kann auch eine IP-Adresse wie sein127.0.0.1
. Wenn Sie auf Verbindungsprobleme stoßen und diese verwenden,127.0.0.1
anstatt sie zulocalhost
lösen, liegt ein Problem in Ihrer Netzwerk- / DNS- / Hosts-Konfiguration vor.port
: Der TCP / IP-Port, an dem der MySQL-Server lauscht. Dies ist standardmäßig3306
.databasename
: Der Name der Datenbank, zu der Sie eine Verbindung herstellen möchten. Das istjavabase
.Die endgültige URL sollte also folgendermaßen aussehen:
Testen Sie die Verbindung zu MySQL mit Java . Erstellen Sie eine einfache Java-Klasse mit einer
main()
Methode zum Testen der Verbindung.Wenn Sie eine erhalten
SQLException: No suitable driver
, bedeutet dies, dass entweder der JDBC-Treiber überhaupt nicht automatisch geladen wurde oder dass die JDBC-URL falsch ist (dh von keinem der geladenen Treiber erkannt wurde). Normalerweise sollte ein JDBC 4.0-Treiber automatisch geladen werden, wenn Sie ihn einfach im Laufzeitklassenpfad ablegen. Um das eine oder andere auszuschließen, können Sie es jederzeit wie folgt manuell laden:Beachten Sie, dass der
newInstance()
Anruf hier nicht benötigt wird. Es ist nur um den alten und fehlerhaften zu reparierenorg.gjt.mm.mysql.Driver
. Erklärung hier . Wenn diese Zeile ausgelöst wirdClassNotFoundException
, wird die JAR-Datei mit der JDBC-Treiberklasse einfach nicht in den Klassenpfad eingefügt.Beachten Sie, dass Sie den Treiber nicht jedes Mal laden müssen, bevor Sie eine Verbindung herstellen. Nur einmal während des Anwendungsstarts reicht aus.
Wenn Sie ein
SQLException: Connection refused
oderConnection timed out
oder ein MySQL-spezifisches erhaltenCommunicationsException: Communications link failure
, bedeutet dies, dass die Datenbank überhaupt nicht erreichbar ist. Dies kann eine oder mehrere der folgenden Ursachen haben:Befolgen Sie die folgenden Hinweise, um das eine oder andere Problem zu lösen:
ping
.my.cnf
MySQL DB.--skip-networking option
.finally
.Beachten Sie, dass das Schließen
Connection
ist extrem wichtig. Wenn Sie keine Verbindungen schließen und in kurzer Zeit immer wieder viele davon erhalten, gehen der Datenbank möglicherweise die Verbindungen aus und Ihre Anwendung kann unterbrochen werden. Erwerben Sie das immerConnection
in einertry-with-resources
Erklärung . Wenn Sie noch nicht mit Java 7 arbeiten, schließen Sie es explizit infinally
einemtry-finally
Block. Das Schließenfinally
dient nur dazu, sicherzustellen, dass es im Falle einer Ausnahme auch geschlossen wird. Dies gilt auch fürStatement
,PreparedStatement
undResultSet
.Das war es, was die Konnektivität betrifft. Sie können finden hier eine erweiterte Tutorial , wie zu laden und zu speichern fullworthy Java Modell - Objekte in einer Datenbank mit Hilfe einer grundlegenden DAO - Klasse.
Die Verwendung eines Singleton-Musters für die DB-Verbindung ist ein schlechter Ansatz. Siehe unter anderem: http://stackoverflow.com/q/9428573/ . Dies ist ein Starterfehler Nr. 1.
quelle
Datenbankkonstanten initialisieren
Erstellen Sie einen Benutzernamen, ein Kennwort, eine URL und Treiber für die Datenbank mit konstanten Eigenschaften, ein Abruflimit usw.
Verbindung und Eigenschaften initialisieren
Sobald die Verbindung hergestellt ist, ist es besser, sie für Wiederverwendungszwecke zu speichern.
Eigenschaften erstellen
Das Eigenschaftenobjekt enthält die Verbindungsinformationen. Überprüfen Sie, ob diese bereits festgelegt sind.
Verbinden Sie die Datenbank
Stellen Sie nun mithilfe der initialisierten Konstanten und Eigenschaften eine Verbindung zur Datenbank her.
Trennen Sie die Datenbank
Wenn Sie mit den Datenbankoperationen fertig sind, schließen Sie einfach die Verbindung.
Alles zusammen
Verwenden Sie diese Klasse
MysqlConnect
direkt nach dem Ändern von Datenbankname, Benutzername und Kennwort usw.Wie benutzt man?
Initialisieren Sie die Datenbankklasse.
Irgendwo anders in Ihrem Code ...
Das ist alles :) Wenn etwas zu verbessern, bearbeiten Sie es! Hoffe das ist hilfreich.
quelle
com.mysql.jdbc.Driver
diesemjdbc:mysql://localhost:3306/stocks
sollte als die ehemaligen verwendet werden veraltet.quelle
Hier ist das Minimum, das Sie benötigen, um Daten aus einer MySQL-Datenbank abzurufen:
Fügen Sie nach Belieben Ausnahmebehandlung, Konfiguration usw. hinzu.
quelle
Class.forName(...).newInstance()
?MySQL JDBC-Verbindung mit useSSL.
quelle
Sie müssen MySQL Connector Jar in Ihrem Klassenpfad haben.
in Java JDBC API macht alles mit Datenbanken. Mit JDBC können wir Java-Anwendungen schreiben, um
1. Abfragen zu senden oder SQL an die DB (eine beliebige relationale Datenbank) zu aktualisieren. 2. Die Ergebnisse aus der DB abzurufen und zu verarbeiten
Mit den folgenden drei Schritten können wir Daten aus jeder Datenbank abrufen
quelle
Kurz- und Süßcode.
Für SQL Server 2012
quelle
Connection
Ich habe es vor einiger Zeit benutzt, es sah nach dem einfachsten Weg aus, aber es gab auch Empfehlungen,if
genau dort eine Aussage zu machenOder so ähnlich :)
Wahrscheinlich gibt es einen Fall, während zurückkehren
getConnection
kannnull
:)quelle
Hier können Sie alle Schritte zum Verbinden der MySQL-Datenbank über eine Java-Anwendung anzeigen . Bei anderen Datenbanken müssen Sie den Treiber nur im ersten Schritt ändern. Bitte stellen Sie sicher, dass Sie den richtigen Pfad zur Datenbank angeben und den Benutzernamen und das Passwort korrigieren.
Besuchen Sie http://apekshit.com/t/51/Steps-to-connect-Database-using-JAVA
quelle
Methode 1: Setzen Sie die Variable CLASSPATH.
Im obigen Befehl habe ich CLASSPATH auf den aktuellen Ordner und die Datei mysql-connector-java-VERSION.jar gesetzt. Wenn der
java MyClassFile
Befehl ausgeführt wird, versucht der Java Application Launcher, die gesamte Java-Klasse in CLASSPATH zu laden. Und es stellte sich heraus, dass dieDrive
Klasse => BOOM-Fehler verschwunden waren.Methode 2:
Hinweis: Class.forName ("com.mysql.jdbc.Driver"); Dies ist in diesem Moment 2019 Apr veraltet.
Hoffe das kann jemandem helfen!
quelle
MySql JDBC-Verbindung:
quelle
Laden Sie den JDBC-Treiber herunter
Download-Link (Plattformunabhängig auswählen): https://dev.mysql.com/downloads/connector/j/
Verschieben Sie den JDBC-Treiber auf das Laufwerk C.
Entpacken Sie die Dateien und wechseln Sie zu Laufwerk C: \. Ihr Fahrerpfad sollte so sein
C:\mysql-connector-java-8.0.19\mysql-connector-java-8.0.19
Führen Sie Ihr Java aus
testMySQL.java
quelle
Funktionscode
quelle