Vorwort: Was ist JDBC
Java Database Connectivity (JDBC) ist eine in der JAVA -Sprache verwendete Anwendungsprogrammschnittstelle, um zu standardisieren, wie Clientprogramme auf Datenbanken zugreifen, und bereitzustellen Methoden wie Abfragen und Aktualisieren von Daten in der Datenbank. JDBC ist auch eine Marke von Sun Microsystems. Es ist JDBC für relationale Datenbanken.
Einfach ausgedrückt, es handelt sich um eine Java -API, die zur Ausführung von SQL -Anweisungen verwendet wird. Über JDBC können wir die Java -Programmierung direkt verwenden, um in relationalen Datenbanken zu arbeiten. Durch die Kapselung können Entwickler reine Java -APIs verwenden, um die SQL -Ausführung zu vervollständigen.
1. Vorbereitungsarbeiten (i): Konfiguration der MySQL -Installation und grundlegendes Lernen
Bevor Sie JDBC zum Betrieb einer Datenbank verwenden, müssen Sie zunächst eine Datenbank haben. Hier sind 3 Links, die Leser selbst lernen können. Wenn Sie Erfahrung mit SQL -Sprache (einschließlich Klassenzimmerlernen in der Schule) haben, sind die ersten beiden Links mehr als genug.
MySQL Download, Installation, Bereitstellung und grafische detaillierte Operation Tutorial: //www.vevb.com/article/87690.htm
Es wird empfohlen, das Einführungs -Tutorial beim Üben zu lesen, während grundlegende Vorgänge wie einfügen, aktualisieren, auswählen, löschen usw. die Tabelle erstellen, die Sie später verwenden möchten.
Die folgende Abbildung ist die Tabelle der Datenbank, die ich für die nächste Demonstration verwenden werde.
2. Vorbereitungsarbeiten (2): Laden Sie das entsprechende JAR -Paket der Datenbank herunter und importieren Sie es
Für die Verwendung von JDBC muss das entsprechende JAR -Paket im Projekt importiert werden. Die Korrespondenz zwischen der Datenbank und dem JDBC -Paket kann sich auf das JAR -Paket, den Namen der Treiberklasse und das URL -Format verweisen, das verschiedenen Datenbanken entspricht. Importmethode unter Eclipse:
Klicken Sie mit der rechten Maustaste auf das Projektsymbol, wählen Sie "Eigenschaften", wählen Sie "Externe Gläser hinzufügen ..." in "Java Bulid Path" und wählen Sie das JAR-Paket, das Sie nach dem Herunterladen und Dekomprimieren erhalten haben.
Wenn Sie auf MySQL arbeiten, meldet der folgende Import keinen Fehler:
import com.mysql.jdbc.connection; import com.mysql.jdbc.preeParedStatement;
Außerdem benötigen Sie JDBC -Pakete, importieren Sie sie einfach direkt.
importieren java.sql.drivermanager; import Java.sql.resultset; import Java.sql.sqlexception;
3. Grundlegende Operationen von JDBC
Der Einfachheit halber sind die Operationen, Befehle und Parameter im Zusammenhang mit der Datenbank festcodiert. Interessierte Leser können diese untersuchen, um die Kopplung zwischen Daten und Operationen zu verringern.
Schauen wir uns zunächst den spezifischen Code und die Praxis an. Der fünfte Teil dieses Artikels hat eine kurze Studie zur verwendeten API durchgeführt.
Alle nachstehenden Methoden und Datenmitglieder befinden sich in der öffentlichen Klasse JDBCOperation.
(1) Definieren Sie die Datensatzklasse (optional)
Dies wird hauptsächlich zur Erleichterung der Betriebs- und Schnittstellendefinition ermöglicht und ist nicht erforderlich.
statischer Klassenstudent {private String -ID; privater Zeichenfolge Name; privater String Sex; privates Stringalter; Student (String -Name, String -Sex, String -Alter) {this.id = null; // Standard this.name = name; this.sex = sex; this.age = Alter; } public String getId () {return id; } public void setID (String -ID) {this.id = id; } public String getName () {return name; } public void setName (String -Name) {this.name = name; } public String getSex () {Return Sex; } public void setsex (String sex) {this.sex = sex; } public String getage () {Return Age; } public void Setage (String Age) {this.age = Age; }}(2) Abruf der Verbindung
Die Verbindung zur Datenbank muss vor dem Betrieb erhalten werden.
private statische Verbindung getConn () {String driver = "com.mysql.jdbc.driver"; String url = "jdbc: mysql: // localhost: 3306/samp_db"; String username = "root"; String password = ""; Verbindung conn = null; try {class.Forname (Treiber); // Classloader, laden Sie den entsprechenden Treiber conn = (Verbindung) triverManager.getConnection (URL, Benutzername, Passwort); } catch (classNotFoundException e) {e.printstacktrace (); } catch (sqlexception e) {e.printstacktrace (); } return conn;}(3) Einfügen
private static int Insert (Student Student) {Verbindung conn = getConn (); int i = 0; String SQL = "In Schüler (Name, Geschlecht, Alter) Werte (?,?,?)"; PrepectStatement pstmt; try {pstmt = (preparedStatement) conn.preparestatement (SQL); pstmt.setstring (1, student.getName ()); pstmt.setstring (2, student.getSex ()); pstmt.setstring (3, student.getage ()); i = pstmt.executeUpdate (); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}(4) Update
private statische Int -Update (Student Student) {Verbindung conn = getConn (); int i = 0; String SQL = "Aktualisieren Sie die Schüler setzen Age = '" + student.getage () + "' wobei name = '" + student.getName () + "'"; PrepectStatement pstmt; try {pstmt = (preparedStatement) conn.preparestatement (SQL); i = pstmt.executeUpdate (); System.out.println ("resutl:" + i); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}(5) Wählen Sie
Nehmen Sie als Beispiel aus Select * aus XXX.
private statische Integer getAll () {Verbindung conn = getConn (); String SQL = "Select * von Schülern"; PrepectStatement pstmt; try {pstmt = (preparedStatement) conn.preparestatement (SQL); ResultSet rs = pstmt.executeQuery (); int col = rs.getmetadata (). getColumnCount (); System.out.println ("==========================="); while (rs.Next ()) {für (int i = 1; i <= col; i ++) {System.out.print (rs.getString (i)+"/t"); if ((i == 2) && (rs.getString (i) .Length () <8)) {System.out.print ("/t"); }} System.out.println (""); } System.out.println ("==========================="); } catch (sqlexception e) {e.printstacktrace (); } return null;}(6) Löschen
private static int delete (String -Name) {Verbindung conn = getConn (); int i = 0; String SQL = "Von Schülern löschen wobei Name = '" + Name + "'"; PrepectStatement pstmt; try {pstmt = (preparedStatement) conn.preparestatement (SQL); i = pstmt.executeUpdate (); System.out.println ("resutl:" + i); pstmt.close (); conn.close (); } catch (sqlexception e) {e.printstacktrace (); } return i;}4. Test
Vor dem Testen muss der entsprechende Datenbankdienst im System geöffnet werden. MySQL Start -up -Befehl unter Windows ist net start mySQL
Testcode
public static void main (String args []) {jdbcoperation.getall (); Jdbcoperation.insert (neuer Schüler ("Achilles", "männlich", "14"); Jdbcoperation.getall (); Jdbcoperation.update (neuer Student ("Bean", "", "7"); Jdbcoperation.delete ("Achilles"); Jdbcoperation.getall ();}Ausgabe in Sonnenfinsternis
============================1 Ender male 8 2 Bean male 6 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 ========================================================1 Ender male 8 2 Bean male 6 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 7 Achilles Male 14 ============================resutl: 1resutl: 1============================1 Ender male 8 2 Bean male 7 3 Petra fema 9 4 Peter male 9 5 _Graff male 40 6 GOD fema 255 ============================
V. Codeanalyse
Im obigen Prozess des Hinzufügens, Löschens, Änderns und Durchsuchens der Datenbank kann dies gemeinsam gefunden werden, dh ein gemeinsamer Prozess:
(1) Befehlszeichenfolge für das Verbindungsobjekt und SQL Query erstellen;
(2) Übergeben Sie den Befehl SQL Query an das Verbindungsobjekt und erhalten Sie das vorbereitete Objekt.
(3) executeUpdate () oder executeQurey () auf dem vorbereiteten Objekt ausführen, um das Ergebnis zu erhalten;
(4) Schließen Sie das vorbereitete Objekt und das Verbindungsobjekt nacheinander.
Es ist ersichtlich, dass bei der Verwendung von JDBC die häufigsten Kontakttypen die Verbindung und die Vorbereitung und die Ergebnisklasse in Select sind.
Verbindung
Java.sql
Verbindung
Alle Super -Schnittstellen: Wrapper
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
öffentliche Schnittstelle Connectionendends Wrapper
Verbindung (Sitzung) zu einer bestimmten Datenbank. Führen Sie SQL -Anweisungen im Verbindungskontext aus und geben Sie das Ergebnis zurück.
Die Datenbank des Verbindungsobjekts kann Informationen zur Beschreibung ihrer Tabellen, unterstützte SQL -Syntax, gespeicherte Prozeduren, dieser Verbindungsfunktion usw. angeben. Diese Informationen werden mit der GetMetadata -Methode erhalten.
PrepedStatemnt
Java.sql
Schnittstelle vorbereitet
Alle Super-Schnittstellen: Anweisung, Wrapper Alle bekannten Unterinterfassen: Callablestatement
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
öffentliche Schnittstelle Vorbereitete Erklärung
Ein Objekt, das eine vorkompilierte SQL -Anweisung darstellt.
SQL -Anweisungen werden in vorbereiteten Objekten vorkompiliert und gespeichert. Diese Anweisung kann dann mehrmals mit diesem Objekt effizient ausgeführt werden.
Gemeinsame Methoden
boolean execute ()
Führt eine SQL -Anweisung in diesem vorbereiteten Objekt aus, das jede Art von SQL -Anweisung sein kann.
ResultSet executeQuery ()
Fügt eine SQL -Abfrage in diesem vorbereiteten Objekt aus und gibt das von der Abfrage generierte Ergebnisobjekt zurück.
int executeUpdate ()
Führen Sie SQL -Anweisungen in diesem vorbereiteten Objekt aus, das eine SQL -Datenmanipulationssprache (DML) sein muss, wie z.
Ergebnisse
Java.sql
Schnittstellenergebnis
Alle Super-Schnittstellen: Wrapper Alle bekannten Unterinterfassen
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
öffentliche Schnittstelle ErgebnissetEdendends Wrapper
Eine Datentabelle, die einen Datenbankergebnissatz darstellt, wird normalerweise erzeugt, indem eine Anweisung zur Abfrage der Datenbank ausgeführt wird.
6. Denken Sie über Probleme nach
1. Für jede SQL -Operation muss die Verbindung hergestellt und geschlossen werden, wodurch zwangsläufig viel Ressourcenaufwand verbraucht wird. Wie vermeiden Sie es?
Analyse: Verbindungsbading kann verwendet werden, um eine einheitliche Wartung von Verbindungen durchzuführen, ohne dass sie jedes Mal hergestellt und geschlossen werden müssen. In der Tat werden viele Tools zur Einkapselung von JDBC verwendet.
2. Was soll ich tun, wenn sich das Format der eingehenden Daten von der Datenbankdefinition im Java -Code unterscheidet? Weisen Sie beispielsweise dem Tinyint -Attribut der Datenbank Java String -Objekt zu.
Analyse: Bei der Ausführung von SQL -Anweisungen versucht die Datenbank zu konvertieren. Nach meinem Experiment wird, wenn Sie das Altersattribut von Tinyint mit einem reinen Buchstaben mit einem String -Objekt übergeben, in 0 konvertiert. Die spezifischen Konvertierungsregeln sollten mit der Datenbank in Verbindung gebracht werden.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.