Istnieje standardowy sposób dostępu do danych w bazach danych różnych typów ... jest to interfejs ODBC
ODBC = Open DataBase Connectivity
ODBC pozwala na jednolity dostęp do "danych tabelarycznych" znajdujących się w:
Interfejs ODBC składa się z "managera sterowników" oraz ze "sterowników" dla każdego DBMS-u..
W ODBC definiuje się tzw źródła danych...
Jak się definiuje źródło danych ODBC ?
Jest możliwy dostęp do bazy danych Access-u poprzez przeglądarkę WWW ...
Potrzebny jest serwer WWW z wbudowaną obsługą jednej z technologii:
Wszystkie wymienione "technologie" działają następująco:
Rysunek przedstawiający architekturę 3-rzędową aplikacji wykorzystującą serwer WWW z obsługą stron JSP:
JSP (= Java Server Page)
W technologii JSP wstawki do stron WWW piszemy w języku Java ...
Java to bardzo rozbudowany język i środowisko programistyczne;
obecnie używa się "Java 2" i środowiska programistycznego JDK 1.4.1;
JDK=Java Development Kit;
JDK jest dostępne za darmo (patrz: http://www.sun.com);
programy w języku Java są przenośne, tj mogą bez żadnych zmian być
uruchamiane na różnych platformach sprzętowych i różnych systemach operacyjnych.
W języku Java jest możliwy dostęp do baz danych przy pomocy JDBC;
(JDBC to składnik środowiska Javy bardzo podobny do ODBC)
w szczególności jest możliwy dostęp do wszystkich baz
danych
dla których zdefiniowano źródło danych ODBC.
Przykład 1 prostej strony JSP;
w przykładzie tym widać jak ostateczna postać strony zależy od kodu
w języku Java;
<html> <head> <title>eksperymenty z JSP ...</title> </head> <body> To jest eksperyment z JSP ... <BR> To jest eksperyment z JSP ... <BR> To jest eksperyment z JSP ... <BR> To jest eksperyment z JSP ... <BR> <% // to jest wstawka JSP int i; // deklarujemy zmienna "i" typu integer i = sprawdzamyPewienWarunek(); // funkcja zwracająca 0 lub 1 %> <% if ( i==1 ) {%> Ten tekst się pojawi jeśli "i" jest równe 1 <BR> <% } else { %> Ten tekst się pojawi jeśli "i" jest różne od 1 <BR> <% } %> </body> </html>
Przykład 2 strony JSP odwołującej się do bazy danych: "sql01.jsp_";
w przykładzie tym:
Zadanie 33
Wykonamy eksperyment w którym baza danych Access-u staje się
dostępna poprzez stronę WWW; dokładniej, jest możliwe oglądanie zawartości
tabeli o nazwie "tabela1"; modyfikowanie tabeli przez stronę to trudniejsza
sprawa ...
[serwer] jakie oprogramowanie musimy zainstalować ?
[serwer] co musimy zrobić ?
[klient] jakie oprogramowanie musimy zainstalować ?
[klient] co musimy zrobić ?
Można umieścić plik *.mdb w dzielonym katalogu w lokalnej sieci komputerowej i wtedy kilku użytkowników może go otworzyć i pracować równocześnie w tej same bazie ...
Jeśli użytkownik otworzył tabelę i rozpoczął modyfikowanie pewnego rekordu to rekord ten może zostać zablokowany (jeśli sobie tego zażyczymy). Oznacza to że inni użytkownicy nie będą mogli modyfikować tego rekordu (ale mogą modyfikować inne rekordy tej samej tabeli !).
Dygresja: w poprzednich wersjach Access-u tabela była podzielona na tzw. strony (o rozmiarze 2KB) i na jedną stronę mogło przypadać kilka rekordów, po rozpoczęciu modyfikacji danego rekordu była blokowana cała jego strona i wszystkie znajdujące się na niej rekordy.
Uwaga: aby można było modyfikować rekordy tabel użytkownicy muszą mieć prawo modyfikowania udostępnionego pliku *.mdb; (w Windows XP: prawy guzik myszy na folderze | Udostępnianie | Udostępnianie i zabezpieczenia w sieci | Udostępnij ten folder + Zezwalaj użytkownikom sieciowym na zmianę moich plików [w WinXP warto utworzyć nowy katalog np na pulpicie i w nim umieścić dzielone pliki ...]).
Zadanie 34
Niech wszyscy użytkownicy otworzą bazę "np04.mdb" udostępnioną
w sieci, i niech rozpoczną modyfikowanie rekordów tabeli Towary -
zaobserwujemy efekt blokowania rekordów ...
Jeśli tabelę modyfikuje się poprzez formularz to można precyzyjnie
ustawić sposób blokowania rekordów.
We właściwościach formularza (zakładka Dane)
można ustawić właściwość "Blokowanie rekordów" na następujące sposoby:
Wypróbuj te możliwości przy pomocy bazy "np04.mdb" udostępnionej w sieci;
Uwaga: najlepiej użyj formularza typu arkusz danych (który
wizualnie nie różni się od "czystej" tabeli) !.
Zadanie 35
menu Plik | Pobierz dane zewnętrzne | Połącz tabele
i wybrać obcy (czyli "sieciowy") plik mdb.
Zadanie 35a
menu Narzędzia | Narzędzia bazy danych | Rozdzielacz bazy danych
jeśli rozdzielamy bazę "np04.mdb" to powstanie dodatkowa baza "np04_wb.mdb"
zawierająca tylko tabelki, natomiast w "np04.mdb" tabele zostaną zastąpione
tabelami przyłączonymi pochodzącymi z "np04_wb.mdb". Tak więc plik "np04.mdb"
należy skopiować na komputery wszystkich użytkowników natomiast "np04_wb.mdb"
należy udostępnić w sieci.
Wypróbuj tę możliwość ...
Uwaga: jeśli zmieni się lokalizacja pliku "np04_wb.mdb" przez co tabele przyłączone przestaną działać to można tę lokalizację naprawić przy pomocy:
menu Narzędzia | Narzędzia bazy danych | Manager tabel połączonych
trzeba tam zaznaczyć wszystkie przyłączone tabele i następnie wybrać nową lokalizację pliku "np04_wb.mdb".
Zadanie 35b
Jakie wady ma wielodostęp do bazy
danych poprzez udostępniony w sieci plik mdb ??? ... zastanówmy się |
Serwer SQL (zwany także serwerem baz danych) to DBMS z którym ...
Access potrafi komunikować się z bazami danych dostępnymi poprzez
interfejs
ODBC,
w szczególności z serwerami SQL dostępnymi przez ten interfejs ...
Można przyłączyć do Access-u tabelę znajdującą się na serwerze baz danych dostępnym przez ODBC w następujący sposób:
menu Plik | Pobierz dane zewnętrzne | Połącz tabele | Plik typu "ODBC Databases()"
i wybrać odpowiednie źródło danych ...
Zadanie 36
Spróbuj przyłączyć do Access-a tabele z bazy "Emploee" znajdującej
się na serwerze InterBase.
Serwer "InterBase 7" jest już zainstalowany ...
Na komputerze "klienta" musi być zainstalowany:
Wskazówka: jak się definiuje źródło danych ODBC ?
Zadanie 37
Zbadaj jak działa blokowanie rekordów w tabelach przyłączonych pochodzących z
serwera SQL. Do modyfikowania przyłączonych tabel użyj formularza typu arkusz
danych z
Blokowanie rekordów= Edytowany rekord.
Uwaga: okazuje się
że w przypadku przyłączonych tabel z serwera SQL blokowanie rekordu nie działa
!.
Jeśli zaczęliśmy modyfikować dany rekord i chcemy zapisać zmiany, a w
międzyczasie ktoś inny zmodyfikował nasz rekord, to Access proponuje nam 2
możliwości:
Można używać serwera SQL w inny sposób niż "tabele przyłączone" ...
Można przekazywać polecenia SQL bezpośrednio do serwera SQL przy pomocy tzw kwerend przekazujących.
"MS Access Jet" nie będzie wtedy dokonywał żadnych tłumaczeń czy interpretacji
poleceń SQL;
trzeba używać dialektu SQL-a stosowanego przez serwer !.
Opisy języka SQL serwerów InterBase i Postgres ... |
Opisy serwera Postgres i inne źródła ... |
Uwaga: są różnice między językiem SQL Jet-a (Access-u), a językiem SQL serwerów Postgress i InterBase ... |
Zadanie 37
Utwórz własną tabelę w bazie danych "Employee" na serwerze IB.
Zrób to przy pomocy odpowiedniej "kwerendy przekazującej SQL".
Uwaga: definiując kwerendę przekazującą trzeba określić następujące
właściwości kwerendy::
Wskazówki do zadania 37:
można wprowadzić takie polecenie:
create table tab01 ( t1 char(10), t2 char(10), t3 char(10), t4 char(10), n1 numeric, n2 numeric, n3 numeric, n4 numeric, id integer not null, ole_ob blob, primary key (id) )
Uwaga: każda osoba powinna podać inny nr w nazwie tabeli !!!
Zadanie 37a
Dodaj kilka rekordów do tej tabeli przy pomocy polecenia SQL "INSERT ..."
(patrz opis
języka SQL)
Zadanie 37b
Zobacz zawartość tabeli "Tab01" na dwa sposoby:
Zadanie 37c
Zdefiniuj kwerendę przekazującą modyfikującą dane w Tab01 (w dowolny sposób, np
mnożąc liczbę przez 2 lub dopisując "!" na koniec pola tekstowego) przy pomocy
polecenia SQL "UPDATE ..." (patrz opis
języka SQL).
Uwaga: zwróć uwagę na różnicę w językach SQL Jet-a i
IB ...
przykładowo do konkatenowania czyli łączenia stringów służy w IB symbol "||":
select FIRST_NAME || " - " || LAST_NAME as IMIE_NAZWISKO from EMPLOYEE order by LAST_NAME;
w języku SQL Jet-a to polecenie wyglądało by tak:
select FIRST_NAME & ' - ' & LAST_NAME as IMIE_NAZWISKO from EMPLOYEE order by LAST_NAME;
Postgres (lub PostgreSQL) jest serwerem pracującym pod systemem operacyjnym Linux.
Zanim będzie go można używać trzeba:
Aby Postgres mógł być używany z sieci trzeba:
Z punktu widzenia klienta używanie Postgresu jest łatwiejsze niż IB, wystarczy zainstalować:
Zadanie 38
Przyłącz do Accesu tabele z bazy danych na serwerze Postgres i przeprowadź
kilka podobnych eksperymentów jak te przeprowadzane z serwerem IB.
.............................................
.............................................
.............................................
Zadanie ?? (*)
Wypróbuj działanie strony JSP z serwerem SQL który znajduje się na innej
maszynie niż serwer WWW serwer
WWW używał pliku mdb i Jet-a znajdujących się na tej samej maszynie).
Wskazówka: Zmodyfikuj odpowiednio stronę jsp z zadania 44.
Zadanie ?? (**, niedokończone ...)