[postgresql] jdbc i =?UTF-8?B?d3lqxIV0a2k=?= z bazy
Juliusz =?UTF-8?B?xIZ3acSFa2Fsc2tp?= - 24-03-2007 00:01
[postgresql] jdbc i =?UTF-8?B?d3lqxIV0a2k=?= z bazy
Witam!
Piszę aplikację bazodanową i całe sprawdzanie poprawności danych chcę przerzucić na constrainty w bazie danych. Oczywiście w przypadku wprowadzenia niepoprawnych danych to aplikacja musi obsłużyć wyjątek. Problem polega na tym, że nie wiem jak z wyjątku org.postgresql.util.PSQLException wyciągnąć informacje o tym, które ograniczenie i w jakich tabelach zostało naruszone? Czy jedyne co mogę zrobić to ręcznie parsować komunikat bazy i na jego podstawie generować odpowiedni wyjątek? Próbowałem wywnioskować cos na podstawie wartości sqlState wyjątku - jednak nie mogę znaleźć w dokumentacji opisów tych statusów...
Już kilka dni próbuję znaleźć odpowiedź na to pytanie w internecie jednak bez rezultatów :/ Czy ktoś już uporał się z tym problemem?? -- Kind regards, http://www.Juliusz.Cwiakalski.com/
=?iso-8859-2?q?Filip_Rembia=B3kowski?= - 28-03-2007 00:08
=?iso-8859-2?q?Re:_jdbc_i_wyj=B1tki_z_bazy?=
On 23 Mar, 12:08, Juliusz Ćwiąkalski <juliusz.cwiakal...@op.pl> wrote: > Piszę aplikację bazodanową i całe sprawdzanie poprawności danych chcę > przerzucić na constrainty w bazie danych. Oczywiście w przypadku > wprowadzenia niepoprawnych danych to aplikacja musi obsłużyć wyjątek. > Problem polega na tym, że nie wiem jak z wyjątku > org.postgresql.util.PSQLException wyciągnąć informacje o tym, które > ograniczenie i w jakich tabelach zostało naruszone? Czy jedyne co mogę > zrobić to ręcznie parsować komunikat bazy i na jego podstawie generować > odpowiedni wyjątek?
Niestety tak.
RAISE EXCEPTION presently always generates the same SQLSTATE code, P0001, no matter what message it is invoked with. It is possible to trap this exception with EXCEPTION ... WHEN RAISE_EXCEPTION THEN ... but there is no way to tell one RAISE from another. [http://www.postgresql.org/docs/8.2/s...ql-errors-and- messages.html]
> Próbowałem wywnioskować cos na podstawie wartości > sqlState wyjątku - jednak nie mogę znaleźć w dokumentacji opisów tych > statusów... http://www.postgresql.org/docs/curre...-appendix.html
Juliusz =?UTF-8?B?xIZ3acSFa2Fsc2tp?= - 28-03-2007 00:08
Filip Rembiałkowski wrote: > > RAISE EXCEPTION presently always generates the same SQLSTATE code, > P0001, no matter what message it is invoked with. It is possible to > trap this exception with EXCEPTION ... WHEN RAISE_EXCEPTION THEN ... > but there is no way to tell one RAISE from another. > [http://www.postgresql.org/docs/8.2/s...ql-errors-and- > messages.html] > >> Próbowałem wywnioskować cos na podstawie wartości >> sqlState wyjątku - jednak nie mogę znaleźć w dokumentacji opisów tych >> statusów... > http://www.postgresql.org/docs/curre...-appendix.html Hey!
Dzięki za odpowiedź - była bardzo pomocna! Nie wiem jakim cudem nie udało mi się znaleźć listy errorcodes w dokumentacji. ;-)
Zastanawiam się jeszcze tylko nad jedną sprawą, czy pobierając wartość SQLException.getMessage mam gwarancje, że będzie ona zawsze taka sama w takiej samej sytuacji? Chodzi mi o wersje językowe oraz o wersję bazy danych i sytuacje np naruszenia takich samych constraintów.
Problem rozwiązałem po prostu paroma wyrażeniami regularnymi które z wartości wyjątka SQLException.getMessage wyciągają co trzeba oraz na podstawie SQLException.getSQLState generują mi już odpowiednie wyjątki w moim systemie - boję się jednak, że takie rozwiązanie będzie mało odporne na zmiany treści komunikatów wynikającej ze zmiany bazy danych na np nowszą wersję... -- Kind regards, http://www.Juliusz.Cwiakalski.com/
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
[PostgreSQL] - jak =?ISO-8859-2?Q?zabezpieczy=E6_interesy_tw?==?ISO-8859-2?Q?=F3rcy_systemu_=3F=3F=3F?=
postgresql - int/int
postgresql Select count(*) czy raczej Select count(ID)
[PostgreSQL] jak =?ISO-8859-2?Q?pobra=E6_warto=B6=E6_zwracan?==?ISO-8859-2?Q?=B1_przez_funkcj=EA=3F?=
[postgresql] INSERT OR UPDATE - jak =?ISO-8859-2?Q?b=EAdzie_na?==?ISO-8859-2?Q?jlepiej=3F?=
[postgresql] kilka =?ISO-8859-2?Q?rekord=F3w_subquery_jako_?==?ISO-8859-2?Q?string?=
[PostgreSQL] Jak =?ISO-8859-2?Q?po=B3=B1czy=E6_funkcje_z_w?==?ISO-8859-2?Q?idokiem?=
Postgres - replikcja master-master
Dopasowanie do "najlepszego" dopasowania :) [ PostgreSQL]
Problemy z =?ISO-8859-2?Q?instalacj=B1_PostgreSQL_na_syste?==?ISO-8859-2?Q?mach_Windows?=
zanotowane.pldoc.pisz.plpdf.pisz.plwawa19wwa91.pev.pl
Cytat
Decede mihi sole - nie zasłaniaj mi słonca. Gdy kogoś kochasz, jesteś jak stworzyciel świata - na cokolwiek spojrzysz, nabiera to kształtu, wypełnia się barwą, światłem. Powietrze przytula się do ciebie, choćby był mróz, a ty masz w sobie tyle radości, że musisz ją rozdawać wokoło, bo się w tobie nie mieści Hoc fac - tak czyń. A tergo - od tyłu; z tyłu. I czarne włosy posiwieją. Safona |
|