ADO i transakcje
pol - 30-01-2006 10:32
ADO i transakcje
Witam wszystkich. Czy może ktoś mi z grubsza wyjaśnić kiedy i jak stosować transakcje w ADO?? Dzięki & pozdrawiam
pol - 30-01-2006 10:32
czy ma sens cos takiego?? DM1->ADOConnection1->BeginTrans();//uruchom mechanizm transakcji
try
{//przekazanie daty rozpoczęcia,zakończenia i nazwy do do komponentu ADOcommand dodającego nowy projekt do bazy
DM1->adocDodajProjekt->Parameters->ParamByName("DATA_ROZPOCZECIA")->Value=data1;
DM1->adocDodajProjekt->Parameters->ParamByName("DATA_ZAKONCZENIA")->Value=data2;
DM1->adocDodajProjekt->Parameters->ParamByName("NAZWA")->Value=nazwa;
DM1->adocDodajProjekt->Execute(); //wykonanie polecenia SQL
DM1->ADOConnection1->CommitTrans();//zatwierdzenie wszystkich czynności
DM1->ADSetbpr->Close(); // odswieżenie ekranu
DM1->ADSetbpr->Open(); //
Form8->Close(); //zamknięcie formularza
ShowMessage("Projekt zostal dodany");//wyświetlenie inf. o dodaniu proj
}
catch(Exception &E)//jeśli nie wszystko przebiegło właściwie
{
DM1->ADOConnection1->RollbackTrans(); //odwołanie wszystkich czynności
}
}
}
Jest tutaj wykonywane tylko jedno polecenie SQL(insert) wiec czy ma sens stosowanie mechanizmu transakcji??
Pozdrawiam
Artur Muszynski - 30-01-2006 10:32
> Jest tutaj wykonywane tylko jedno polecenie SQL(insert) wiec czy ma sens > stosowanie mechanizmu transakcji??
Nie ma. Pojedyncze polecenia SQL są niepodzielne.
artur
szaman - 03-02-2006 09:53
>Jest tutaj wykonywane tylko jedno polecenie SQL(insert) wiec czy ma sens >stosowanie mechanizmu transakcji??
Ma (mimo, że jest niepodzielne) ponieważ jak nie zakończysz tranzakcji to znaczy, że kiedy ją zakończysz na koniec działania programu ?! Ponadto zamykanie tranzakcji powinno spowodować, że zmaiana zostanie w sposób trwały zapisana (na dysku) i jeżeli właśnie na tym Ci zależy to zamykaj. Poza tym jest jeszcze wiele wariantów i możliwości związanych z tranzkcjami o czym powinieneś poczytać, a napewno o poziomach izolacji - np. co się z nimi wiąże jeżeli właśnie nie zamkniesz tranzakcji.
To o czym piszę jest niezależne od tego czy to ADO czy inne komponenty. -- {67B14976-ABB4-4A3B-869B-84B5CCA1F569} http://www.usenet.pl/opisy/pl.comp.bazy-danych
Grzesiek G. - 03-02-2006 09:53
szaman napisał(a): >>Jest tutaj wykonywane tylko jedno polecenie SQL(insert) wiec czy ma sens >>stosowanie mechanizmu transakcji?? > > > Ma (mimo, że jest niepodzielne) ponieważ jak nie zakończysz tranzakcji > to znaczy, że kiedy ją zakończysz na koniec działania programu ?! > Ponadto zamykanie tranzakcji powinno spowodować, że zmaiana zostanie w > sposób trwały zapisana (na dysku) i jeżeli właśnie na tym Ci zależy to > zamykaj. Poza tym jest jeszcze wiele wariantów i możliwości związanych > z tranzkcjami o czym powinieneś poczytać, a napewno o poziomach > izolacji - np. co się z nimi wiąże jeżeli właśnie nie zamkniesz > tranzakcji.
Dwie odpowiedzi - dwie opinie. Przychylam się do pierwszej - stosowanie tranzakcji tu nie ma tu sensu. Myślę, że problemem pytającego nie jest sens zamykania tranzakcji, ale czy ją wogóle otwierać.
Pozdrawiam
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
szaman - 03-02-2006 09:54
>Dwie odpowiedzi - dwie opinie. Przychylam się do pierwszej - stosowanie >tranzakcji tu nie ma tu sensu. Myślę, że problemem pytającego nie jest >sens zamykania tranzakcji, ale czy ją wogóle otwierać.
Zrobisz jak zechcesz - myślę jednak, że przez pewien czas to same gnioty będziesz produkował.
-- {67B14976-ABB4-4A3B-869B-84B5CCA1F569} http://www.usenet.pl/opisy/pl.comp.bazy-danych
Grzesiek G. - 03-02-2006 09:54
szaman napisał(a): >>Dwie odpowiedzi - dwie opinie. Przychylam się do pierwszej - stosowanie >>tranzakcji tu nie ma tu sensu. Myślę, że problemem pytającego nie jest >>sens zamykania tranzakcji, ale czy ją wogóle otwierać. > > > Zrobisz jak zechcesz - myślę jednak, że przez pewien czas to same > gnioty będziesz produkował.
Czy zechcesz mi wyjaśnić dlaczego tak myślisz?
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
szaman - 03-02-2006 09:54
>Czy zechcesz mi wyjaśnić dlaczego tak myślisz?
O jaki serwer chodzi i czy wogóle o serwer? Bo jeżeli o serwer to chyba nie musze TŁOMACZYĆ a jeżeli nie o serwer to nie chce mi sie przeglądać jak w innych ale dla MSAccess będzie to również gniot. Chyba, że zastosujesz autocomit przy rzeczywiście bardzo prostych instrukcjach SQL - no ale przecież to już jest używaniem transakcji co sugerujesz nie robić.
Uważam, że to co napisałeś jest bardzo szkodliwe - przecież czytają tą grupę naprawdę początkujący, a Ty na domiar złego napisałeś to jako odpowiedź na pytanie.
-- {67B14976-ABB4-4A3B-869B-84B5CCA1F569} http://www.usenet.pl/opisy/pl.comp.bazy-danych
Grzesiek G. - 03-02-2006 09:54
szaman napisał(a): >>Czy zechcesz mi wyjaśnić dlaczego tak myślisz? > > > O jaki serwer chodzi i czy wogóle o serwer? > Bo jeżeli o serwer to chyba nie musze TŁOMACZYĆ > a jeżeli nie o serwer to nie chce mi sie przeglądać jak w innych ale > dla MSAccess będzie to również gniot. Chyba, że zastosujesz autocomit > przy rzeczywiście bardzo prostych instrukcjach SQL - no ale przecież > to już jest używaniem transakcji co sugerujesz nie robić.
Sugerowałem brak zaczynania jawnego tranzakcji w przypadku, gdy jest to pojedynczy insert. Aczkolwiek przejrzałem jeszcze raz pytanie, i nie widzę tam pojedynczego INSERTa, którego podejrzewałem po odpowiedzi Artura (wogóle nie widzę SQLa). Zatem poprawiam się - kod C++ wygląda dobrze.
A brak jawnego rozpoczynania tranzakcji nie musi świadczyć o ich braku - mogą być np. obsługiwane przez DTC. Ale to już nie temat dla początkujących.
Pozdrawiam i proponuję OT, bo pytający wycofał się z dyskusji.
-- Grzegorz Gruza Odpowiadając usuń "spamerom_nie." z adresu!!!
zanotowane.pldoc.pisz.plpdf.pisz.pleffulla.pev.pl
|
=?iso-8859-2?q?=5BD=B3ugie=5D?= javax.transaction.SystemException z hibernate.
PL/pgSQL jak =?ISO-8859-2?Q?u=BFy=E6_transakcji=2E?=
[msssql, transact-sql] prosze o zapytanie ktore odzwierciedlistrukturę bazy
[MS SQL 2000] Jak przeniesc Transaction Log na inny server.
[MS SQL] System transakcyjny wybieranie kolejnych rekordow
[MS SQL]Log transakcji+restore+info
(MYSQL) INSERT INTO (table) SELECT * i transakcje
Mssql 2000 - replikacja transakcyjna + merge
MS SQL 2005 Logi transakcji.
[MSSQL2000] Wyłączenie transaction log
zanotowane.pldoc.pisz.plpdf.pisz.plnawschodzie.xlx.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 |
|