Voor JDBC-verbinding tot stand brengen in Java (de front-end, d.w.z. uw Java-programma en de back-end, d.w.z. de database), moeten we leren wat een JDBC precies is en waarom deze is ontstaan. Laten we nu bespreken waar JDBC precies voor staat en zullen we het wat gemakkelijker maken met behulp van real-life illustraties om het werkend te krijgen.
Wat is JDBC?
JDBC is een acroniem voor Java Database Connectivity. Het is een vooruitgang voor ODBC (Open Database Connectivity). JDBC is een standaard API-specificatie die is ontwikkeld om gegevens van de front-end naar de back-end te verplaatsen. Deze API bestaat uit klassen en interfaces geschreven in Java. Het fungeert in principe als een interface (niet degene die we in Java gebruiken) of kanaal tussen uw Java-programma en databases, dat wil zeggen dat het een link tot stand brengt tussen de twee, zodat een programmeur gegevens uit Java-code kan verzenden en deze in de database kan opslaan voor toekomstig gebruik .
binaire boom in Java
Illustratie: Werking van JDBC in samenhang met real-time
Waarom is JDBC ontstaan?
Zoals eerder verteld is JDBC een vooruitgang voor ODBC, omdat ODBC platformafhankelijk is, had het veel nadelen. ODBC API is geschreven in C, C++, Python en Core Java en zoals we hierboven weten zijn talen (behalve Java en een deel van Python) platformafhankelijk. Om de afhankelijkheid weg te nemen, werd JDBC ontwikkeld door een databaseleverancier die bestond uit klassen en interfaces geschreven in Java.
Stappen om Java-applicatie te verbinden met database
Hieronder vindt u de stappen waarin wordt uitgelegd hoe u verbinding kunt maken met Database in Java:
Stap 1 – Importeer de pakketten
Stap 2 – Laad de stuurprogramma's met behulp van de forName() methode
Stap 3 – Registreer de chauffeurs met behulp van DriverManager
Stap 4 – Breng een verbinding tot stand met behulp van het klasseobject Connection
Stap 5 – Maak een verklaring
Stap 6 – Voer de query uit
Stap 7 – Sluit de aansluitingen
Java-databaseconnectiviteit
Laten we deze stappen kort bespreken voordat we ze implementeren, door geschikte code te schrijven om connectiviteitsstappen voor JDBC te illustreren.
Stap 1: Importeer de pakketten
Stap 2: Het laden van de stuurprogramma's
Om te beginnen moet u eerst het stuurprogramma laden of registreren voordat u het in het programma gebruikt. Registratie dient eenmalig te gebeuren in uw programma. U kunt een bestuurder op de volgende twee manieren registreren:
2-A Klasse.voorNaam()
Hier laden we het klassenbestand van het stuurprogramma tijdens runtime in het geheugen. Het is niet nodig om nieuwe te gebruiken of objecten te maken. In het volgende voorbeeld wordt Class.forName() gebruikt om het Oracle-stuurprogramma te laden, zoals hieronder weergegeven:
Class.forName(oracle.jdbc.driver.OracleDriver);>
2-B DriverManager.registerDriver()
DriverManager is een in Java ingebouwde klasse met een statisch ledenregister. Hier noemen we de constructor van de driverklasse tijdens het compileren. In het volgende voorbeeld wordt DriverManager.registerDriver() gebruikt om het Oracle-stuurprogramma te registreren, zoals hieronder weergegeven:
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver())>
Stap 3: Breng een verbinding tot stand gebruik makend van de Verbindingsklasseobject
Nadat u het stuurprogramma hebt geladen, brengt u de verbindingen als volgt tot stand, zoals hieronder weergegeven:
Connection con = DriverManager.getConnection(url,user,password)>
- gebruiker: U sername van waaruit uw SQL-opdrachtprompt toegankelijk is.
- wachtwoord: wachtwoord waarmee de SQL-opdrachtprompt toegankelijk is.
- met: Het is een verwijzing naar de verbindingsinterface.
- URL : Uniform Resource Locator die is gemaakt zoals hieronder weergegeven:
String url = jdbc:oracle:thin:@localhost:1521:xe>
Waar oracle de gebruikte database is, thin is het gebruikte stuurprogramma, @localhost is het IP-adres waar een database is opgeslagen, 1521 is het poortnummer en xe is de serviceprovider. Alle drie bovenstaande parameters zijn van het String-type en moeten door de programmeur worden gedeclareerd voordat de functie wordt aangeroepen. Gebruik hiervan kan worden gebruikt om de definitieve code te vormen.
Stap 4: Maak een verklaring
Zodra er een verbinding tot stand is gebracht, kunt u communiceren met de database. De interfaces JDBCStatement, CallableStatement en PreparedStatement definiëren de methoden waarmee u SQL-opdrachten kunt verzenden en gegevens uit uw database kunt ontvangen.
Het gebruik van de JDBC-verklaring is als volgt:
Statement st = con.createStatement();>
Opmerking: Hier is con een verwijzing naar de verbindingsinterface die in de vorige stap werd gebruikt.
Stap 5: Voer de query uit
Nu komt het belangrijkste deel, namelijk het uitvoeren van de query. De query hier is een SQL-query. Nu weten we dat we meerdere soorten zoekopdrachten kunnen hebben. Sommigen van hen zijn als volgt:
np.nullen
- De query voor het bijwerken/invoegen van een tabel in een database.
- De query voor het ophalen van gegevens.
De executeQuery() -methode van het Verklaring-interface wordt gebruikt om zoekopdrachten uit te voeren om waarden uit de database op te halen. Deze methode retourneert het object ResultSet dat kan worden gebruikt om alle records van een tabel op te halen.
De executeUpdate(sql query) -methode van de Statement-interface wordt gebruikt om query's voor het bijwerken/invoegen uit te voeren.
Pseudocode:
int m = st.executeUpdate(sql); if (m==1) System.out.println('inserted successfully : '+sql); else System.out.println('insertion failed');>
Hier is sql een SQL-query van het type 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....'> );> > }> }> |
>
>
Uitvoer :
oneindige lus
Stap 6: De verbindingen sluiten
Dus eindelijk hebben we de gegevens naar de opgegeven locatie gestuurd en nu staan we op het punt onze taak te voltooien. Door de verbinding te sluiten worden objecten van Statement en ResultSet automatisch gesloten. De close()-methode van de Connection-interface wordt gebruikt om de verbinding te sluiten. Hieronder wordt het als volgt weergegeven:
con.close();>
Voorbeeld:
Java
Java sorteert een arraylist
// 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);> > }> > }> }> |
>
>
Uitvoer na het importeren van gegevens in de database: