Narzędzia użytkownika

Narzędzia witryny


ewdsql

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Poprzednia wersja
Nowa wersja
Poprzednia wersja
ewdsql [2014/10/23 13:39]
t.zoltak [3. Przy zapisie do bazy korzystamy z transakcji]
ewdsql [2015/09/06 23:20]
t.zoltak [2. Dbamy o poprawne zakończenie połączenia]
Linia 16: Linia 16:
 Ponieważ pakiet //RODBC// nie umożliwia wykonywania zapytań parametrycznych (gdzie parametry zapytania są oddzielone od jego treści, a więc nie da się zmienić treści zapytania za pomocą jego parametrów),​ stworzone zostało jego rozszerzenie //​**RODBCext**//,​ które udostępnia stosowne funkcje i należy z niego korzystać. Ponieważ pakiet //RODBC// nie umożliwia wykonywania zapytań parametrycznych (gdzie parametry zapytania są oddzielone od jego treści, a więc nie da się zmienić treści zapytania za pomocą jego parametrów),​ stworzone zostało jego rozszerzenie //​**RODBCext**//,​ które udostępnia stosowne funkcje i należy z niego korzystać.
  
-===== 2. Przechwytujemy błędy i dbamy o poprawne zakończenie połączenia =====+===== 2. Dbamy o poprawne zakończenie połączenia =====
  
-Jeśli funkcja operująca na bazie danych sama otwiera połączenie z bazą, powinna też zadbać o jego zamknięcie. **Także wtedy, jeśli w trakcie jej wywołania nastąpi błąd.** Aby to osiągnąć,​ wystarczy zastosować ​(funkcję ​TryCatch()*:+Jeśli funkcja operująca na bazie danych sama otwiera połączenie z bazą, powinna też zadbać o jego zamknięcie. **Także wtedy, jeśli w trakcie jej wywołania nastąpi błąd.** Aby to osiągnąć,​ wystarczy zastosować funkcję ​//on.exit()//:
  
 <​code>​ <​code>​
-tryCatch+moja_funkcja = function(...){ 
-  ​+  P = odbcConnect('​mojeZrodloODBC'​
-    ​P = odbcConnect(zrodloDanychODBC) +  ​on.exit(odbcClose(P)
-    kod korzystający z bazy +  ... 
-  ​}, +}
-  error = stop,  # względnie jakaś inna/​własna funkcja, która błąd obsłuży +
-  finally = odbcClose(P) +
-)+
 </​code>​ </​code>​
  
ewdsql.txt · ostatnio zmienione: 2015/09/06 23:20 przez t.zoltak