Dominik Cebula

Dominik Cebula Programista Java,
JavaEE

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

witam

Jak sprawdzić czy ktoś jest zalogowany do danej bazy danych w Firebird/Interbase?
Może być przez jakieś zapytanie, może być przez komponenty Interbase Admin lub jeszcze w jakiś inny sposób.Dominik Cebula edytował(a) ten post dnia 09.10.08 o godzinie 18:13
Piotr B.

Piotr B. development engineer

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

W komponencie TIBServerProperties musisz dać FetchDatabaseInfo i masz wtedy dostęp m.in. do właściwości DatabaseInfo.NoOfAttachments.
Pamiętaj tylko o swoim własnym połączeniu ;)
Dominik Cebula

Dominik Cebula Programista Java,
JavaEE

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

dzięki :)

gdyby ktoś miał kiedyś podobny problem to tutaj jest kawałek kodu:
IBServerProperties1.ServerName:=Database.Text;
IBServerProperties1.Params.Clear;
IBServerProperties1.Params.Add('user_name='+User.Text);
IBServerProperties1.Params.Add('password='+Pass.Text);
IBServerProperties1.Active:=true;
IBServerProperties1.FetchDatabaseInfo;
if IBServerProperties1.DatabaseInfo.NoOfAttachments>0 then
begin
// ktos jest podlaczony do bazy
IBServerProperties1.Active:=false;
end;Dominik Cebula edytował(a) ten post dnia 10.10.08 o godzinie 10:09
Piotr B.

Piotr B. development engineer

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Dominik Cebula:
if IBServerProperties1.DatabaseInfo.NoOfAttachments>0 then

Właśnie o tym pisałem, żebyś uważał na swoje własne połączenie ;) w warunku powinieneś dać > 1
Dominik Cebula

Dominik Cebula Programista Java,
JavaEE

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

specjalnie zostało >0, w ten sposób zmuszam użytkownika aby odłączył się od bazy danych
Wojciech Kłujszo

Wojciech Kłujszo Poszukuję ambitnych
i ciekawych zadań :)

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Ps. Używaj WITH dzięki niemu kod staje się bardziej czytelny :)
Piotr B.

Piotr B. development engineer

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Żartujesz.
'with' jest najgorszym wynalazkiem Pascala. Po pierwsze, widziałem już takie konstrukcje zagnieżdżone, że na prawdę nie było wiadomo, czyja metoda jest wywoływana, po drugie bardzo ciężko się toto debuguje, po trzecie bardzo łatwo o popełnienie błędu przy wywoływaniu różnych metod i na zakończenie po czwarte: "całkiem przypadkiem" możesz doprowadzić do wycieku pamięci... zwłaszcza, gdy użyjesz konstrukcji typu:
with TSiakasKlasa.Create do

Postuluję o wyrzucenie z języka słowa 'with' ;p
Piotr M.

Piotr M. programista

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Z pkt 2 i 3 można się zgodzić, ale jak dla mnie w praktyce są to mało istotne argumenty. Odnośnie pkt 1 to cóż, jak sobie pościelesz, czy jak Ci ktoś pościeli, to tak się wyśpisz. Odnośnie pkt 4, głupio pytać ale słyszałeś o try..finally?... ;->

A poza tym, jeśli with używamy z funkcją|getterem to ta funkcja|getter wywołana zostanie tylko raz, warto o tym wiedzieć.

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Ja tam z miejsca zakazuje każdemu świeżakowi, który przychodzi do firmy, używania IBDataSet i With :]

Jak to kiedyś powiedział Tomasz Lis: "krzysiu, wyp... to with. Nie ma k.. tego with '

PozdrawiamPrzemysław Daniel Matuszczak edytował(a) ten post dnia 22.10.08 o godzinie 04:13

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Dominik Cebula:
specjalnie zostało >0, w ten sposób zmuszam użytkownika aby odłączył się od bazy danych

Twoje połączenie także się liczy więc użytkonik nigdy się nie zaloguje ponieważ ilośc połączeń zawsze będzie większa od zera.
Tak jak Piotr napisał powinno być > 1.

Można też sprawdzić czy konkretny użytkownik nie jest już przypadkiem zalogowany poprzez wykorzystanie ' current_user '

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Piotr F.:
Z pkt 2 i 3 można się zgodzić, ale jak dla mnie w praktyce są to mało istotne argumenty. Odnośnie pkt 1 to cóż, jak sobie pościelesz, czy jak Ci ktoś pościeli, to tak się wyśpisz. Odnośnie pkt 4, głupio pytać ale słyszałeś o try..finally?... ;->

A poza tym, jeśli with używamy z funkcją|getterem to ta funkcja|getter wywołana zostanie tylko raz, warto o tym wiedzieć.

No tak, tylko jeśli się pracuje z bazami danych i korzystasz z FieldByName, ParamByName i masz zagnieżdżone with w stylu with query1 , with query2, with query3, with query4 to powodzenia w dochodzeniu które Field... albo Param... odnosi się do którego query, zwłaszcza gdy obiekty tworzone są dynamicznie :]

Generalnie może szybko się pisze korzystając z with bo mniej pisania, ale jak masz za pół roku wrócić do tego kawałka kodu i go przeanalizować to się pochlastać można. Nie wspomnę już o debugowaniu kodu pisanego w ten sposób przez innego programistę. Masakra.

A może to jest tylko kwestia przyzwyczajenia ? Wszak każdy programista ma swój styl pisania i swoje własne nawyki.
Piotr M.

Piotr M. programista

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Przemysław Daniel Matuszczak:
No tak, tylko jeśli się pracuje z bazami danych i korzystasz z FieldByName, ParamByName i masz zagnieżdżone with w stylu with query1 , with query2, with query3, with query4 to powodzenia w dochodzeniu które Field... albo Param... odnosi się do którego query, zwłaszcza gdy obiekty tworzone są dynamicznie :]

To jest idealny przykład na to jak-nie-korzystać-z-with. Każdy, nawet najmniej doświadczony programista, który stworzył takiego dziwoląga prędzej czy później przekona się sam w co się wpakował i ile faktycznie czasu na tym zaoszczędził... wszystkiego trzeba używać z głową.

Temat: Firebird/Interbase - sprawdzanie czy ktoś jest zalogowany

Piotr F.:
Przemysław Daniel Matuszczak:
No tak, tylko jeśli się pracuje z bazami danych i korzystasz z FieldByName, ParamByName i masz zagnieżdżone with w stylu with query1 , with query2, with query3, with query4 to powodzenia w dochodzeniu które Field... albo Param... odnosi się do którego query, zwłaszcza gdy obiekty tworzone są dynamicznie :]

To jest idealny przykład na to jak-nie-korzystać-z-with. Każdy, nawet najmniej doświadczony programista, który stworzył takiego dziwoląga prędzej czy później przekona się sam w co się wpakował i ile faktycznie czasu na tym zaoszczędził... wszystkiego trzeba używać z głową.

I tu jest całe sedno sprawy. Z głową Panowie, z głową :)
PS.To był przykład z życia wzięty.

Następna dyskusja:

Delphi.NET - jest tu ktos? :-)




Wyślij zaproszenie do