Sobald eine Verbindung hergestellt ist, können wir mit der Datenbank interagieren. Methoden und Eigenschaften, die in der JDBC -Anweisung definiert sind, ermöglichen die Sende von SQL- oder PL/SQL -Befehlen und Empfangen von Daten aus der Datenbank.
Sie definieren auch Methoden, die dazu beitragen, Datenunterschiede zwischen Java und Datenbanken mithilfe von SQL -Datentypen umzuwandeln.
Die folgende Tabelle bietet einen Überblick darüber, wie jede Schnittstelle versteht, welche Schnittstelle verwendet werden soll
Anweisungsobjekt:
Erstellen Sie ein Anweisungsobjekt
Wenn Sie das Anweisungsobjekt verwenden können, um SQL -Anweisungen auszuführen, müssen Sie die Methode CreateState () des Verbindungsobjekts verwenden, um eine zu erstellen, wie im folgenden Beispiel gezeigt:
Anweisung stmt = null; try {stmt = conn.CreateStatement (); . . .} catch (sqlexception e) {. . .} Endlich { . . .}Sobald ein Anweisungsobjekt erstellt wurde, kann es verwendet werden, um SQL -Anweisungen mit einer der drei Ausführungsmethoden auszuführen.
Boolean Execute (String SQL): Gibt den booleschen Wert true zurück, wenn das Ergebnis -Set -Objekt abgerufen werden kann, ansonsten false zurückgibt. Verwenden Sie diese Methode, um SQL DDL -Anweisungen auszuführen, oder wenn Sie real dynamische SQL verwenden.
Int ExecuteUpdate (String SQL): Gibt die Anzahl der Zeilen zurück, die von der betroffenen SQL -Anweisung ausgeführt werden. Verwenden Sie diese Methode, um einige betroffene Zeilen von SQL -Anweisungen auszuführen, z. B. Anweisungen einfügen, aktualisieren oder löschen.
ResultSet ExecuteQuery (String SQL): Gibt das Ergebnis -Set -Objekt zurück. Verwenden Sie diese Methode, wenn Sie ein Ergebnissatz abrufen möchten, genau wie die Verwendung einer Auswahlanweisung.
Schließen Sie das Anweisungsobjekt:
Genau wie das Schließen eines Verbindungsobjekts für eine Datenbankressource sollte das Anweisungsobjekt aus demselben Grund geschlossen werden.
Ein einfacher Anruf bei der Close () -Methode erledigt den Job. Wenn das Verbindungsobjekt zuerst geschlossen ist, schließt es auch das Anweisungsobjekt. Das Anweisungsobjekt sollte jedoch immer explizit geschlossen sein, um eine ordnungsgemäße Freigabe zu gewährleisten.
Anweisung stmt = null; try {stmt = conn.CreateStatement (); . . .} catch (sqlexception e) {. . .} endlich {stmt.close ();}
Vorbereitungsobjekt
Die vorbereitete Schnittstelle erweitert die Anweisungsschnittstelle, sodass mehrere erweiterte Funktionen zu einem gemeinsamen Anweisungsobjekt hinzugefügt werden können.
Die Anweisung bietet Flexibilität für dynamische Parameter.
Erstellen Sie ein vorbereitendes Objekt:
PrepectStatement pstmt = null; try {string sql = "Mitarbeiter aktualisieren, setze Age =? WO ID =?"; pstmt = conn.preparestatement (SQL); . . .} catch (sqlexception e) {. . .} Endlich { . . .}Alle Parameter in JDBC sind dargestellt? Symbol, ein bekanntes Parametermarker. Vor der Ausführung der SQL -Anweisung muss jeder Parameter des Wertes bereitgestellt werden.
Die setxxx () -Methode bindet den Wert an einen Parameter, wobei XXX den Java -Datentyp darstellt, den Sie an den Eingabeparameterwert binden möchten. Wenn Sie vergessen, den Wert zu liefern, erhalten Sie eine SQLEXception.
Jedes Parameter -Tag wird durch seine Sequenznummernposition referenziert. Die erste Marke zeigt Position 1 an, die nächste Position ist 2 und so weiter. Diese Methode unterscheidet sich von der Java -Array -Indexierung, beginnend mit 0.
Alle Anweisungsobjekte Methoden zur Interaktion mit der Datenbank (a) execute (), (b) executeQuery () und (c) executeUpdate () arbeiten auch mit vorbereiteten Objekten. Die Methode wird jedoch so geändert, dass SQL -Anweisungen verwendet werden, die die Eingabeparameter verwenden können.
Schließen Sie das vorbereitete Objekt:
So wie ein Anweisungsobjekt aus dem gleichen Grund das Abschluss des Vorbereitungsstatements geschlossen wird, sollte auch das vorbereitete Objekt geschlossen werden.
Ein einfacher Anruf bei der Close () -Methode erledigt den Job. Wenn das Verbindungsobjekt geschlossen ist, schließt es zunächst das vorbereitete Objekt. Das vorbereitete Objekt sollte jedoch immer explizit geschlossen sein, um eine korrekte Freigabe zu gewährleisten.
PrepectStatement pstmt = null; try {string sql = "Mitarbeiter aktualisieren, setze Age =? WO ID =?"; pstmt = conn.preparestatement (SQL); . . .} catch (sqlexception e) {. . .} endlich {pstmt.close ();} Vorbereitete Instanz
Hier finden Sie Beispiele dafür, dass diese vorbereitete Angaben und Aussagen ein- und ausgeschaltet werden:
Kopieren Sie das folgende Beispiel jdbcexample.java, kompilieren und rennen Sie wie unten gezeigt:
// Schritt 1. Importieren der erforderlichen Paketesimport Java.sql. statische endgültige Zeichenfolge db_url = "jdbc: mysql: // localhost/emp"; // Datenbankanmeldeinformationen static Final String user = "Benutzername"; statische endgültige String -Pass = "Passwort"; public static void main (String [] args) {Verbindung conn = null; PrepedStatement STMT = NULL; try {// Schritt 2: Registrieren Sie die JDBC -Treiberklasse.Forname ("com.mysql.jdbc.driver"); // Schritt 3: Öffnen Sie ein Verbindungssystem.out.println ("Verbindung zu Datenbank herstellen ..."); conn = driverManager.getConnection (db_url, Benutzer, Pass); // Schritt 4: Führen Sie ein Query -System aus. String SQL = "Aktualisieren der Mitarbeiter setzen Sie Alter =? WO ID =?"; STMT = Conn.Preparestatement (SQL); // Werte in die Parameter binden. stmt.setint (1, 35); // Dies würde das Alter stmt.setint (2, 102) festlegen; // Dies würde ID festlegen // Lassen Sie uns das Alter des Datensatzes mit ID = 102 aktualisieren. int rows = stmt.executeUpdate (); System.out.println ("Zeilen betroffen:" + Zeilen); // Lassen Sie uns alle Datensätze auswählen und anzeigen. SQL = "ID, zuerst, zuletzt, Alter von Mitarbeitern auswählen"; ResultSet rs = stmt.executeQuery (SQL); // Schritt 5: Daten aus der Ergebnismenge extrahieren (rs.Next ()) {// nach Spaltenname int id = rs.getint ("id"); int age = rs.getInt ("Alter"); String first = rs.getString ("First"); String last = rs.getString ("last"); // Werte system.out.print ("id:" + id); System.out.print (", Alter:" + Alter); System.out.print (", zuerst:" + zuerst); System.out.println (", last:" + last); } // Schritt 6: Reinigungsumgebung rs.close (); stmt.close (); conn.close (); } catch (sqlexception se) {// Fehler für JDBC SE.printstacktrace () verwandeln; } catch (Ausnahme e) {// Fehler für class.Forname e.printstacktrace (); } endlich {// Block Block Block, um Ressourcen zu schließen, versuche {if (stmt! = null) stmt.close (); } catch (sqlexception se2) {} // nichts, was wir versuchen können {if (conn! = null) conn.close (); } catch (sqlexception se) {se.printstacktrace (); } // End endlich try} // Ende try system.out.println ("Auf Wiedersehen!"); } // Ende Main} // End JDBCExampleKompilieren wir nun das obige Beispiel wie folgt:
C:> Javac jdbcexample.java
Beim Ausführen von JDBCExample wird die folgenden Ergebnisse erzielt:
C:> Java Jdbcexample
Verbindung zu Datenbank ... Erstellen von Anweisungen ... Zeilen betroffen: 1ID: 100, Alter: 18, zuerst: Zara, zuletzt: Aliid: 101, Alter: 25, zuerst: Mahnaz, zuletzt: Fatmaid: 102, Alter: 35, zuerst: Zaid, zuletzt: Khanid: 103, Alter: 30, zuerst: sumit, letzt