Wyjątki, ostrzeżenia


Wyjątki

kwadrat   Większość metod udostępnianych przez JDBC zmusza użytkownika do obsługi wyjątków. Wyjątki te - obiekty klasy SQLException - opisują błędy zgłaszane przez bazę danych oraz sam sterownik JDBC.
Poza standardowymi metodami, SQLException udostępnia dodatkowo:

  • getSQLState()
    zwraca identyfikator stanu błędu
  • getErrorCode()
    kod błędu związany z konkretnym SZBD
  • getNextException()
    pobranie informacji o następnym błędzie
  • getSetException()
    dodanie bieżącego wyjątku do łańcucha wyjątków

Ostrzeżenia

kwadrat   Podobnie do ostrzeżeń generowanych przez kompilatory, JDBC udostępnia mechanizm powiadamiania o sytuacjach, który nie kwalifikują się do miana błędu, choć informacja o ich zajściu może być kluczowa dla poprawnego działania aplikacji. Klasą opisującą wspomniany mechanizm jest SQLWarning.
W odróżnieniu od kompilatorów, użytkownik musi explicite odpytać stosowne obiekty, czy z wykonaniem ostatniej operacji bazodanowej wiążą się ostrzeżenia. Metoda getWarning() służy do pobrania obiektu reprezentującego ostrzeżenie i jest zaimplementowana w obrębie klas: Connection, Statement, oraz ResultSet. Natomiast sam obiekt SQLWarning udostępnia metody:

  • getWarnings()
  • clearWarnings()
  • getNextWarning()
  • setNextWarning()

Warto pamiętać, że po każdej aktualizacji danych (wykonanie zapytania, pobranie wiersza itp.), informacja o wcześniejszych ostrzeżeniach jest bezpowrotnie tracona.

Skracanie danych

kwadrat   Jeżeli w wyniku wykonania operacji bazodanowej rozmiar zwracanych danych przekracza ustalone granice, może dojść do ich automatycznego skrócenia (data truncation).
Informacja o obcięciu danych pobieranych z bazy jest składowana w postaci obiektu klasy DataTruncation, która z kolei jest podklasą SQLWarning. W przeciwieństwie do operacji odczytu, skrócenie danych podczas zapisywania informacji do bazy powoduje wygenerowania wyjątku.

Metainformacje

kwadrat   Wraz z uogólnieniem sposobu komunikacji z dowolnymi SZBD, pojawił się problem, jak zdobywać informacje o samym SZBD, przesyłanych danych, dopuszczalnych funkcjach itp. Takie dane, częstokroć niezbędne do prawidłowej organizacji programu, JDBC określa wspólnym mianem metainformacji (metadata) i udostępnia w postaci obiektów klas:

  • DatabaseMetaData
    informacje o nazwie i producencie SZBD, wersja, maksymalna liczba otwartych połączeń itd.

  • ResultSetMetaData
    liczba zwracanych kolumn, ich typy, nazwy itd.

Metainformacje są łatwe w obsłudze i analizie, natomiast ich wydobycie wiąże się ze znajmością kilkuset metod udostępnianych przez powyższe klasy. Ponadto producenci konkretnych SZBD nie muszą udostępniać wszystkich informacji, ograniczając tym samym możliwości obu klas.



 powrót | początek | poprzedni | następny   Marek Misiowiec