Die Java Database Connectivity ( JDBC oder ) API ist ein Satz von Standard- Klassen entwickelt, um eine einzige, einheitliche Schnittstelle für den Anschluss an alle wichtigen Datenbank- Lösungen zu bieten. Unterstützte Datenbanken für die JDBC , MySQL , Oracle , PostgreSQL, DB2 und Microsoft SQL Server. Dieser Artikel wird mit der Open-Source- Datenbank-Software , MySQL, um die JDBC Prinzipien illustrieren. Downloaden und Link zum MySQL JDBC Driver
JDBC benötigt einen Treiber für jede Art von Datenbank es sich verbinden , und die Produktion und Instandhaltung der Fahrer ist in der Verantwortung der Entwickler der Datenbank-Software . Im Fall von MySQL wird die offizielle JDBC-Treiber namens MySQL :: Connector /J , und können frei aus dem MySQL- Webseite bezogen werden. Der Fahrer wird eine JAR- Datei, und diese Datei muss im Java Classpath enthalten sein . Die meisten Java IDE wird diese automatisch verarbeiten für Sie, wenn Sie die Treiber-Datei als externe Bibliothek hinzuzufügen.
Alle Befehle für die Interaktion mit dem JDBC benötigt sollte durch den Import java.sql zur Verfügung. * An der Spitze der Klasse Datei.
Registrieren Sie den Treiber
nicht benötigt man , um eine Anmeldung an Sun senden. Dies ist zu sagen, welche Java -Datenbank-Treiber wirst du mit dem JDBC verwenden für die folgenden Abfragen. Sie registrieren die Fahrer mit dem folgenden Befehl :
Treiber d = ( Treiber ) Class.forName ( " com.mysql.jdbc.Driver " ) newInstance ();
Der Inhalt der. Name des Fahrers ( com.mysql.jdbc.Driver ) gilt nur für MySQL . Die genaue Zeichenfolge für andere Datenbank-Treiber (wie PostgresSQL ) benötigt wird anders sein.
Wenn Sie eine java.lang.ClassNotFoundException , dies wahrscheinlich bedeutet, dass Ihre Fahrer nicht auf dem Classpath erhalten .
;
Connection conn = DriverManager.getConnection ( url , Benutzername, Passwort ) :
Verbindungsaufbau
Verbindungen werden mit dem folgenden Befehl etabliert >
Wenn sich die Datenbank auf demselben Rechner wie der Java-Client zugreift , dann " localhost" wird als eine Adresse in den meisten Fällen funktionieren. Wenn die Port-Nummer für die Datenbank ist nicht die Standardeinstellung für diese Datenbank -Paket , dann kann es an die URL mit einem Doppelpunkt angehängt werden.
Eine wichtige Ergänzung ist die URL -Kennung. Dies wird für verschiedene Datenbank-Server zu ändern. Doch für MySQL, die folgende gültig wäre : String url = " jdbc : mysql ://localhost : 8080 ";
Sollte eine Verbindung aus irgendeinem Grund ausfallen , wird eine SQLException geworfen werden, und es enthält eine Fehlermeldung mit weiteren Informationen , die Sie ausdrucken zum Debuggen System.err .
Database Timeouts
Es ist wichtig, sich daran zu erinnern , dass, wie von der Erstellung der Verbindung , ein aktive Verbindung zwischen Client und Server. Allerdings haben viele Datenbanken sehr engen Zeit -out Anforderungen . Es ist wichtig , dass eine Verbindung nicht hergestellt werden, bis Abfragen bereit sind werden. Anstatt eine Verbindung und dann warten, Benutzereingaben zu wissen, was fragt zu laufen, ist es besser, einen Test -Verbindung herzustellen , trennen und dann einmal wieder Anfragen zur Verfügung.
Run Abfrage und holt Ergebnisse
Um eine Abfrage ausgeben , müssen Sie eine Anweisung mit einer aktiven Verbindung der Datenbank
Statement s = conn.createStatement (); . s.executeQuery ( "SELECT * FROM" + tableName );
Um die Ergebnisse zu erhalten , können Sie sofort starten:
ResultSet rs = s.getResultSet ();
ResultSets
< br >
eine wichtige Sache, über ResultSets wissen ist, dass sie Daten von dem Server eine Zeile zu einem Zeitpunkt, zu ziehen. Der obige Befehl nur initialisiert ein ResultSet-Objekt und ruft einige Metadaten über das Objekt (am wichtigsten Spaltennamen und-typen ) . Es ist nicht wirklich irgendwelche Daten abzurufen . Die Daten müssen aus einem ResultSet gezogen werden und in einem anderen Ort , bevor die Verbindung geschlossen wird , in der Regel mit einer Schleife auf der Suche etwas wie:
LinkedList data = new LinkedList (); while ( rs.next ()) { data.add ( rs.getString (1) ); //Rufen Sie alle Daten aus der ersten Spalte }
enge Verbindungen
die meisten der Zeit , die Fahrer übernimmt Schließen von Verbindungen sich. Doch , kann es helfen , Probleme zu vermeiden , wenn Sie später explizit immer in der Nähe Ihres ResultSet , Statement und Anschlüsse , wenn Sie mit ihnen fertig sind
rs.close (); . S.CLOSE (); conn.close ();