• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Czy statementy trzeba zamykać? i dlaczego?

Object Storage Arubacloud
0 głosów
367 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)
Witam! Jak w temacie czy trzeba zamykać statementy? W sumie żadnego jak do tej pory nie zamykałem, tylko resultsety i na końcu connection. A statement? Jak to z nim jest

1 odpowiedź

0 głosów
odpowiedź 6 czerwca 2018 przez RafalS VIP (122,820 p.)
edycja 6 czerwca 2018 przez RafalS

Bo nie masz gwarancji, że różne zasoby otwarte w bazie danych zostaną zamknięte. Np ResultSet jest obsługiwany przez jeden kursor w bazie danych. Zamknięcie samego połączenia teoretycznie powinno zamknąć też wszystkie zasoby, jednak nie zawsze się to dzieje i ponoć Oracle miało z tym problemy. Dlatego bezpieczniej jest zamykać wszystkie statementy a potem connection. Co może się stać jeśli tego nie zrobisz? Np: 

java.sql.SQLException: - ORA-01000: maximum open cursors exceeded

W przypadku gdy otwierałbyś wiele statementów i ich nie zamykał.

PS niektórzy sugerują nawet zamykanie ResultSetów tak szybko jak nie będa nam już potrzebnemimo, że zamknięcie Statementu niejawnie zamknie też ResultSet - umożliwia to garbage collectorowi zwolnienie pamięci, bo skompilkowane zapytania mogą dużo zajmować.

komentarz 6 czerwca 2018 przez Adrian Paź Obywatel (1,270 p.)
a widzisz a ja zamykałem wszystkie resultsety (bo na kilku stronach czytałem że właśnie connection i resultset trzeba zamykac) ech nie umiesz czegos czytasz uczysz sie a i tak zle xd ok dzieki to teraz będę zamykał bo mam ich otwartych chyba z 10 :D
komentarz 6 czerwca 2018 przez RafalS VIP (122,820 p.)
Dla bezpieczeństwa zamykaj wszystko :P
komentarz 6 czerwca 2018 przez RafalS VIP (122,820 p.)
Znalazłem nawet dokument od Oracla gdzie piszą, że "You should explicitly close Statements, ResultSets, and Connections when you no longer need them, unless you declare them in a try-with-resources statement":

https://docs.oracle.com/javadb/10.8.3.0/devguide/cdevconcepts839085.html
komentarz 6 czerwca 2018 przez Adrian Paź Obywatel (1,270 p.)
try-catch with resources hah :d wiem o tym ale nigdy nie uzywam :d ciagle zapominam ze to istnieje ^^

Podobne pytania

0 głosów
1 odpowiedź 128 wizyt
pytanie zadane 7 marca 2022 w C# przez Nabuchadonozor Gaduła (3,120 p.)
0 głosów
2 odpowiedzi 179 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)
0 głosów
0 odpowiedzi 78 wizyt
pytanie zadane 6 czerwca 2018 w SQL, bazy danych przez Adrian Paź Obywatel (1,270 p.)

92,551 zapytań

141,399 odpowiedzi

319,531 komentarzy

61,938 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...