Vor Herstellen einer JDBC-Verbindung in Java (das Frontend, also Ihr Java-Programm, und das Backend, also die Datenbank) sollten wir lernen, was genau ein JDBC ist und warum er entstanden ist. Lassen Sie uns nun besprechen, wofür genau JDBC steht, und wir werden es anhand realer Darstellungen einfacher machen, damit es funktioniert.
Was ist JDBC?
JDBC ist ein Akronym für Java Database Connectivity. Es handelt sich um eine Weiterentwicklung von ODBC (Open Database Connectivity). JDBC ist eine Standard-API-Spezifikation, die entwickelt wurde, um Daten vom Front-End zum Backend zu verschieben. Diese API besteht aus in Java geschriebenen Klassen und Schnittstellen. Es fungiert im Wesentlichen als Schnittstelle (nicht die, die wir in Java verwenden) oder Kanal zwischen Ihrem Java-Programm und Datenbanken, d. h. es stellt eine Verbindung zwischen beiden her, sodass ein Programmierer Daten aus Java-Code senden und diese für die zukünftige Verwendung in der Datenbank speichern kann .
Illustration: Funktionsweise von JDBC in Verbindung mit Echtzeit
Warum gibt es JDBC?
Wie bereits erwähnt, ist JDBC eine Weiterentwicklung von ODBC. Die Plattformabhängigkeit von ODBC hatte jedoch viele Nachteile. Die ODBC-API wurde in C, C++, Python und Core Java geschrieben und wie wir oben wissen, sind Sprachen (außer Java und einige Teile von Python) plattformabhängig. Um die Abhängigkeit zu beseitigen, wurde JDBC von einem Datenbankanbieter entwickelt, der aus in Java geschriebenen Klassen und Schnittstellen bestand.
Schritte zum Verbinden einer Java-Anwendung mit einer Datenbank
Im Folgenden finden Sie die Schritte, die erklären, wie Sie in Java eine Verbindung zur Datenbank herstellen:
Schritt 1 – Importieren Sie die Pakete
Schritt 2 – Laden Sie die Treiber mit forName()-Methode
Schritt 3 – Registrieren Sie die Fahrer mit DriverManager
Schritt 4 – Stellen Sie eine Verbindung her unter Verwendung des Connection-Klassenobjekts
Schritt 5 – Erstellen Sie eine Erklärung
Schritt 6 – Führen Sie die Abfrage aus
Schritt 7 – Schließen Sie die Verbindungen
Java-Datenbankkonnektivität
Lassen Sie uns diese Schritte vor der Implementierung kurz besprechen, indem wir geeigneten Code schreiben, um die Konnektivitätsschritte für JDBC zu veranschaulichen.
Schritt 1: Importieren Sie die Pakete
Schritt 2: Laden der Treiber
Zunächst müssen Sie den Treiber laden bzw. registrieren, bevor Sie ihn im Programm verwenden können. Die Registrierung erfolgt einmalig in Ihrem Programm. Sie können einen Fahrer auf eine der beiden unten genannten Arten registrieren:
2-A Class.forName()
Hier laden wir die Klassendatei des Treibers zur Laufzeit in den Speicher. Es ist nicht erforderlich, neue Objekte zu verwenden oder zu erstellen. Im folgenden Beispiel wird Class.forName() verwendet, um den Oracle-Treiber wie folgt zu laden:
Class.forName(oracle.jdbc.driver.OracleDriver);>
2-B DriverManager.registerDriver()
DriverManager ist eine in Java integrierte Klasse mit einem statischen Mitgliedsregister. Hier rufen wir den Konstruktor der Treiberklasse zur Kompilierungszeit auf. Im folgenden Beispiel wird DriverManager.registerDriver() verwendet, um den Oracle-Treiber wie unten gezeigt zu registrieren:
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())>
Schritt 3: Stellen Sie eine Verbindung her verwenden Die Verbindungsklassenobjekt
Stellen Sie nach dem Laden des Treibers die Verbindungen wie folgt her:
Connection con = DriverManager.getConnection(url,user,password)>
- Benutzer: U Sername, über den auf Ihre SQL-Eingabeaufforderung zugegriffen werden kann.
- Passwort: Passwort, über das auf die SQL-Eingabeaufforderung zugegriffen werden kann.
- mit: Es handelt sich um einen Verweis auf die Verbindungsschnittstelle.
- URL : Uniform Resource Locator, der wie unten gezeigt erstellt wird:
String url = jdbc:oracle:thin:@localhost:1521:xe>
Dabei ist Oracle die verwendete Datenbank, Thin der verwendete Treiber, @localhost die IP-Adresse, unter der eine Datenbank gespeichert ist, 1521 die Portnummer und xe der Dienstanbieter. Alle drei oben genannten Parameter sind vom Typ String und müssen vom Programmierer vor dem Aufruf der Funktion deklariert werden. Die Verwendung davon kann zur Bildung des endgültigen Codes herangezogen werden.
Schritt 4: Erstellen Sie eine Erklärung
Sobald eine Verbindung hergestellt ist, können Sie mit der Datenbank interagieren. Die Schnittstellen JDBCStatement, CallableStatement und PreparedStatement definieren die Methoden, mit denen Sie SQL-Befehle senden und Daten aus Ihrer Datenbank empfangen können.
Die Verwendung der JDBC-Anweisung ist wie folgt:
Statement st = con.createStatement();>
Notiz: Hier ist con ein Verweis auf die im vorherigen Schritt verwendete Verbindungsschnittstelle.
Schritt 5: Führen Sie die Abfrage aus
Jetzt kommt der wichtigste Teil, nämlich das Ausführen der Abfrage. Die Abfrage hier ist eine SQL-Abfrage. Jetzt wissen wir, dass wir mehrere Arten von Abfragen haben können. Einige davon sind wie folgt:
Was ist Objekt Java?
- Die Abfrage zum Aktualisieren/Einfügen einer Tabelle in einer Datenbank.
- Die Abfrage zum Abrufen von Daten.
Die MethodeexecuteQuery() von Anweisungsschnittstelle wird verwendet, um Abfragen zum Abrufen von Werten aus der Datenbank auszuführen. Diese Methode gibt das Objekt von ResultSet zurück, mit dem alle Datensätze einer Tabelle abgerufen werden können.
Die Methode „executeUpdate(sql query)“ der Statement-Schnittstelle wird zum Ausführen von Abfragen zum Aktualisieren/Einfügen verwendet.
Pseudocode:
int m = st.executeUpdate(sql); if (m==1) System.out.println('inserted successfully : '+sql); else System.out.println('insertion failed');>
Hier ist SQL eine SQL-Abfrage vom Typ String:
Java
// This code is for establishing connection with MySQL> // database and retrieving data> // from db Java Database connectivity> /*> > *1. import --->java.sql> > *2. load and register the driver --->com.jdbc.> > *3. create connection> > *4. create a statement> > *5. execute the query> > *6. process the results> > *7. close> > */> import> java.io.*;> import> java.sql.*;> class> GFG {> > public> static> void> main(String[] args)> throws> Exception> > {> > String url> > => 'jdbc: mysql://localhost:3306/table_name '> ; // table details> > String username => 'rootgfg'> ;> // MySQL credentials> > String password => 'gfg123'> ;> > String query> > => 'select *from students'> ;> // query to be run> > Class.forName(> > 'com.mysql.cj.jdbc.Driver'> );> // Driver name> > Connection con = DriverManager.getConnection(> > url, username, password);> > System.out.println(> > 'Connection Established successfully'> );> > Statement st = con.createStatement();> > ResultSet rs> > = st.executeQuery(query);> // Execute query> > rs.next();> > String name> > = rs.getString(> 'name'> );> // Retrieve name from db> > System.out.println(name);> // Print result on console> > st.close();> // close statement> > con.close();> // close connection> > System.out.println(> 'Connection Closed....'> );> > }> }> |
>
>
Ausgabe :
Schritt 6: Schließen der Verbindungen
Endlich haben wir die Daten an den angegebenen Ort gesendet und stehen nun kurz vor dem Abschluss unserer Aufgabe. Durch das Schließen der Verbindung werden die Objekte von Statement und ResultSet automatisch geschlossen. Zum Schließen der Verbindung wird die Methode close() der Connection-Schnittstelle verwendet. Nachfolgend wird es wie folgt dargestellt:
Multiplexer
con.close();>
Beispiel:
Java
// Java Program to Establish Connection in JDBC> // Importing database> import> java.sql.*;> // Importing required classes> import> java.util.*;> // Main class> class> Main {> > // Main driver method> > public> static> void> main(String a[])> > {> > // Creating the connection using Oracle DB> > // Note: url syntax is standard, so do grasp> > String url => 'jdbc:oracle:thin:@localhost:1521:xe'> ;> > // Username and password to access DB> > // Custom initialization> > String user => 'system'> ;> > String pass => '12345'> ;> > // Entering the data> > Scanner k => new> Scanner(System.in);> > System.out.println(> 'enter name'> );> > String name = k.next();> > System.out.println(> 'enter roll no'> );> > int> roll = k.nextInt();> > System.out.println(> 'enter class'> );> > String cls = k.next();> > // Inserting data using SQL query> > String sql => 'insert into student1 values(''> + name> > +> '','> + roll +> ',''> + cls +> '')'> ;> > // Connection class object> > Connection con => null> ;> > // Try block to check for exceptions> > try> {> > // Registering drivers> > DriverManager.registerDriver(> > new> oracle.jdbc.OracleDriver());> > // Reference to connection interface> > con = DriverManager.getConnection(url, user,> > pass);> > // Creating a statement> > Statement st = con.createStatement();> > // Executing query> > int> m = st.executeUpdate(sql);> > if> (m ==> 1> )> > System.out.println(> > 'inserted successfully : '> + sql);> > else> > System.out.println(> 'insertion failed'> );> > // Closing the connections> > con.close();> > }> > // Catch block to handle exceptions> > catch> (Exception ex) {> > // Display message when exceptions occurs> > System.err.println(ex);> > }> > }> }> |
>
>
Ausgabe nach Datenimport in die Datenbank: