Die Java Developers Kit umfasst ein Paket wie die Java Database Connectivity API , JDBC oder für kurze bekannt . Dies stellt eine einzige Schnittstelle für die Interaktion mit einer Datenbank -Paket, das einen JDBC-Treiber zur Verfügung stellt. Die meisten großen Datenbank-Lösungen , darunter MySQL, einen JDBC-Treiber entweder auf ihre Installations-CDs oder kostenlos von ihrer Web- Seite . Die MySQL JDBC Driver
Der JDBC-Treiber für MySQL heißt MySQL :: Connector /J , und es ist eine sehr gründliche Umsetzung der JDBC -API. Der Fahrer wird eine JAR -Datei, die auf der Java- classpath angeordnet werden müssen. Die häufigste Java IDE , Eclipse und Netbeans besonders , wird dies für Sie zu tun , vorausgesetzt, Sie verweisen die Treiber-Datei als Bibliothek. Darüber hinaus , um Befehle von JDBC-API zu verwenden, müssen Sie den folgenden Befehl an der Spitze jeder Klasse , die direkt verwenden die JDBC einfügen
import java.sql * ; . .
Setup-
Während die JDBC Versuche, mit Hilfe von Datenbanken in Ihre Java-Programme so einfach wie möglich , gibt es eine Reihe von Schritten zu folgen, um die Einrichtung einer Datenbank -Verbindung. Da es möglich ist, ein Programm, das mehrere Datenbank- Treiber enthält schreiben, bevor eine Verbindung zu einer Datenbank müssen Sie informieren die API von denen Treiber, den Sie verwenden werden . Dazu führen Sie die folgenden Schritte aus: .
Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ();
Dies wird eine Instanz der Klasse zurückgeben Treiber (die wird in java.sql im Lieferumfang enthalten) , und Sie können den Verweis auf diese Instanz für die spätere Verwendung speichern , wenn Sie mögen . Allerdings ist es in den meisten Fällen nicht erforderlich. Sollten Sie eine Fehlermeldung erhalten , dies wahrscheinlich bedeutet, dass Ihre Klasse Pfad nicht richtig konfiguriert.
Erstellen einer Verbindung
Die Verbindung zur Datenbank hergestellt werden müssen mit eine URL oder eine IP-Adresse . Wenn die Datenbank auf demselben Rechner wie der Java-Programm ausgeführt wird, ist dies relativ einfach : Die URL ist localhost , mit einem signifikanten hinaus : das Protokoll (oder URL) Kennung . Eine vertraute man für das Web ist "http://" . Für eine MySQL JDBC-Datenbank ist die richtige Protokoll-Kennung " jdbc : mysql ://"
Connection conn = DriverManager.getConnection ( " jdbc : mysql ://localhost " , Benutzername, Passwort ) .
Umgang mit Fehlern
Jeder Fehler über eine Verbindung , eine Anweisung oder ein Ergebnis -Set des SQLException Typ sein. Für weitere Einzelheiten über den genauen Fehler , sollten Sie fangen SQLException und drucken seine Fehlermeldung an die Konsole. Eine mögliche Quelle der Verwirrung ist die Geschwindigkeit , mit der Verbindungen Auszeit . Es ist genügend Zeit, um zu verbinden, laufen ein paar Fragen und Ergebnisse zu erzielen , aber mit ziemlicher Sicherheit keine Zeit für Benutzereingaben , nachdem eine Verbindung warten. Wenn Sie auf Benutzereingaben warten muss , ist es in der Regel eine bessere Praxis zu trennen , rufen Benutzereingaben und dann wieder einschalten , um die Abfragen ausgeführt werden.
Abfragen und Ergebnisse
Es gibt zwei wichtige Klassen für die Interaktion mit der Datenbank verbunden , wenn : die Erklärung und das ResultSet
Statement s = conn.createStatement (); s.executeQuery ( "SELECT * FROM Mitarbeiter "); ResultSet rs = s . . getResultSet ();
Statement sendet einfach die SQL-Zeichenfolge in der Datenbank , so Abfragen müssen in der nativen SQL-Dialekt der verwendeten Datenbank geschrieben werden. Ein wichtiges Qualitätsmerkmal eines ResultSet ist, dass es Daten von dem Server eine Zeile ruft zu einer Zeit , und ruft nur die Daten, wenn die Zeile für wird gebeten . Der obige Code hat keine Ergebnisse noch vom Server heruntergeladen .
Da es unmöglich ist auf den meisten Systemen , um die Größe eines Ergebnisses gesetzt , bevor alle die Ergebnisse abgerufen wurden wissen, ist es am besten , um ein Ergebnis -Set speichern , zumindest vorübergehend , in einer Datenstruktur , die effizient geändert werden kann . Java -Klasse LinkedList ist perfekt für diese
LinkedList Ergebnisse = new LinkedList (); . While ( rs.next ()) { results.add ( rs.getString ( " firstName ")); }
< p> Und es ist immer eine gute Übung , um Verbindungen explizit schließen anstatt lassen sie Timeout :
rs.close (); S.CLOSE (); conn.close ();