jdbc exception handling how handle sql exceptions
hoe je een ddos-programma maakt
In deze JDBC-zelfstudie voor het afhandelen van uitzonderingen wordt uitgelegd hoe u met SQL-uitzonderingen omgaat met behulp van programmeervoorbeelden:
In de JDBC-transactiebeheer tutorial van de JDBC-tutorialserie leerden we JDBC-transactietypen, gegevenstypen, transactiebeheermethoden en hoe deze in Java-programma's te gebruiken.
In deze zelfstudie leren we over uitzonderingen in JDBC en hoe hiermee om te gaan. Als de uitzondering in JDBC is opgetreden vanwege databaseverbindingen of iets met betrekking tot DB, valt deze onder SQLException. Hier zullen we meer informatie zien over SQLExceptions.
Laten we ons voorbereiden om meer te weten te komen over uitzonderingen in JDBC.
Wat je leert:
Afhandeling van JDBC-uitzonderingen
Uitzonderingen doen zich voor wanneer er een fout of waarschuwing is bij de uitvoering van het programma. Wanneer zich een uitzondering voordoet, wordt de normale stroom van het programma verstoord en wordt het programma abnormaal beëindigd. Het goede aan de uitzondering is dat we het aankunnen door een try-catch-blok of een throw-sleutelwoord te gebruiken. Alle uitzonderingen en fouten zijn de subklassen van de klasse Throwable. Throwable class is de basisklasse van alle uitzonderingen en fouten.
Sleutelwoorden voor het afhandelen van uitzonderingen in Java
Er zijn vijf trefwoorden in Java Exception Handling. Ze zijn als volgt:
- Proberen: Programma-instructies die de uitzondering kunnen oproepen, moeten binnen een try-blok worden gehouden.
- Vangst: Als er een uitzondering optreedt in het try-blok, wordt deze gegenereerd. We kunnen die uitzondering opvangen met behulp van het Catch-blok en deze in de code afhandelen.
- Werpen: Door het systeem gegenereerde uitzonderingen worden automatisch gegenereerd door JVM. Om de uitzonderingen handmatig te gooien, moeten we een trefwoord gooien.
- Gooit: Elke uitzondering die uit een methode is gegooid, moet worden gespecificeerd door een throw-clausule.
- Tenslotte: Eventuele programma-instructies die na het try-blok moeten worden uitgevoerd, moeten in het final-blok worden bewaard.
>> Klik hier voor meer informatie over uitzonderingen in Java.
SQLException
In JDBC kunnen we uitzonderingen krijgen wanneer we de query uitvoeren of maken. Uitzonderingen die optreden als gevolg van de database of het stuurprogramma vallen onder SQL-uitzondering. Door het afhandelen van uitzonderingen kunnen we de SQL-uitzondering afhandelen zoals we de normale uitzondering afhandelen.
SQLException is beschikbaar in het pakket java.sql. Het breidt de Exception-klasse uit, wat betekent dat we de methoden die beschikbaar zijn in de Exception-klasse ook in de SQLException-klasse kunnen gebruiken.
Voorbeeld voor SQL-uitzondering
Syntaxisfout in de SQL-instructie kan leiden tot SQL-uitzondering. Wanneer een dergelijke uitzondering optreedt, wordt een object van de klasse SQLException doorgegeven aan het catch-blok. Door de informatie in het SQLException-object te gebruiken, kunnen we die uitzondering opvangen en doorgaan met het programma.
Het SQLException-object heeft de volgende methoden:
| Methode naam | Omschrijving |
|---|---|
| getErrorCode () | Het geeft het foutnummer terug |
| getMessage () | Het retourneert het foutbericht |
| getSQLState () | Het retourneert de SQLState van het SQLException-object. Het kan ook null retourneren. Voor databasefout wordt XOPEN SQL State geretourneerd |
| getNextException () | Het retourneert de volgende uitzondering in de uitzonderingsketen. |
| printStackTrace () | Het drukt de huidige uitzondering en de backtrace af naar een standaard foutenstroom |
| setNextException (SQLEXception ex) | Het wordt gebruikt om nog een SQL-uitzondering in de keten toe te voegen |
Omgaan met uitzonderingen
JDBC-gerelateerde uitzondering genereert meestal SQLException, en het is een gecontroleerde uitzondering, dus we moeten deze opvangen of gooien. Alle bedrijfslogica en commit-gegevens moeten in een Try-blok worden gedaan, als er een uitzondering is opgetreden in het blok, moeten we deze opvangen en afhandelen in het Catch-blok. Op basis van het uitzonderingstype moeten we de rollbacks of commit doen in het Catch-blok.
Categorieën van SQLException
Soms genereert het JDBC-stuurprogramma de subklasse van SQLException die een algemene SQL-status of een algemene foutstatus vertegenwoordigt die specifiek niet is gekoppeld aan een bepaalde SQL-statusklassewaarde. Het zorgt ervoor dat u de uitzondering op een meer specifieke manier behandelt, en we kunnen het in onze code afhandelen. Dit soort uitzonderingen vallen onder de subklassen van een van de volgende uitzonderingen:
- SQLNonTransientException: Dit type uitzondering wordt gegenereerd wanneer een instantie waarbij het opnieuw proberen van dezelfde bewerking mislukt, tenzij de oorzaak van de SQLException is gecorrigeerd.
- SQLTransientException: Dit type uitzondering wordt gegenereerd wanneer een eerder mislukte bewerking kan slagen wanneer we de bewerking opnieuw hebben geprobeerd zonder enige wijziging / tussenkomst.
- SQLRecoverableException: Dit type uitzondering wordt gegenereerd wanneer een eerder mislukte bewerking kan slagen wanneer we de bewerking opnieuw hebben geprobeerd met elke wijziging / tussenkomst van de toepassing. Terwijl u dat doet, moet de huidige verbinding worden gesloten en de nieuwe verbinding worden geopend.
Andere subklassen van SQLException:
Het volgende zijn de subklassen van SQLException:
- BatchUpdateException: Dit type uitzondering wordt gegenereerd als er een fout is opgetreden tijdens het uitvoeren van de batchupdate. Naast de SQLException-informatie biedt BatchUpdateException de status van de instructies die zijn uitgevoerd / bijgewerkt voordat de fout zich voordeed.
- SQLClientInfoException: Dit type uitzondering wordt gegenereerd als een of meer informatie-eigenschappen niet kunnen worden ingesteld op een verbinding. Naast de SQLException-informatie, SQLClientInfoException een lijst met clientinformatie-eigenschappen die niet zijn ingesteld.
In deze tutorial zullen we normale SQLException zien, en dan zullen we BatchUpdateException zien. U kunt de overige subklassen van SQLException op uw systeem uitoefenen.
In het volgende voorbeeld zullen we dieper ingaan op het omgaan met de uitzondering.
In deze tutorial zijn alle programma's in Java geschreven. We hebben de Java 8-versie en Oracle DB gebruikt.
>> Klik hier om de Oracle-software te downloaden
>> Klik hier om de Java-versie 8 te downloaden
Het heeft het stapsgewijze Java-installatieproces.
Uitzonderingen Voorbeeldprogramma
Uitgang:

