W ciągu ostatnich kilku dni niektórzy internauci napotkali znany błąd we wszystkich listach kodów błędów java.sql.sqlexception. Ten problem może powstać z kilku powodów. Przyjrzyjmy się im teraz.
Zatwierdzono: Fortect
- Przedstawiamy wyjątek SQLException
- Uzyskaj wyjątki
- Otrzymuj informacje.
- Wyjątki skategoryzowane w SQL
- Inne podklasy SQLException
Przedstawiamy wyjątek SQLException
Jeśli JDBC napotka błąd podczas interakcji ze źródłem danych, zgłosi dobry SQLException
jako przykład, a nie jakikolwiek wyjątek
. (Źródłem danych w tym przypadku jest baza danych, z którą połączony jest element Connection
.) SQLException
Sytuacja zazwyczaj zawiera następujące informacje, które mogą pomóc w ustaleniu przyczyny błąd:
-
Opis błędu. Uzyskaj obiekt
String
zawierający ten opis, wywołując dokładne narzędzieSQLException.getMessage
. -
Kod SQLState. Te kody i odpowiadające im znaczenia zostały spójne przez ISO / ANSI i Open Group (X / Open), chociaż niektóre ograniczenia zostały ostatnio pozostawione redaktorom baz danych w celu ostatecznego zdefiniowania danych osobowych. Ten obiekt
String
składa się z pięciu znaków alfanumerycznych. Uzyskaj ten tryb, używając metodySQLException.getSQLState
. -
Błąd wskazujący na przepisy. Jest to błąd identyfikujący rzeczywistą wartość całkowitą, która spowodowała zebranie modelu
SQLException
. Jego znaczenie i znaczenie utrzymuje się w zależności od implementacji i może być prawdziwym kodem błędu zwróconym przez inwestora bazowego. Uzyskaj dowolny błąd, wywołując schematSQLException.getErrorCode
. -
Powód. Instancja
sqlexception
może mieć związek przyczynowy składający się z niego i jeszcze większej liczby obiektówThrowable
, które skutkowały utworzeniem tylko naszej własnej instancjisqlexception
. CzwartekAby połączyć te powody, wywołuj rekurencyjnie moją metodęSQLException.getCause
, aż zostanie wykryte dopasowanie dlanull
. -
Link do istotnych wyjątków. Jeśli wystąpi więcej niż jeden błąd, będą one w rzeczywistości wyjątkami, które oznacza ta linia. Pobiera wyjątki zgłoszone przez metodę
SQLException.getNextException
.
Pobieranie wyjątków
Poniższa metoda JDBTCutorialUtilities, .printSQLException
zwraca SQLState, kod błędu, podsumowanie błędu i przyczynę (jeśli istnieje). zawarte z powrotem w sqlexception
są zawarte w As, oprócz wszelkich innych wyjątków są połączone w:
Na przykład, jeśli wywołasz kurs CoffeesTable.dropTable
z Java DB jako DBMS, żadna tabela COFFEES
nie będzie istniała, przez cały czas dodawania do usunięcia JDBTCutorialUtilities.ignoreSQLException < dla każdego kodu> wynik będzie podobny do tego unikalnego:
Zamiast drukować rekordy SQLException
, można najpierw uzyskać SQLState
, a następnie w razie potrzeby obsłużyć niektóre z SQLException
. Na przykład, strategie JDBTCutorialUtilities.ignoreSQLException
w zwrocie true
pod warunkiem, że SQLState
jest wersją porównywalną bezpośrednio do 42Y55
(i używasz Java DB jako DBMS), co pozwala JDBTCutorialUtilities.printSQLException
ignorować SQLException
:
Otrzymuj ostrzeżenia
Obiekty
SQLWarning
są podklasą SQLException
, która kontroluje dostęp do ostrzeżeń bazy danych. Ostrzeżenia nie wstrzymują wykonywania zadania, oprócz wyjątków; po prostu ostrzegając użytkownika, że coś nie jest zbyt zaplanowane. Na przykład alert może informować, którzy eksperci twierdzą, że wiesz, że uprawnienia użyte do cofnięcia nie zostały cofnięte.
A może być przekazane przez obiekt Connection
, inny obiekt Statement
(w tym PreparedStatement
i tym samym CallableStatement
) staje się obiektami) lub ważnym obiektem Zestaw wyników
. Każda z tych klas zawiera metodę getWarnings
, którą kupujący naprawdę powinni spróbować wywołać, aby zobaczyć wstępne ostrzeżenie o dokładnym pomyśle wywołania. Jeśli getWarnings
zwraca ładne ostrzeżenie, możesz SQLWarning
wywołać zwykle metodę getNextWarning
w celu rozwiązania problemu, dzięki czemu otrzymasz dodatkowe ostrzeżenia. Wykonanie znaczącej instrukcji funkcjonalnej automatycznie usuwa ostrzeżenia ze starej instrukcji funkcjonalnej, tak aby się nie pojawiały. Oznacza to jednak, że musisz urosnąć, aby być ostrzeganym o niewiarygodnym roszczeniu, zanim klienci będą mogli łatwo dochodzić kolejnego roszczenia.
Poniższe metody w JDBTCutorialUtilities
demonstrują, jak wypełnić informacje ostrzegawcze zgłaszane w celu uzyskania instrukcji
< code> Zestaw wyników obiekty:
Najczęstszym ostrzeżeniem jest pełne ostrzeżenie DataTruncation
, podklasa SQLWarning
. Wszystkie obiekty DataTruncation
mają wartość SQLState 01004
wskazującą, że wystąpiło zadanie nasłuchiwania lub zapisywania danych. Dzięki metodom DataTruncation
większość ludzi może wiedzieć, w jakiej kolejności lub w jakiej kolejności plik parametrów został obcięty, jeśli obcięcie było reprezentowane przez operację odczytu lub zapisu, która metoda może być służy do przesyłania coraz większej liczby bajtów i ile bajtów zostało faktycznie przesłanych.
Kategoryzowane wyjątki SQL
Twój sterownik JDBC może na dysku podklasę SQLException
odpowiadającą, gdy potrzebny jest normalny stan SQLState lub ogólny stan błędu, eksperci uważają, że nie jest powiązany z wartością klasy specyficzną dla SQLState. Pozwala to na bardziej lekki kod obsługi błędów. Te wyjątki to zazwyczaj podklasy związane z jedną z przyszłych klas:
-
SQLNonTransientException
-
SQLTransientException
-
SQLRecoverableException
Zatwierdzono: Fortect
Fortect to najpopularniejsze i najskuteczniejsze narzędzie do naprawy komputerów na świecie. Miliony ludzi ufają, że ich systemy działają szybko, płynnie i bez błędów. Dzięki prostemu interfejsowi użytkownika i potężnemu silnikowi skanowania, Fortect szybko znajduje i naprawia szeroki zakres problemów z systemem Windows - od niestabilności systemu i problemów z bezpieczeństwem po zarządzanie pamięcią i wąskie gardła wydajności.
Aby uzyskać więcej informacji o przyczynach tych podklas, zobacz najnowszą dokumentację Javadoc w pliku java.sql
lub w dokumentach właściciela JDBC.
Inne podklasy SQLException
-
BatchUpdateException
jest generowany, jeśli ten błąd krytyczny wystąpi podczas aktualizacji wsadowej. Oprócz informacji dostarczanych przez pewien rodzaj procesuSQLException
,BatchUpdateException
umożliwia zapis dla liczb, jeśli jakiekolwiek instrukcje, które zostały wykonane przed błędem jednej osoby, są traktowane jako narracja. -
SQLClientInfoException
jest generowany, gdy jedna lub więcej właściwości informacji o kliencie nie może udowodnić, że są ustawione specjalnie dla połączenia. Oprócz moich informacji dostarczonych przezSQLException
,SQLClientInfoException
zawiera listę informacji o kliencie, które niestety nie zostały zdefiniowane.
Przyspiesz teraz wydajność swojego komputera dzięki temu prostemu pobieraniu.