Sterownik Mediator nie poprzestaje na zapewnieniu zgodności ze sterownikami DBFNTX i DBFCDX. Ogromną zaletą rozwiązania jest udostępnienie programistom na poziomie języka xBase mechanizmów SQL oferowanych przez bazę danych.
Transakcyjność
Jedną z najlepszych cech serwerów SQL są transakcje zapewniające spójność logiczną modyfikowanych danych. Domyślnie, sterownik Mediatora pracuje w trybie auto-commit, czyli wprowadzone zmiany są automatycznie zatwierdzane na poziomie rekordu. Zapewnia to 100% zgodność z zachowaniem standardowych sterowników.
Wprowadzając niewielkie modyfikacje w aplikacji można w pełni wykorzystać zalety systemu transakcyjnego. Do tego celu służą następujące polecenia dostępne w pliku mediator.ch:
BEGIN TRANSACTION - rozpoczęcie transakcji
COMMIT TRANSACTION - zakończenie transakcji z zatwierdzeniem wszystkich zmian
ROLLBACK TRANSACTION - zakończenie transakcji z wycofaniem wprowadzonych zmian
Wykonywanie poleceń SQL
Mediator udostępnia kilka funkcji umożliwiających wysyłanie do serwera SQL przygotowanych przez programistę komend SQL. Komendy SQL zwracające wiele rekordów wyniku należy wykonywać korzystając z instrukcji USE qry AS 'SELECT ...', która to wysyła do bazy podane zapytanie SQL i udostępnia jego wynik w postaci otwartego obszaru roboczego zawierającego rekordy wyniku.
Przykład:
USE zap1 AS 'select imie, nazwisko, sum(wyplata) as sw from wyplaty group by imie,nazwisko'
While .not. eof()
? IMIE, NAZWISKO, SW
SKIP
enddo
W podanym przykładzie wynik zwracany jest jako zbiór rekordów READ-ONLY, który może być przeglądany tylko do przodu. Używając opcji SCROLLABLE lub PERMANENT, można umieścić wynik w tablicy, co daje pełną możliwość nawigacji i zachowania wyniku na później.
W przypadku jeżeli mamy pewność, że zapytanie SQL zwróci tylko jedną wartość, lepiej skorzystać z funkcji MedSelVAL(). Unikniemy w ten sposób narzutu tworzenia nowego obszaru roboczego.
Przykład:
Suma_wypl = MedSelVal('select sum(wyplata) from wyplaty')
Polecenia SQL które nie zwracają wyniku należy wykonywać korzystając z funkcji MedExecSQL().
Przykład:
Wyn = MedExecSQL('create table test ( f1 char(10), f2 number(10,2) )')