Uitleg:
# 1) Een selectiequery gemaakt met een kolomnaam die niet in de tabel EMPLOYEE_DETAILS staat.
Zoekopdracht maken:
#twee) Verbinding gemaakt, instructie gemaakt en de select QUERY uitgevoerd in het try-blok.
# 3) In het Catch-blok hebben we de uitzondering afgehandeld.
# 4) We geven de fout van de uitzondering weer met de methode getError (), SQLState van de uitzondering met de methode getSQLState (), het bericht van de uitzondering met de methode getMessage () en drukken de stacktracering van de uitzondering af met de methode printStackTrace.
BatchUpdateException-voorbeeld
We hebben een nieuwe tabel gemaakt om het BatchUpdateException-voorbeeld te illustreren. De naam van de tafel is EMPLOYEE. Het heeft 3 kolommen.
Zij zijn:
- ID die een primaire sleutel is
- ACHTERNAAM
- VOORNAAM
Syntaxis om een tabel te maken in ORACLE DB:

Java-programma:
UITGANG:

Uitleg:
Wat we in het bovenstaande programma hebben gedaan, is dat we 3 INSERT-queries hebben gemaakt en deze in een batch hebben toegevoegd en uitgevoerd. De 3rdquery heeft dezelfde ID-waarde van 1stomdat de ID-kolom een primaire sleutel is van de EMPLOYEE-tabel, heeft het programma een BatchUpdateException gegenereerd.
- De 3 invoegquery's gemaakt om deze in de EMPLOYEE-tabel in te voegen. De eerste en derde query hebben dezelfde ID-waarde. De id-kolom is een primaire sleutel voor de EMPLOYEE-tabel.
- Een statement-object gemaakt en deze 3 queries eraan toegevoegd met behulp van de addBatch () - methode. Vervolgens de methode executeBatch () aangeroepen om het uit te voeren.
- Omdat de eerste en derde query dezelfde ID-waarde hebben. Wanneer executeBatch () probeerde de derde query uit te voeren, wordt BatchUpdateException gegenereerd.
- In het catch-blok van BatchUpdateException hebben we de methode getUpdateCounts () aangeroepen om de status van de bijgewerkte rij op te halen.
- Door de for-lus te gebruiken, controleren we één voor één of de status van de specifieke instructie is mislukt of niet. Als de specifieke instructie niet is mislukt, wordt het rijnummer van de instructie afgedrukt.
- Daarna zal het de printStackTrace van de BatchUpdateException afdrukken.
- In het bovenstaande voorbeeld, aangezien de uitzondering is opgetreden vanwege het derde statement, zijn dus de statement 1 en 2 afgedrukt. Vervolgens is het volledige spoor van de uitzondering afgedrukt in de uitvoerconsole.
Punten om te onthouden:
- De uitzondering die is opgetreden vanwege de database, valt onder SQLException.
- Uitzonderingen in Java kunnen worden afgehandeld met het try: catch-blok.
- SQLException is de gecontroleerde uitzondering, dus we kunnen deze afhandelen met het try: catch-blok.
- We hebben een aantal subklassen van SQLException. Dit zijn SQLNonTransientException, SQLTransientException, SQLRecoverableException, BatchUpdateException en SQLClientInfoException.
Veel Gestelde Vragen
V # 1) Wat is een SQL-uitzondering?
Antwoord: Er is een uitzondering opgetreden omdat Database bekend staat als SQL-uitzondering. Een uitzondering die informatie biedt over databasegerelateerd, wordt ook wel SQL-uitzondering genoemd. We hebben een SQLException-klasse in Java, die wordt gebruikt om informatie over de uitzondering te verstrekken. Het heeft de volgende methoden:
- getErrorCode ()
- getMessage ()
- getSQLState ()
- printStackTrace ()
- getNextException ()
Vraag 2) Hoe de uitzondering in SQL afhandelen?
Antwoord: Schrijf de bedrijfslogica in het try-blok. Als er een fout of uitzondering is opgetreden, vang deze dan op in het Catch-blok en schrijf het juiste bericht om de uitzondering gemakkelijk te vinden.
Try – Catch-blok wordt gebruikt om de uitzondering af te handelen.
V # 3) Wanneer SQLException kan optreden in Java?
Antwoord: SQLException treedt op als er een fout is in de databasetoegang of andere fouten met betrekking tot de database. Wanneer SQLException optreedt, wordt een object van het type SQLException doorgegeven aan de catch-clausule. We kunnen het aan in het Catch-blok.
V # 4) Wat is de uitzonderingsketen in Java en wat is het nut ervan?
Antwoord: Een uitzondering die een andere uitzondering veroorzaakt, staat bekend als Exception Chain of Chained Exception. In de meeste gevallen moeten we de uitzondering zo koppelen dat de ene uitzondering aan de andere wordt gekoppeld, zodat de logboeken duidelijk en gemakkelijk te volgen zijn. Het zal nuttig zijn voor de programmeur bij het debuggen.
Bijvoorbeeld:
Overweeg een methode die een rekenkundige uitzondering genereert als gevolg van delen door nul. De werkelijke oorzaak van de uitzondering is een I / O-fout, waardoor de deler nul is. De methode genereert alleen een rekenkundige uitzondering voor de programmeur. Zodat de beller / programmeur niets te weten komt over de werkelijke oorzaak van de uitzondering. In dit soort situaties kunnen we een geketende uitzondering gebruiken.
Gevolgtrekking
Uitzonderingen kunnen worden afgehandeld door een try-catch-blok te gebruiken of door het te gooien. Er zijn uitzonderingen opgetreden omdat de database bekend staat als SQLException. We hebben een aparte klasse voor SQLException, een subklasse van Exception. We hebben de methoden om meer specifiek te weten te komen over de SQL-uitzondering.
De methoden zijn getMessage (), getErrorCode (), getSQLState (), getNextException en printStackTace. getNextException wordt gebruikt in het geval van een uitzonderingsketen.
Aanbevolen literatuur
- Java-uitzonderingen en het afhandelen van uitzonderingen met voorbeelden
- Top 10 Selenium-uitzonderingen en hoe hiermee om te gaan (exacte code)
- Volledige gids voor het omgaan met PL SQL-uitzonderingen met voorbeelden
- C # Tutorial voor het afhandelen van uitzonderingen met codevoorbeelden
- Afhandeling van uitzonderingen in C ++
- Hoe om te gaan met uitzonderingen in SoapUI Groovy Scripts - SoapUI Tutorial # 11
- PL SQL-zelfstudie voor beginners met voorbeelden | Wat is PL / SQL
- PL SQL-pakket: Oracle PL / SQL-pakket zelfstudie met voorbeelden