java jdbc connection tutorial with programming example
Deze tutorial over JDBC-verbindingen legt de basisstappen voor een database uit met voorbeelden en biedt JDBC-verbindingsreeksen voor verschillende databases:
hoe swf-bestanden op Windows te openen
In de vorige tutorial van het JDBC-tutorialserie hebben we componenten, architectuur en typen stuurprogramma's geleerd in Java Database Connectivity (JDBC).
In deze zelfstudie bespreken we de stappen om verbinding te maken met databases met behulp van JDBC. Deze zelfstudie laat u zien hoe u een JDBC-verbinding uitvoert en hoe u databasebewerkingen uitvoert. JDBC API fungeert als een interface tussen het Java-programma en de database.
Aan het einde van deze zelfstudie kunt u Java-programma's schrijven om verbinding te maken met databases en DB-bewerkingen uit te voeren.
Wat je leert:
JDBC-verbindingsstappen
Er zijn 6 basisstappen om verbinding te maken met JDBC. Ze zijn ingeschakeld in de onderstaande afbeelding:
# 1) Pakketten importeren
Eerst moeten we de bestaande pakketten importeren om het in ons Java-programma te gebruiken. Importeren zorgt ervoor dat JDBC API-klassen beschikbaar zijn voor het programma. We kunnen dan de klassen en subklassen van de pakketten gebruiken.
Voeg, ongeacht het JDBC-stuurprogramma, de volgende importinstructie toe aan het Java-programma.
Importeer de andere klassen op basis van de functionaliteit die u in het programma gaat gebruiken. Download de juiste Jar-bestanden voor de database die u in het programma gaat gebruiken.
Verwijs naar de vorige tutorial voor de links om de Jar-bestanden voor uw database te downloaden.
JDBC API 4.0 biedt voornamelijk 2 belangrijke pakketten:
- java.sql
- javax.sql
(i) java.sql-pakket
Dit pakket biedt klassen en interfaces om de meeste JDBC-functies uit te voeren, zoals het maken en uitvoeren van SQL-query's.
Klassen / interfaces | Omschrijving |
---|---|
DriverManager | Het biedt een basisservice voor het beheren van een set JDBC-stuurprogramma's |
BLOB | Het vertegenwoordigt de SQL Blob-waarde in het Java-programma |
Oproepbare verklaring | Het wordt gebruikt om opgeslagen SQL-procedures uit te voeren |
CLOB | Het vertegenwoordigt de SQL Clob-waarde in het Java-programma |
Verbinding | Het creëert een verbinding (sessie) met een specifieke database |
Datum | Het biedt ondersteuning voor het type Date SQL |
Bestuurder | Het maakt een instantie van een stuurprogramma aan met Driver Manager |
ParameterMetaData | Het is een object dat kan worden gebruikt om de informatie over de typen en eigenschappen van elke parameter in een PreparedStatement-object te verkrijgen |
PreparedStatement | Het wordt gebruikt om een query met parameters in het Java-programma te maken en uit te voeren |
ResultSet | Het wordt gebruikt om rij voor rij toegang te krijgen tot het resultaat |
ResultSetMetaData | Het wordt gebruikt om informatie op te halen over de typen en eigenschappen van de kolommen in een ResultSet-object |
RowId | Het vertegenwoordigt de SQL ROWID-waarde |
Opslagpunt | Het vertegenwoordigt opslagpunt in transactie |
SQLData | Het wordt gebruikt om het SQL User Defined Type (UDT) toe te wijzen aan een klasse in het Java-programma |
SQLXML | Het vertegenwoordigt het SQL XML-type |
Uitspraak | Het wordt gebruikt om een statische SQL-instructie uit te voeren |
DriverPropertyInfo | Het biedt stuurprogramma-eigenschappen om een verbinding te maken |
SQLException | Het geeft informatie over databasefouten |
SQLTimeoutException | Het is een subklasse van SQLException die wordt gegenereerd wanneer de time-out die door de instructie is opgegeven, is verlopen |
SQL Waarschuwing | Het is een uitzondering die informatie geeft over waarschuwingen voor databasetoegang |
Struct | Het is een standaard mapping in Java-programma voor gestructureerd SQL-type |
(ii) javax.sql-pakket
Het is een JDBC-extensie-API en biedt server-side gegevenstoegang en verwerking in Java-programma.
Klassen / interfaces | Omschrijving |
---|---|
ConnectionEvent | Het geeft informatie over het optreden van verbindingsgerelateerde gebeurtenissen |
CommonDataSource | Het is een interface die de methoden definieert die gemeenschappelijk zijn tussen DataSource, XADataSource en ConnectionPoolDataSource |
ConnectionPoolDataSource | Het is een fabriek voor PooledConnection-objecten |
Databron | Het is een fabriek voor verbindingen met de fysieke DataSource die het object vertegenwoordigt |
PooledConnection | Het wordt gebruikt om de verbindingspool te beheren |
RowSet | Het biedt ondersteuning voor de JDBC API voor het Java Beans Component Model |
RowSetMetadata | Het bevat de informatie over de kolommen in een RowSet-object |
ConnectionEventListener | Het wordt gebruikt om PooledConnection-objectgebeurtenissen te registreren |
RowSetEvent | Het wordt gegenereerd wanneer zich een gebeurtenis voordoet bij een Rowset-object |
StatementEvent | Het wordt verzonden naar alle StatementEventListeners die zijn geregistreerd met een gegenereerde PooledConnection |
# 2) Stuurprogramma laden
Eerst moeten we de driver in het programma laden / registreren voordat we verbinding maken met de database. U hoeft het slechts één keer per database in het programma te registreren.
We kunnen de driver op de volgende 2 manieren laden:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
Op deze manier wordt het klassenbestand van het stuurprogramma tijdens runtime in het geheugen geladen. Het laadt impliciet de driver. Tijdens het laden registreert de driver zich automatisch bij JDBC.
DB-naam | Naam JDBC-stuurprogramma |
---|---|
Sybase | com.sybase.jdbcSybDriver |
MySQL | com.mysql.jdbc.Driver |
Orakel | oracle.jdbc.driver.OracleDriver |
Microsoft SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
MS Access | net.ucanaccess.jdbc.UcanaccessDriver |
PostgreSQL | org.postgresql.Driver |
IBM DB2 | com.ibm.db2.jdbc.net.DB2 Driver |
TeraData | com.teradata.jdbc.TeraDriver |
Notitie: forName () methode is alleen geldig voor JDK-compatibele virtuele machines.
(ii) DriverManager.registerDriver ()
DriverManager is een ingebouwde klasse die beschikbaar is in het pakket java.sql. Het fungeert als een bemiddelaar tussen de Java-applicatie en de database waarmee u verbinding wilt maken. Voordat u verbinding maakt met de database, moet u de driver registreren bij DriverManager. De belangrijkste functie van DriverManager is het laden van de stuurprogrammaklasse van de database en het maken van een verbinding met DB.
Openbaar statisch ongeldig register Bestuurder (bestuurder) - Met deze methode wordt de bestuurder geregistreerd bij de Driver Manager. Als de bestuurder al is geregistreerd, onderneemt hij geen actie.
- Het zal gooien SQLException als de databasefout optreedt.
- Het zal gooien NullPointerException als de driver nul is.
Op deze manier kunt u het stuurprogramma voor uw database registreren door het als parameter door te geven.
# 3) Breng verbinding tot stand
Na het laden van de driver is de volgende stap het maken en tot stand brengen van de verbinding. Eenmaal vereist, worden pakketten geïmporteerd en worden stuurprogramma's geladen en geregistreerd, waarna we een databaseverbinding kunnen opzetten.
De klasse DriverManager heeft de methode getConnection, we zullen deze methode gebruiken om de verbinding met Database te krijgen. Om de methode getConnection () aan te roepen, moeten we 3 parameters doorgeven. De 3 parameters zijn string gegevenstype URL, een gebruikersnaam en een wachtwoord om toegang te krijgen tot de database.
De methode getConnection () is een overbelaste methode. De 2 methoden zijn:
- getConnection (URL, gebruikersnaam, wachtwoord); - Het heeft 3 parameters URL, gebruikersnaam, wachtwoord.
- getConnection (URL); - Het heeft maar één parameter. URL heeft ook een gebruikersnaam en wachtwoord.
De volgende tabel bevat de JDBC-verbindingsreeksen voor de verschillende databases:
Database | Verbindingsreeks / DB-URL |
---|---|
Sybase | jdbc: Sybase: Tds: HOSTNAME: PORT / DATABASE_NAME |
MySQL | jdbc: mysql: // HOST_NAME: PORT / DATABASE_NAME |
Orakel | jdbc: oracle: thin: @HOST_NAME: PORT: SERVICE_NAME |
Microsoft SQL Server | jdbc: sqlserver: // HOST_NAME: PORT; DatabaseName = |
MS Access | jdbc: ucanaccess: // DATABASE_PATH |
PostgreSQL | jdbc: postgresql: // HOST_NAME: PORT / DATABASE_NAME |
IBM DB2 | jdbc: db2: // HOSTNAME: PORT / DATABASE_NAME |
TeraData | jdbc: teradata: // HOSTNAME / database =, tmode = ANSI, charset = UTF8 |
Voorbeeld:
Hier in dit voorbeeld,
- dun verwijst naar het type stuurprogramma.
- localhost is waar de Oracle-database wordt uitgevoerd.
- 1521 is het poortnummer om verbinding te maken met DB.
- voertuig - SID
- Systeem - Gebruikersnaam om verbinding te maken met de Oracle Database.
- Pass123 @ - Wachtwoord
# 4) Maak en voer instructie uit
Zodra de verbinding tot stand is gebracht, kunnen we communiceren met de verbonden database. Eerst moeten we de instructie maken om de SQL-query uit te voeren en vervolgens de instructie uitvoeren.
(i) Maak een verklaring
Nu gaan we het statement-object maken dat de query uitvoert met de verbonden database. We gebruiken de createStatement-methode van de Verbinding class om de query te maken.
Er zijn 3 instructie-interfaces beschikbaar in het pakket java.sql. Deze worden hieronder toegelicht:
een verklaring
Deze interface wordt gebruikt om eenvoudige SQL-instructies zonder parameter te implementeren. Het retourneert het ResultSet-object.
b) PreparedStatement
Deze PreparedStatement-interface breidt de Statement-interface uit. Het heeft dus meer functies dan de Statement-interface. Het wordt gebruikt om geparametriseerde en voorgecompileerde SQL-instructies te implementeren. De prestaties van de applicatie nemen toe omdat deze de query slechts één keer compileert.
Het is gemakkelijk om deze interface opnieuw te gebruiken met een nieuwe parameter. Het ondersteunt de IN-parameter. Zelfs wij kunnen deze verklaring zonder enige parameter gebruiken.
c) Oproepbare verklaring
CallableStatement-interface breidt de PreparedStatement-interface uit. Het heeft dus meer functies dan de PreparedStatement-interface. Het wordt gebruikt om een SQL-instructie met parameters te implementeren die de procedure of functie in de database oproept. Een opgeslagen procedure werkt als een methode of functie in een klasse. Het ondersteunt de IN en OUT parameters.
De instantie CallableStatement wordt gemaakt door de methode preparCall van het Connection-object aan te roepen.
(ii) Voer de zoekopdracht uit
Er zijn 4 belangrijke methoden om de query uit te voeren in de Statement-interface. Deze worden hieronder toegelicht:
- ResultSet executeQuery (String sql)
- int executeUpdate (String sql)
- boolean execute (String sql)
- int () executeBatch ()
a) ResultSet executeQuery (String sql)
De methode executeQuery () in de Statement-interface wordt gebruikt om de SQL-query uit te voeren en de waarden uit DB op te halen. Het retourneert het ResultSet-object. Normaal gesproken zullen we deze methode gebruiken voor de SELECT-query.
b) executeUpdate (String sql)
De methode executeUpdate () wordt gebruikt om query's met een opgegeven waarde uit te voeren, zoals INSERT, UPDATE, DELETE (DML-instructies) of DDL-instructies die niets retourneren. Meestal zullen we deze methode gebruiken voor het invoegen en bijwerken.
c) uitvoeren (String sql)
De methode execute () wordt gebruikt om de SQL-query uit te voeren. Het keert terug waar als het de SELECT-query uitvoert. En het keert terug false als het INSERT of UPDATE query uitvoert.
d) executeBatch ()
Deze methode wordt gebruikt om een batch SQL-query's naar de database uit te voeren en als alle query's met succes worden uitgevoerd, wordt een reeks updatetellingen geretourneerd. We zullen deze methode gebruiken om het grootste deel van de records in te voegen / bij te werken.
# 5) Resultaten ophalen
Wanneer we de query's uitvoeren met de methode executeQuery (), wordt het resultaat opgeslagen in het ResultSet-object. Het geretourneerde ResultSet-object zal nooit null zijn, zelfs als er geen overeenkomend record in de tabel is. ResultSet-object wordt gebruikt om toegang te krijgen tot de gegevens die zijn opgehaald uit de database.
We kunnen de methode executeQuery () gebruiken voor de SELECT-query. Wanneer iemand de invoeg- / update-query probeert uit te voeren, wordt SQLExecption weergegeven met het bericht ' executeQuery-methode kan niet worden gebruikt voor update
Een ResultSet-object verwijst naar de huidige rij in de Resultset. Om de gegevens in het ResultSet-object te herhalen, roept u de methode next () aan in een while-lus. Als er geen record meer is om te lezen, wordt FALSE geretourneerd.
ResultSet kan ook worden gebruikt om gegevens in DB bij te werken. We kunnen de gegevens uit ResultSet halen met behulp van getter-methoden zoals getInt (), getString (), getDate (). We moeten de kolomindex of kolomnaam als parameter doorgeven om de waarden met behulp van Getter-methoden op te halen.
In de volgende tutorial zullen we meer te weten komen over de ResultSet.
# 6) Verbinding sluiten
Ten slotte zijn we klaar met het manipuleren van gegevens in DB. Nu kunnen we de JDBC-verbinding sluiten. We moeten ervoor zorgen dat we de bron hebben gesloten nadat we deze hebben gebruikt. Als we ze niet goed sluiten, kunnen we geen verbindingen meer hebben.
Wanneer we het verbindingsobject sluiten, worden de Statement- en ResultSet-objecten automatisch gesloten.
Vanaf Java 7 kunnen we de JDBC-verbindingen automatisch sluiten met een try-catch-blok. De JDBC-verbinding moet tussen haakjes van het try-blok worden geopend. Binnen het try-blok kunt u de databaseverbindingen normaal tot stand brengen zoals wij.
Zodra de uitvoering het try-blok verlaat, wordt de verbinding automatisch verbroken. In dit geval hoeven we de verbinding niet te verbreken door de methode conn.close in het Java-programma aan te roepen.
Voorbeeld van een Java JDBC-verbinding
In dit voorbeeld ziet u hoe u de 6 basisstappen implementeert om verbinding te maken met de database met behulp van JDBC in Java-programma.
Maak een tabel
Maak daarvoor eerst een tabel en voeg er enkele vermeldingen aan toe.
Hieronder staat de SQL-query om een tabel te maken.
De tabel 'employee_details' gemaakt in Oracle DB.
Gegevens invoegen in tabel
Gebruik de volgende zoekopdrachten om de gegevens in de tabel 'employee_details' in te voeren.
Java-programma
Download het JDBC-jar-bestand en importeer het in het Java-project.
beste mp3-songdownloader voor Android
Uitgang:
Belangrijkste punten om op te merken:
- Eerst moeten we de pakketten importeren die we in ons Java-programma voor de JDBC-verbinding gaan gebruiken. We kunnen dus de klassen, subklassen en interfaces in de pakketten gebruiken.
- We moeten de driver registreren of laden met DriverManager voordat we een verbinding tot stand kunnen brengen.
- Na het registreren van de chauffeur kunnen we de verbinding tot stand brengen en de bewerkingen uitvoeren.
- Met behulp van een instructie-interface kunnen we de SQL-query maken en uitvoeren. Voor een eenvoudige SQL-query kunnen we de Statement-interface gebruiken. Voor invoegen / bijwerken / verwijderen kunnen we de PreparedStatement-interface gebruiken.
- Na de uitvoering van de instructie worden de resultaten opgeslagen in het ResultSet-object. We krijgen de resultaten van het ResultSet-object met behulp van de methode next () voor meer dan 1 record.
- Zodra we klaar zijn met de databasebewerking, moeten we de verbinding verbreken. Zodat de bron beschikbaar zal zijn voor anderen om te gebruiken.
Veel Gestelde Vragen
V # 1) Wat zijn de fundamentele stappen om verbinding te maken met DB in Java?
Antwoord: Er zijn 6 basisstappen om verbinding te maken met DB in Java.
Zij zijn:
- Import-pakket
- Driver Laden
- Breng verbinding tot stand
- Creëer en voer de instructie uit
- Haal resultaten op
- Hechte band
Vraag 2) Wat is het verschil tussen BLOB- en CLOB-gegevenstypen in JDBC?
Antwoord:
BLOB wordt gebruikt om het binaire type gegevens vast te houden. De opslaggrootte kan variëren op basis van de databases Voorbeeld: afbeeldingen, spraak, video.
CLOB wordt gebruikt om het karaktertype van gegevens vast te houden. Net als CLOB kan de opslagruimte variëren op basis van de DB. Voorbeeld: bestanden.
V # 3) Welke methode van de klasse DriverManager wordt gebruikt om een verbinding met DB tot stand te brengen?
Antwoord: De klasse DriverManager heeft een methode getConnection () die wordt gebruikt om een verbinding met DB tot stand te brengen.
V # 4) Wat is het verschil tussen Class.forName () en DriverManager.registerDriver ()?
Antwoord: Class.forName () Het laadt eerst de driver in het geheugen en registreert vervolgens de juiste driver bij de Driver Manager. Vervolgens wordt een object van het stuurprogramma gemaakt om de JDBC-verbinding uit te voeren. Het laadt de driver expliciet.
DriverManager.registerDriver () - Het registreert de bestuurder impliciet.
V # 5) Wat is een verbindingslek?
Antwoord: Deze situatie doet zich voor wanneer een verbinding wordt geopend en u deze niet heeft gesloten. Als er een codeblok is dat de verbinding opent en de verbinding niet verbreekt. Elke keer dat dat codeblok wordt uitgevoerd, lekt er een verbinding uit de Connection Pool.
Zodra alle beschikbare verbindingen zijn gelekt, is er geen verbinding beschikbaar en loopt de applicatie vast. Hoeveel het belangrijk is om de verbinding te openen, zoveel is het belangrijk om de verbinding te sluiten.
V # 6) Is het verplicht om de verbinding te verbreken?
Antwoord: Als u Java-versies lager dan 7 gebruikt, moet u de verbinding handmatig verbreken.
Vanaf versies boven Java 7 kunnen we de verbinding automatisch verbreken door de JDBC-verbindingscode tussen haakjes van het try-blok te openen. Zodra het programma het try-blok verlaat, wordt de verbinding automatisch verbroken.
Gevolgtrekking
In deze tutorial hebben we besproken hoe u een JDBC-verbinding tot stand brengt. Nu kunt u DB-bewerkingen uitvoeren met JDBC in het Java-programma. We hebben de 6 basisstappen onderzocht om verbinding te maken met Database. We moeten de pakketten in ons Java-programma importeren om het te kunnen gebruiken.
Zodra we de bestuurder hebben geregistreerd, kunnen we de verbinding tot stand brengen. We kunnen de SQL-instructie maken en uitvoeren met behulp van een Statement-interface en de resultaten ophalen in het ResultSet-object. Als laatste stap moeten we de verbinding verbreken.
Aanbevolen literatuur
- Java JDBC-zelfstudie: wat is JDBC (Java Database Connectivity)
- Java-interface en abstracte les met voorbeelden
- Java JDBC-transactiebeheer met voorbeeld
- JDBC DriverManager, JDBC PreparedStatement en Statement
- JDBC ResultSet: hoe u Java ResultSet gebruikt om gegevens op te halen
- JAVA-zelfstudie voor beginners: 100+ praktische Java-videotutorials
- Inleiding tot de programmeertaal van Java - videozelfstudie
- Selenium-databasetests (met behulp van WebDriver en JDBC API)