In de afgelopen selectiedagen zijn sommige gebruikers een vastgestelde fout tegengekomen in de java.sql.sqlception-foutcodelijst. Deze moeilijke taak kan om verschillende redenen ontstaan. Laten we er nu eens naar binnen kijken.
Goedgekeurd: Fortect
- Introductie van SQLException
- Uitsluitingen ophalen
- Meldingen ontvangen.
- SQL-gecategoriseerde uitzonderingen
- Andere SQLException-subklassen
Introductie van SQLException
Als JDBC geweldige fouten tegenkomt tijdens interactie met de gegevensbron, kan het een SQLException
als voorbeeld geven, niet een -uitzondering
. (De datasite in deze context is de database waaraan het element Connection
is gekoppeld.) SQLException
De instantie bevat meestal de volgende belangrijke informatie, die u kan helpen bij het bepalen van de oorzaak van de fout:
-
Beschrijving van de fout. Verkrijg een
String
-object dat deze rationalisatie bevat door de toolSQLException.getMessage
aan te roepen. -
SQLState-code. Deze codes en de bijbehorende updates zijn gestandaardiseerd door ISO / ANSI terwijl de Open Group (X / Open), hoewel een aantal beperkingen zijn overgelaten aan de databaseschrijvers om zichzelf definitief te definiëren. Dit
String
-object bestaat uit vijf alfanumerieke tekens. Haal ze in de modus door het conceptSQLException.getSQLState
aan te roepen. -
Fout van wetten. Dit is elke soort fout die een geheel getal identificeert dat er meestal voor zorgde dat de
SQLException
-instantie werd verzameld. De suggestie en betekenis blijft implementatiespecifiek en kan niettemin een geldige foutcode zijn die wordt geretourneerd door de fundamentele handelaar. Haal de fout op door het specifieke schemaSQLException.getErrorCode
aan te roepen. -
Reden. Een
sqlception
-instantie kan een oorzakelijk verband hebben met deze of meerThrowable
-goederen die ertoe hebben geleid dat onze eigensqlception
-afbeelding is gemaakt. DonderdagOm deze redenen te combineren, roept u recursief mijn methodeSQLException.getCause
aan totdat de juiste overeenkomst is gevonden voornull
. -
Link naar samengestelde uitzonderingen. Als er meer dan 1 fout optreedt, zijn dit eigenlijk de uitzonderingen waar deze regel naar verwijst. Hiermee worden uitzonderingen gegenereerd door de methode
SQLException.getNextException
.
Uitzonderingen ophalen
De volgende methode JDBTCutorialUtilities, .printSQLException
retourneert SQLState, foutcode, foutbeschrijving en reden (indien aanwezig) die is opgenomen in sqlexception
bevinden zich op een veilige plaats in As, en alle andere uitzonderingen worden samengevoegd tot:
Als u bijvoorbeeld het grootste deel van de cursus CoffeesTable.dropTable
met Java DB aanroept terwijl uw DBMS, bestaat de tabel COFFEES
mogelijk niet, naast het verwijderen van meestal de JDBTCutorialUtilities.ignoreSQLException < / code> de uitvoer moet ongeveer zo zijn:
In plaats van een schermafdruk van SQLException
-informatie, kunt u eerst toegang krijgen tot SQLState
en vervolgens een deel van alle SQLException
afhandelen als dat nodig is. Uw strategieën JDBTCutorialUtilities.ignoreSQLException
geven bijvoorbeeld true
terug als SQLState
een zinvolle versie is die vergelijkbaar is met 42Y55
( en de persoon Java DB als uw DBMS gebruikt), welk type toestaat JDBTCutorialUtilities.printSQLException
negeer SQLException
:
Waarschuwingen ontvangen
De
SQLWarning
-objecten zijn een echte subklasse van SQLException
die de toegang regelt die databasewaarschuwingen helpt. Waarschuwingen stoppen de uitvoering van de stap niet, in tegenstelling tot uitzonderingen; gewoon de gebruiker waarschuwen dat er mogelijk iets niet is gepland. Een ontwaken kan bijvoorbeeld zeggen dat je weet dat de toestemming die personen hebben gebruikt om in te trekken niet is ingetrokken.
A kan door een Connection
-object, één Statement
-object (inclusief PreparedStatement
en CallableStatement
) worden doorgegeven wordt objecten) of een ResultSet
-object. Elk die deze klassen gebruikt, heeft een getWarnings
-toepassing die kopers moeten bellen om een allereerste waarschuwing over het belidee te zien. Als getWarnings
een waarschuwing retourneert, kunt u SQLWarning
de getNextWarning
-methode rechtstreeks aanroepen om het probleem op te lossen, zodat u nog meer waarschuwingen ontvangt. Het uitvoeren van een functionele instructie verwijdert automatisch meldingen van de vorige functionele instructie, zodat mensen niet verschijnen. Dit betekent echter dat u zelf gewaarschuwd moet worden voor een ongelooflijke indicatie voordat klanten een nieuwe claim kunnen uitvoeren.
De volgende methoden in de buurt van JDBTCutorialUtilities
laten zien hoe u waarschuwingsfeiten en strategieën kunt invullen die zijn gerapporteerd voor Statement
< code> ResultSet objecten:
De meest voorkomende waarschuwing is onze eigen volledige DataTruncation
-waarschuwing, een subklasse vanwege SQLWarning
. Alle DataTruncation
-producten hebben SQLState 01004
, wat aangeeft dat er doorgaans een probleem was met het luisteren of schrijven van gegevens. Met de DataTruncation
-methoden kunnen de meeste mensen mogelijk weten in welke volgorde of in welke verkoop de parametergegevens zijn afgekapt, als deze truncatie werd weergegeven door een lees- of schrijfinstelling, welke methode dan zou moeten worden gebruikt op weg om veel bytes over te dragen, en hoeveel bytes er daadwerkelijk zijn overgedragen.
Gecategoriseerde SQL-uitzonderingen
Uw JDBC-stuurprogramma genereert mogelijk een SQLException
-subklasse waarvan experts beweren dat deze overeenkomt met een normale SQLState of een algemene foutstatus die volgens experts is niet betrokken bij een SQLState-specifieke klassewaarde. Dit zorgt voor meer draagbare foutafhandelingscode. Deze uitzonderingen kunnen meestal subklassen zijn van een van de toekomstige lessen:
-
SQLNonTransientException
-
SQLTransientException
-
SQLRecoverableException
Goedgekeurd: Fortect
Fortect is 's werelds meest populaire en effectieve pc-reparatietool. Miljoenen mensen vertrouwen erop dat hun systemen snel, soepel en foutloos blijven werken. Met zijn eenvoudige gebruikersinterface en krachtige scanengine kan Fortect snel een breed scala aan Windows-problemen vinden en oplossen - van systeeminstabiliteit en beveiligingsproblemen tot geheugenbeheer en prestatieproblemen.
Zie voor nog meer informatie over deze subklassen de nieuwste Javadoc in het bestand java.sql
of uw JDBC-eigenaardocumentatie.
Andere SQLException-subklassen
-
BatchUpdateException
wordt normaal gesproken gegenereerd als er een fatale fout optreedt tijdens de batch-update. Naast de informatie die is opgenomen in hetSQLException
-proces, biedtBatchUpdateException
updatenummers als er doorgaans rekening wordt gehouden met instructies die zijn uitgevoerd vóór de fout van één persoon. -
SQLClientInfoException
kan worden gegenereerd wanneer een of meer clientinformatie-homes niet specifiek voor de verbinding kunnen worden ingesteld. Naast de informatie die wordt geleverd doorSQLException
, bevatSQLClientInfoException
een lijst met betrekking tot eigenschappen van clientgegevens die helaas niet zijn gedefinieerd.