Under de senaste dagarna har många användare stött på ett känt fel i denna specifika java.sql.sqlexception-felkodslista. Detta problem kan komma i förgrunden av flera skäl. Låt oss titta på alla inblandade nu.
Godkänd: Fortect
- Vi introducerar SQLException
- Få undantag
- Ta emot varningar.
- SQL-kategoriserade undantag
- Andra SQLException-underklasser
Vi introducerar SQLException
Om JDBC stöter på ett fel när man pratar med datakällan, kommer den att skicka SQLException
som ett exempel, inte ett specifikt undantag
. (Datakällan i ett sammanhang är databasen till vilken just detta Connection
-element är anslutet.) SQLException
Förekomsten innehåller vanligtvis följande information, som har förmågan att hjälpa dig ta reda på orsaken till ditt nuvarande fel:
-
Beskrivning av felet. Hämta ett faktiskt
String
-objekt som innehåller denna beskrivning genom att sälja verktygetSQLException.getMessage
. -
SQLState-policy. Dessa koder och deras motsvarande betydelser har verkat standardiserade av ISO / ANSI och Open Group (X / Open), även om vissa restriktioner har lämnats till databasredaktörerna för att definiera sig själva. Detta
String
-objekt skapas av fem alfanumeriska tecken. Hämta det här läget gånger genom att anropa metodenSQLException.getSQLSate
. -
Fel inom lagar. Detta är ett fel som identifierar varje heltalsvärde som gjorde att
SQLException
-instansen samlades in. Dess innebörd och antydande förblir implementeringsspecifik och kan vara en gällande felkod som returneras av den underliggande handlaren. Få felet genom att anropa schematSQLException.getErrorCode
. -
Orsak. En
sqlexception
-händelse kan ha ett orsakssamband som består av detta objekt eller flerThrowable
-objekt som ledde till vår egensqlexception
-instansmottagning skapad. TorsdagFör att kombinera dessa skäl, anropa någraSQLException.getCause
metoder rekursivt tills en matchning definitivt hittas förnull
. -
Länk som kan sammansätta undantag. Om mer än ett fel inträffar är de faktiskt undantagen som detta steg hänvisar till. Får undantag som kastas av någon
SQLException.getNextException
metod.
Hämta undantag
Följande produkt JDBTCutorialUtilities, .printSQLException
returnerar SQLState, felkod, felbeskrivning och orsak (om någon) som är som ingår i sqlexception
finns i As, och alla andra undantag är sammanlänkade i:
Om du till exempel kallar handledningen CoffeesTable.dropTable
med Java DB som DBMS, finns inte tabellen COFFEES
, förutom att ta bort
Istället för att skriva ut SQLException
-information kan du först hämta SQLState
och sedan hantera en del av SQLException
efter behov. Till exempel, rekommendationerna JDBTCutorialUtilities.ignoreSQLException
i retur pure
om SQLState
är en version som motsvarar 42Y55
(och du använder endast Java DB som din DBMS), vilket hjälper JDBTCutorialUtilities.printSQLException
att ignorera SQLException
:
Ta emot varningar
SQLWarning
-objekten är en underklass som rör SQLException
som styr åtkomst till databasaviseringar. Varningar stoppar inte utförandet av uppgiften, kontra undantag; varnar helt enkelt användaren att något inte är planerat. Till exempel kan en varning ange att du vet att behörigheten du använde som kommer att återkallas inte har återkallats.
En kan välja att skickas genom ett Connection
-objekt, ett annat Statement
-objekt (inklusive PreparedStatement
och CallableStatement
) blir objekt) eller ett särskilt ResultSet
-objekt. Var och en av dessa sessioner har en getWarnings
-metod som investerare måste ringa för att se en första varning nästan den anropande idén. Om getWarnings
uppmuntrar till en varning kan du SQLWarning
hänvisa till metoden getNextWarning
för att lösa problemet så att du får ytterligare varningar. Genom att utföra en funktionsinstruktion tas varningar automatiskt bort från en tidigare funktionsinstruktion så att de inte ska visas. Det betyder dock att du behöver bli varnad för ett otroligt krav innan nya kunder kan verkställa ett nytt krav.
Följande metoder i JDBTCutorialUtilities
visar hur man fyller i varningsinformation som rapporterats för många Statement
ResultSet
objekt:
Den vanligaste varningen är exekveringsvarningen DataTruncation
, en underklass till SQLWarning
. Alla DataTruncation
-objekt har SQLState 01004
, vilket indikerar att det fanns ett annat problem med att lyssna eller skriva data. Med våra DataTruncation
metoder kan de flesta veta i vilken ordning eller i vilken ordning mina parameterdata trunkerades, om trunkeringen visades av en läs- eller skrivoperation, vilken möjlighet som skulle behöva användas för att överföra många byte och hur många byte som faktiskt placerades.
Kategoriserade SQL-undantag
Din JDBC-drivrutin kan mycket väl generera en SQLException
-underklass som kan jämföras med en normal SQLState eller allmän feldeklaration som experter tror är inte relaterat till ett stort SQLState-specifikt klassvärde. Detta möjliggör mer mobil eller bärbar felhanteringskod. Dessa undantag är i allmänhet , underklasser till en av de framtida klasserna:
-
SQLNonTransientException
-
SQLTransientException
-
SQLRecoverableException
Godkänd: Fortect
Fortect är världens mest populära och effektiva PC-reparationsverktyg. Det litar på miljontals människor för att hålla sina system igång snabbt, smidigt och felfritt. Med sitt enkla användargränssnitt och kraftfulla skanningsmotor hittar och fixar Fortect snabbt ett brett utbud av Windows-problem – från systeminstabilitet och säkerhetsproblem till minneshantering och prestandaflaskhalsar.
För mer information via dessa underklasser, se den senaste Javadoc i deras java.sql
fil eller JDBC professionell dokumentation.
Andra SQLException-underklasser
-
BatchUpdateException
kastas i händelse av att ett allvarligt fel inträffar under en batchpost till. Utöver informationen som tillhandahålls av den faktiskaSQLException
-processen, gerBatchUpdateException
uppdateringsnummer om några satser som kördes före en persons fel tas med i ditt konto. -
SQLClientInfoException
kastas tillbaka när en eller flera klientinformationsegenskaper inte kan hamna i setus specifikt för anslutningen. Dessutom, så att du kan informationen frånSQLException
, innehållerSQLClientInfoException
en lista över klientinnehållsegenskaper som tyvärr inte har definierats.