Używając wspólnego interfejsu programowania
|
|
- Sławomir Antczak
- 8 lat temu
- Przeglądów:
Transkrypt
1 PROGRAMOWANIE Pear::DB Moduł PEAR::DB Próbowanie gruszek Programowanie w językach wysokiego poziomu, jakich jak PHP, daje gwarancję, że kod może być wykorzystany przez wiele osób. Dlaczego nie zastosować tej zasady do programowania baz danych? Czy można jakoś pomóc użytkownikom platform, które nie obsługują MySQL? STEVEN GOODWIN Używając wspólnego interfejsu programowania API można sprawić, aby program mógł pracować z różnymi bazami danych bez potrzeby modyfikacji kodu źródłowego. W tym miesiącu Steven Goodwin próbuje tego dokonać przy pomocy modułu PEAR::DB (ang. pear gruszka). Cudowny moduł PEAR::DB jest modułem PHP umożliwiającym kontrolę nad bazą danych, bez potrzeby określenia, której bazy konkretnie używamy. Znaczy to, że ten sam kod może być użyty do dostępu zarówno do MySQL, jak i Oracle. Jak to działa? Kluczem do powodzenia jest stworzenie warstwy abstrakcji uniwersalnego systemu lub interfejsu programowego, tak żeby szczegóły implementacji pozostały niewidoczne. Większość z nas posługuje się po- Co to jest Pear? PEAR to skrót od PHP Extension and Application Repository (wydaje się, że niektórzy zamieniają tu Application na Add-on), jest to biblioteka dla kodu PHP, podobnie jak CPAN dla PERL. Oprócz modułów dla baz danych (DB) istnieje też kod obsługujący HTML, a także autoryzacje i szyfrowanie. niać nie tylko nazwy funkcji, ale także strukturę i format argumentów. Musimy również dostosować kody błędów. Odpowiedzią na problem jest oddzielenie specyficznej funkcji database_connect od określonej bazy i użycie wspólnych wywołań API. Należy to zrobić dla każdej funkcji przyporządkowanej do określonej bazy danych. Oczywiście wymaga to mnóstwo pracy. Całe szczęście, że ktoś to zrobił za nas! W PHP mamy kilka interfejsów programowych (API) dla baz danych. W tym artykule skupimy się na PEAR::DB, jednym z wielu dobrych modułów PEAR dostępnych pod adresem [1]. Znajduje się on w fazie aktywnego rozwoju prowadzonego przez kilku najważniejszych programistów projektu PHP. Obecna wersja uznawana za stabilną to Dla tych, którzy chcą porównać PERA::DB z konkurencją polecamy ADOdb [2], Metabajęciem abstrakcji, często nie zdając sobie z tego sprawy. Nawet programiści C zatwardziali przestępcy w świecie programowania, przez abstrakcję ułatwiają sobie życie. Każda funkcja, wyrażenie czy instrukcja, dzięki językowi C oddziela programistę od szczegółów sprzętowych procesora. Jest to jednak abstrakcja niskiego poziomu. Programowanie baz danych w języku SQL jest abstrakcją wysokiego poziomu. Baza typu MySQL, Postgre- SQL lub Oracle może pracować w dowolny sposób, według dowolnego algorytmu i używając dowolnych plików. Dzięki wykorzystaniu języka SQL nie musimy się martwić o szczegóły działania bazy, zamiast tego możemy poświęcić czas na ważniejsze zadania, jak tworzenie wydajnych zapytań typu inner join i select. Niestety, ten rodzaj abstrakcji nie przenosi się na sposób, w jaki programujemy bazę danych, ponieważ każda z nich ma jednak swóje własne API. W PHP możemy zainicjować dialog z bazą MySQL o nazwie fredbloggs przez użycie: $db = mysql_connect('localu host', myuser, mypass ); mysql_select_db('fredbloggs'); PostgreSQL wymaga abyśmy napisali: $db = pg_connect('host=localu host dbname=fredbloggs user=u myuser password=mypass'); Mimo że większość z tych parametrów jest opcjonalna, przenoszenie kodu pomiędzy bazami danych jest ciągle bolesne, każde polecenie connect, select i obsługa błędów muszą zostać przepisane na nowo, aby działały z inną bazą danych. Musimy zmie- 72 Maj
2 Pear::DB PROGRAMOWANIE se [3] oraz PHPlib [4]. Wykorzystanie MySQL było zbawieniem, a jednocześnie przekleństwem dla programistów PHP. Pozytywną stroną jest to, że MySQL jest zintegrowany z obecną instalacją PHP, co oznacza, że każdy bez większych problemów może wykonać dobrą stronę internetową opartą na bazie danych. Niestety z tego powodu wielu programistów nie dostrzega, że istnieją również inne bazy danych posiadające równie dobre wsparcie, jak to widać w Tabeli 2 (bazy danych obsługiwane przez PHP). Dodatkowe informacje na temat obecnej sytuacji można znaleźć w pliku docs/status. Mając na uwadze powyższe rozważania, artykuł będzie podążał najprostszą drogą od MySQL do PEAR::DB. Przyjrzymy się też prostemu przykładowi bazy danych kanałów telewizyjnych na stronie wygenerowanej za pomocą PHP. Misja specjalna Korzystanie z PEAR::DB polega właściwie na aktualizacji oprogramowania, dlatego wcześniej musimy dysponować już istniejącą aplikacją. Aby spełnić tę role powrócimy do tematu artykułu sprzed miesiąca i naszego maila do bramki wideo [5]. Zamiast zapisywać kanały TV jawnie w pliku wsadowym, umiejscowimy odnoszące się wpisy (stacje, kanały i nazwy) w niedużej bazie danych. Na początek wprowadzimy zrzut kodu SQL do bazy danych w standardowy sposób, zezwalając na dostęp odpowiedniemu użytkownikowi (na przykład www-data). Do bazy dostajemy się używając MySQL, tak jak na Listingu 2. W tym raczej prostym fragmencie kodu (dla przejrzystości usunięto kontrolę błędów) mamy nie mniej niż 5 oddzielnych odwołań do MySQL. Zamiast odwoływania się do tabeli tv.channels, niektórzy pewnie woleliby, żeby określić aktualną bazę, używając mysql_select_db('tv'); Działa to w ten sam sposób, jak polecenie use z linii komend MySQL, z tym że dodaje jeszcze jedno wywołanie MySQL. Po zmianie serwera bazy danych każde odwołanie do mysql musi zostać przepisane. Przy większej ilości funkcji i obsłudze większej ilości baz danych ilość powtórzeń w kodzie wzrasta. Zazwyczaj jedynym powodem zmian jest przenoszenie hosta bazy danych, użytkownika i hasła do oddzielnego pliku, np. dbase.inc. $dbhost = 'localhost'; $dbuser = 'www-data'; $dbpass = ''; $dbname = 'tv'; Ale to jeszcze nie wystarczy. Potrzebujemy warstwy abstrakcji, takiej jak PEAR::DB. Większość instalacji zawiera domyślnie bibliotekę PEAR::DB, zwykle w /usr/share/pear. Aby potwierdzić, czy instalacja zawiera pełny system wpisujemy, <?php require_once 'DB.php';?> Jeżeli nie, możemy użyć do instalacji PEAR Packet Manager (używając polecenia pear install DB) lub ręcznie, używając archiwum tar. Dalsze szczegóły co do procesu instalacji PEAR można znaleźć w podręczniku on- -line, znajdującym się pod adresem [6]. Alternatywnie można skopiować pliki do katalogu domowego (say ~/pear/) i zmienić ścieżkę dostępu PHP include. Będzie to konieczne, jeżeli nie mamy uprawnień root-a na komputerze, np. <?php ini_set('include_path', U '~/pear/lib'.path_separator.iniu _get('include_path'));?> Teraz mamy dostęp do nowych funkcji obsługi baz danych, zgodnych z konwencją nazw PEAR. Jak zacząć pracę z PEAR? Oczywistym miejscem są funkcje podstawowe, jak connect i close. W porównaniu do poprzednich wersji MySQL i PostgreSQL, PEAR::DB wymaga jedynie nieznacznej zmiany. Ponieważ inne bazy danych mogą wymagać mniej lub więcej parametrów, prosta funkcja zamiany, która zmieni nazwy parametrów nie będzie działać. Zamiast tego musimy określić nazwę źródła danych data source name, czyli DSN. Zbierzemy tym samym wszystkie możliwe argumenty do pojedynczego sformatowanego łańcucha znaków. Listing 1: Przykładowa baza danych TV CREATE DATABASE IF NOT EXISTS tv; USE tv; drop table IF EXISTS channels; CREATE TABLE channels ( station smallint(2) NOT NULL default '0', channel smallint(2) default NULL, name varchar(10) default NULL, PRIMARY KEY (station) ) TYPE=MyISAM; INSERT INTO channel VALUES (1,55,'TVP 1'); INSERT INTO channel VALUES (2,62,'TVP 2'); INSERT INTO channel VALUES (3,59,'TVN'); INSERT INTO channel VALUES (4,65,'Polsat'); INSERT INTO channel VALUES (5,37,'TVP4'); Listing 2: Dostęp przez MySQL function GetStationsList() $db = mysql_connect("localhost", "www-data", ""); $query = "SELECT * FROM tv.channels"; $result = mysql_query($query); while ($row = mysql_fetch_array($result, MYSQL_NUM)) print "$row[0] - $row[2] ($row[1])<br>"; mysql_free_result($result); mysql_close($db); Maj
3 PROGRAMOWANIE Pear::DB Format tego łańcucha wygląda następująco: phptype(dbsyntax)://username:u databasename DSN wygląda jak adres internetowy, określa, gdzie się połączyć i w jaki sposób określona baza danych ma być użyta oraz jakich opcji użyć podczas łączenia. Pierwsza część opisuje, jakiej bazy użyto i zawiera opis rodzaju bazy (określanego jako phptype, np.: mysql) oraz wszystkie specyficzne dla określonej bazy wymagania, podane w dbsyntax. Lista phptype jest pokazana w Tabeli 2. Często podawany przykład łańcucha dbsyntax jest nazwą odpowiedniego sterownika podczas używania bazy ODBC (access, db2, mssql). Nie jest to trudne do ustalenia, ale dotyczy bardziej użytkowników Windows, nie musimy więc dalej się tym zajmować. Druga część DSN zawiera wszystko, co jest niezależne od bazy danych, jak nazwa hosta, port, nazwa użytkownika i hasło. Tak jak w zwykłej funkcji mysql_connect, nie wszystkie parametry są obowiązkowe, w razie potrzeby mogą zostać opuszczone. Na przykład: mysql://www-data@localhost/tv Naturalnie nasz finalny kod zapisze te parametry we wspólnym pliku dbase.inc, tak jak to poprzednio pokazaliśmy. DSN nie musi być wyspecyfikowany jako łańcuch znaków. Może być także podany jako tablica, jak to zostało wyszczególnione w ramce -- DSN jako tablica. To rozwiązanie jest nieco szybsze, bo do inicjalizacji nie ma potrzeby pobierania żadnego łańcucha. DSN pozwala też określić opcje inicjujące przy użyciu zbliżonej do adresu internetowego metody?option1=value1&option2=value2. Dostępnych jest kilka opcji, które opisują zarówno praktyczne cechy dotyczące połączenia (użycie SSL), jak i te pomocne w programowaniu (kontrola wiadomości o błędach). DSN jako tablica $dsn = array( 'phptype' => mysql, 'hostspec' => localhost, 'database' => tv, 'username' => www-data, 'password' => ); $db = DB::connect($dsn); Ponieważ opcje te mogą się różnić między określonymi kwerendami, nie będziemy ich włączać do DSN. Zamiast tego utworzymy tablicę, która je wyszczególnia i przekażemy je osobno do funkcji DB::connect. $dsn = $dbbackend://$dbuseru bhost/$dbname ; $options = array( debug => 2); $db =& DB::connect($dsn, U $options); Opcje te mogą być w każdej chwili zmienione przez użycie funkcji: $db->setoption('debug', 0); Połączenie powinno działać (obsługą błędów zajmiemy się później), będziemy odtąd mieć do dyspozycji obiekt bazodanowy o nazwie $db, który używany jest we wszystkich innych wywołaniach tej bazy np. do zamykania bazy po użytkowaniu. $db->disconnect(); Następnie musimy przystąpić do przystosowania istniejących funkcji do użycia nowego obiektu i stowarzyszonych funkcji. Nie jest to trudne, ponieważ mają one bardzo zbliżone nazwy do ich oryginalnych wersji w MySQL. Zatem, na przykład mysql_query stanie się query, a mysql_fetch_array będzie fetchrow. Nasza podstawowa funkcja jest pokazana na Listingu 3. Czarne pudełko Ponieważ wszystkie zapytania do bazy przechodzą przez sterownik PEAR::DB, kod wewnątrz sterownika ma możliwość zmiany, a także narobienia bałaganu z zapytaniem. To konkretna cena za przenośność i uniwersalność. Poziom dopuszczalnej ingerencji można ustawiać w opcjach dotyczących przenośności, dostępnych w metodzie setoption, którą już widzieliśmy. Te kompromisy pomiędzy przenośnością i wydajnością w wielkim stopniu zależą od konkretnej aplikacji. Opcje te mogą być też użyte do obsługi starszego kodu przez PE- AR::DB. Według konwencji większość nazw tablic jest opisana małymi literami. Na przykład, jeżeli aplikacja próbuje pobrać dane używając mieszanych, małych i dużych liter, nazwy zostaną automatycznie przekonwertowane na małe litery: $db->setoption('portability', U DB_PORTABILITY_LOWERCASE); Usuwa to element niespodzianki, który pojawia się, gdy nieznany kod zawiesza aplikację. Inne opcje dostępne tutaj są podane w Tabeli 1. Domyślnie wszystkie te opcje są włączone dla zwiększenia wydajności, jednak od nas zależy, które z nich będą włączone. Istnieją też definicje dla DB_PORTABILITY_ALL i DB_PORTABILITY_NONE, które przełączają flagi. Przemieszczanie się w tłumie Nie wszystkie funkcje idą w kierunku uczynienia łatwiejszym dostępu do bazy danych. Na przykład fetchrow ułatwia pobieranie danych w formacie przyjaznym raczej dla programisty. PEAR::DB obecnie wspiera trzy takie formaty. Domyślnie będzie to tablica sortowana od zera, jak pokazano w przykładzie powyżej. Opcjonalny para- Listing 3: Konwencja nazw w PEAR function PearVersion() global $dbname, $dbhost, $dbuser, $dbbackend; $dsn = $dbbackend://$dbuser@$dbhost/$dbname ; $db =& DB::connect($dsn); $query = 'SELECT * FROM channels'; $result = $db->query($query); while ($row = $result->fetchrow()) print $row[0] $row[2] ($row[1])<br> ; $result->free(); $db->disconnect(); 74 Maj
4 Pear::DB PROGRAMOWANIE Opcja Tabela 1:Opcje zawiązane z przenośnością DB_PORTABILITY_LOWERCASE DB_PORTABILITY_RTRIM DB_PORTABILITY_DELETE_COUNT DB_PORTABILITY_NUMROWS DB_PORTABILITY_ERRORS DB_PORTABILITY_NULL_TO_EMPTY Opis metr w DB_FETCHMODE_ORDERED został w tym przykładzie pominięty. Jest to użyteczne do obsługi prostych baz danych lub wyświetlania tabel bez potrzeby znajomości nazw pól lub odniesień. W większości jednak sytuacji numeryczne indeksy nie są wystarczająco opisowe, możemy więc zażądać, aby rezultaty otrzymywać w skojarzonej tablicy. Kosztem uogólnień otrzymamy dużo łatwiejszy do analizy kod. while ($row = $result->fetchrowu (DB_FETCHMODE_ASSOC)) print $row['station'].' U '.$row['name'].' ('.$rowu ['channel'].')<br>'; W końcu fetchrow dostarcza sposobów na użycie zorientowanych obiektowo możliwości PHP do zwracania obiektu dla każdego wiersza tabeli wyników. Każda kolumna jest oznaczona jako własność obiektu. Tak jak poprzednio, sprawia to, że kod jest łatwiejszy do analizy, jednak możliwości zastosowania dla bardziej uniwersalnych aplikacji są ograniczone. while ($row = $result->fetchrowu (DB_FETCHMODE_OBJECT)) print $row->station.' U '.$row->name. ' ('.$row->u channel.')<br>'; Wykryć błąd Żaden program nie jest właściwie napisany, jeśli nie posiada obsługi błędów i dokumentacji. Rzeczy te nie fascynują programistów, ale są konieczne. Możliwości obsługi błędów w PEAR::DB zostały ujednolicone (choćby przez odpowiednie kody błędów) i wynikają z podstawowych możliwości obsługi błędów w PEAR_Error. W przypadku niepowodzenia jakiejś funkcji z PE- AR::DB, większość z nich zwróci konkretną Konwertuje nazwy pól i tabel na małe litery (przy get i fetch) Obcina wyjście od prawej Zawsze raportuje liczbę skasowanych rzędów Wspomaga numrows w Oracle Odwzorowuje wiadomości o błędach między różnymi bazami danych Konwertuje zera do pustych łańcuchów (przy get i fetch), ponieważ Oracle nie rozpoznaje między nimi różnicy klasę błędu od najwyższej connect do najniższej getrow. Klasa ta nie tylko przechowuje błąd z funkcji PEAR, ale też dodatkowe informacje przydatne w usuwaniu problemów. $db =& DB::connect($dsn); // DB::isError is the same as U PEAR::isError if (DB::isError($db)) print $db->getmessage(); print $db->getdebuginfo(); Błędy mogą być także wychwytywane przy użyciu standardowej procedury obsługi błędów w PEAR. Jest to definiowana przez użytkownika funkcja, która będzie wywołana zawsze, gdy moduł PEAR (jak db) wygeneruje błąd. Ta funkcja może być użyta do stworzenia kodu generującego dla użytkownika standardową stronę HTML, informującą administratora o problemie. Programy obsługi błędów są tradycyjnie połączone z możliwościami PHP, co do przekazywania wyników do buforowanego wyjścia, co umożliwia czyszczenie wynikowego kodu HTML. Jednak tradycyjne błędy (takie jak dzielenie przez zero) nie będą tu wyłapywane. // Przygotuj uchwyt PEAR::setErrorHandling(PEAR_ERRU OR_CALLBACK, 'error_function'); // włącz buforowanie wyników ob_start(); // uruchom kod PearVersion(); Name dbase FrontBase InterBase Informix Mini SQL Microsoft SQL Server MySQL MySQL >=4.1 Oracle 7/8/9 ODBC PostgreSQL SQLite Sybase Listing 4: tableinfo Tabela 2: Obsługiwane bazy danych Keyword dbase fbsql ibase ifx msql mssql mysql mysql4 oci8 odbc pgsql sqlite sybase // zrzuć zawartość bufora ob_end_flush(); // przygotuj uchwyt function error_function($err) ob_end_clean(); print 'Wystapil blad ('.$err->u getmessage().')!'); exit; Właściwości PEAR::DB PEAR::DB jest rzeczywiście tak łatwy, jak na to wygląda. Złożoność pochodzi od samego SQL. PEAR::DB chroni jedynie przed niektórymi problemami. SQL istnieje od wielu lat, jednak w ramach wojen pomiędzy poszczególnymi dostawcami zostały dodane różne rozszerzenia SQL, co sprawia, że poszczególne implementacje są ze sobą niekompatybilne. Mimo że komitet ANSI kierował standaryzacją części języka (podstawowe wersje select, insert i update są w pełni przenośne), istnieje nadal wiele problemów. Pisanie w standardowym SQL-u jest wyzwaniem samym w sobie i istnieje kilka reguł, które należy w tym celu poznać. Większość specjalizujących się w bazach danych programistów zna je doskonale, początkujący mogą sięgnąć do tutoriali, takich jak [7]. Często chcemy wiedzieć, jak baza zare- $tableinfo = $result->tableinfo()); for($col=0; $col < $result->numcols(); $col++) print $tableinfo[$col]['name']." is a ".$tableinfo[$col]['type']; Maj
5 PROGRAMOWANIE Pear::DB Tabela 3: Tabela 4: Zakres testowania Ograniczenia SQL przy pomocy provides Database SQL Syntax string Functionality DB2 select * from table fetch prepare Czy baza sprawdza wstępnie kolejkę SQL Informix first 10 rows only select first 10 * from table pconnect Persistentne połączenia Microsoft SQL Server select top 10 * from table transactions Czy baza wspiera transakcje MySQL select * from table limit 10 limitograniczone kolejki selectoracle 8i select * from (select * from table) where rownum <= 10 PostgreSQL select * from table limit 10 aguje na określone zapytanie, zanim je wykonamy. Wymaga to dodatkowej pracy, którą albo wykonamy sami albo poprzez PE- AR::DB. Niestety, jeżeli już dostaliśmy się do bazy, nie ma często sposobu, aby dowiedzieć się, czy potrafi ona obsługiwać określone polecenia SQL. Metoda provides pokazuje możliwości aktualnej bazy danych. Pozwala na przełączanie pomiędzy dwoma ręcznie dostrojonymi kwerendami, tak aby zwiększyć wydajność. Przecież nowa wersja bazy danych może oferować nową cechę, dlatego metoda provides użyta w PEAR::DB umożliwia budowanie bardziej optymalnych kwerend dla naszej bazy bez znajomości szczegółów o nowej bazie danych. if ($db->providesu ('transactions')) print 'Super! Ta funkcja jest U obsługiwana'; Zakres możliwości, które można przetestować, pokazano w Tabeli 3. W każdym z przypadków możliwe jest, że baza nie wspiera sama w sobie danej funkcji. Słowem kluczowym jest tutaj natively, ponieważ istnieje rozróżnienie pomiędzy wewnętrznym procesorem bazy a sterownikiem PEAR::DB. Na przykład, jeżeli baza danych nie posiada wsparcia dla poleceń prepare/execute, sterownik obsłuży pojawienie się tego polecenia poprzez emulację. Kuszące może być tu użycie provides do utworzenia zupełnie odmiennych, ręcznie optymalizowanych kolejek dla każdej bazy danych. W większości przypadków nie jest to konieczne. Powód (niektórzy powiedzą wymówka) dla tego rodzaju zwyczajów wynika z rozszerzeń, które są widoczne wewnątrz SQL. Typowy przykład tego problemu pochodzi z ograniczeń kolejek select, co prowadziło do zatrzymania generowania rezultatów po, powiedzmy, pierwszych dziesięciu rzędach. Obecnie wszystkie bazy danych potrafią wykonać to działanie, lecz za pomocą różnych kolejek (Tabela 4). Pisanie kodu dla każdego z przykładów to mnóstwo dodatkowej pracy. Ponieważ nie możemy się troszczyć o każdą bazę danych (razem z nowymi i tymi jeszcze nie napisanymi), nasz kod stanie się bardzo szybko nieprzenośny i narażony na obumieranie. Problem ten łatwo rozwiązać, jakkolwiek musimy tu zastosować te same zasady abstrakcyjności. PEAR::DB dostarcza metody nazywającej się limitquery, która ukrywa przed nami dokładną składnię i stosuje to, co jest kompatybilne z aktualną bazą danych. Jest to bardziej optymalne niż pisanie oddzielnych kolejek dla każdej bazy. $query = SELECT name FROM U channels ; // no reference to U limits here! $result = limitqueryu ($query, 2, 1); Polecenie to pobiera 1 wiersz z rezultatów wykonanej kwerendy, zaczynając od indeksu 2, ponieważ trzeci wpis liczy się od 0. Jeżeli zapytanie typu select może zostać zmodyfikowane, tak aby utworzyć odpowiedni łańcuch w pytaniu do bazy danych, $db->provides('limit') zwróci alter i kwerenda, zanim będzie przekazana dalej, zostanie przekształcona przez sterownik PE- AR::DB. W przeciwnym razie provides zwróciłoby emulate, ponieważ sterownik może wykonywać kwerendę na zasadzie wiersz za wierszem, albo mogłaby zostać zwrócona wartość false. Powinno się zawsze kolejkować zasoby bazy używając rezultatu z provides, a nie polegać na własnej pamięci czy doświadczeniu. Tabela 5 pokazuje aktualny zestaw sterowników. Z uwagi na błędy, czasem konieczna jest wiedza o tym, jakiej dokładnie używamy bazy. Jeżeli nie można usunąć błędów, musimy wiedzieć, gdzie się one znajdują, aby przynajmniej móc ich unikać. print $db->phptype; Polecenie powyżej pokaże nam te same identyfikatory, jak te w Tabeli 2. Szczegóły dotyczące błędów w bazach danych nie są celem niniejszego artykułu. Tylko dla was PEAR::DB nie tylko umożliwia budowanie warstwy abstrakcji dla kodu obsługi baz danych. Jako bonus otrzymujemy kilka narzędzi do obsługi samych danych, jak numrows i numcols. Listing 5: assertextension if (DB::assertExtension('oci8')) print 'Uzywamy Oracle jesli musimy...'; if (DB::assertExtension('mysql )) print Uzywam MySQL bo lepiej go znam... ; print Polecenie select zwrocilo U '.$result->numrows(). ' rows'; print 'Polecenie select zwrocilo U '.$result->numcols(). ' cols'; Efekty działania tych funkcji są samowyjaśniające i można to wydedukować z samego zapytania select. Oszczędzają ręcznego liczenia kolumn, gdy kwerenda jest generowana automatycznie. Mamy też metodę tableinfo, która dostarcza informacji, takich jak nazwa i typ dla każdej kolumny w rezultatach zapytania. Jest to użyteczne nie tylko przy wynajdywaniu błędów, ale także do tworzenia uniwersalnych aplikacji bazodanowych. Mamy możliwość zaznaczania kolorem różnych kolumn w zależności od ich rodzaju lub podświetlania pola klucza (Listing 4). Poza name i type można (używając składni użytej w przykładzie powyżej) wykonywać pytania o len (długość), flags (wskazuje na primary key) i table nazwę tabeli, dla każdej kolumny. Mimo że większość interfejsów programowych API wspiera zapytanie typu select, możemy też zostać obdarowani rezultatami kwerend typu insert. Jednym z przydatnych narzędzi jest metoda affectedrows, zwracająca liczbę wierszy, na które ma wpływ kwerenda typu 76 Maj
6 Pear::DB PROGRAMOWANIE Tabela 5: Co umożliwia provides Database prepare pconnect transactions limit FrontBase false true true emulate InterBase true true true false Informix false true true emulate Mini SQL false true false emulate Microsoft SQL false true true emulate MySQL false true true alter Oracle 8i false true true alter ODBC true true false emulate PostgreSQL false true true alter Sybase false true false emulate insert, delete czy update. Mamy też możliwość generowania unikalnych ID, używając do tego funkcji sekwencyjnej nextid, która jest pomocna przy generowaniu unikalnych kluczy nie jest to obsługiwane przez MySQL. Na przykład: // Get a new ID. $id = $db->nextid('sequence'); U // (the sequence will be U created if it doesn't exist) Inną użyteczną właściwością jest statycznie deklarowana metoda assertextension nie wymaga obiektu bazy danych i będzie wskazywała, które z funkcji zostały zawarte w obecnej instalacji. Można określić, które bazy danych są zainstalowane w systemie i które z nich najbardziej pasują nam do użycia wewnątrz aplikacji (Listing 5). Pomimo swojej nazwy, nie jest to asercja w tradycyjnym programistycznym sensie, ponieważ żaden błąd nie jest tu wyraźnie zwracany. Metoda stwierdza jedynie, czy jakieś rozszerzenie istnieje lub nie. Wspomnijmy też o łączeniu pary prepare i execute. Jest to właściwość pozwalająca przygotować prepare kwerende do wielokrotnego użycia poprzez to, że elementy te są prekompilowane i rozkładane na tokeny. Kwerenda będzie się składać z miejsc zarezerwowanych dla innych informacji, dlatego może być wykonywana execute wiele razy z różnymi danymi wstawianymi w miejsca zarezerwowane (Listing 6). MetodaexecuteMultiple sprawdza zapytania SQL, INSERT INTO channels (station, U name, channel) VALUES (6, U 'Video', 0); INSERT INTO channels (station, U name, channel) VALUES (7, U 'PS2', 39); Listing 6: Przygotowanie zapytania $generic = $db->prepare('insert INTO channels (station, name, channel) VALUES (?,?,?)'); $data = array ( array(6, 'Video', 0), array(7, 'PS2', 39) ); $res = $db->executemultiple($generic, $data); Metoda executemultiple zatrzyma się na pierwszym błędzie, aby temu zapobiec będziemy musieli wykonywać każde kolejne zapytanie z pomocą metody execute. Na przykład, foreach ($data as $row) $db->execute($generic, $row); Ponadto tablica danych musi być indeksowana od zera. W większości przypadków powinniśmy zauważyć zwiększenie szybkości, gdy jednocześnie wprowadzanych będzie do bazy kilka wpisów. Korzyść jednak zależy od tego, czy baza danych posiada bezpośrednie wsparcie dla tej funkcji, niestety nie wszystkie posiadają. Idziemy na wojnę Posiadając w swoim arsenale PEAR::DB otrzymujemy możliwość atakowania większości baz danych, bez martwienia się o brakujące funkcje. Dzięki szerokiemu zakresowi metod możemy napisać w PHP dobrą, niezależną od platformy aplikację bazodanową, bez przejmowania się pomniejszymi problemami. INFO [1] PEAR: [2] ADOdb: [3] Metabase: [4] PHPlib: [5] Linux Magazine, nr 41, kwiecień 2004, str. 72 [6] PEAR manual: manual/en/installation.cli.php [7] Writing Portable SQL Code: Prenumerata Linux Magazine Nie przegap takiej okazji Zamawiając prenumeratę oszczędzasz! Płacisz jak za 9 numerów, a otrzymujesz 12! Z każdym numerem DVD lub płyta CD-ROM. Najszybszy sposób zamówienia prenumeraty: Infolinia:
Podstawy programowania III WYKŁAD 2
Podstawy programowania III WYKŁAD 2 Jan Kazimirski 1 Komunikacja z bazami danych 2 PHP i bazy danych PHP zapewnia dostęp do wielu popularnych baz danych. Kilka poziomów abstrakcji: Funkcje obsługujące
Bardziej szczegółowoDostęp do baz danych z serwisu www - PHP. Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK
Dostęp do baz danych z serwisu www - PHP Wydział Fizyki i Informatyki Stosowanej Joanna Paszkowska, 4 rok FK Bazy Danych I, 8 Grudzień 2009 Plan Trochę teorii Uwagi techniczne Ćwiczenia Pytania Trójwarstwowy
Bardziej szczegółowoJęzyki programowania wysokiego poziomu. PHP cz.4. Bazy danych
Języki programowania wysokiego poziomu PHP cz.4. Bazy danych PHP i bazy danych PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł
Bardziej szczegółowoPHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:
PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych: MySQL moduł mysql albo jego nowsza wersja mysqli (moduł mysqli ma dwa interfejsy: proceduralny i obiektowy) PostgreSQL Oracle MS
Bardziej szczegółowoPHP: bazy danych, SQL, AJAX i JSON
1 PHP: bazy danych, SQL, AJAX i JSON SYSTEMY SIECIOWE Michał Simiński 2 Bazy danych Co to jest MySQL? Jak się połączyć z bazą danych MySQL? Podstawowe operacje na bazie danych Kilka dodatkowych operacji
Bardziej szczegółowoSprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.
Za operacje na bazie odpowiada biblioteka mysqli (i jak improved). Posiada ona interfejs obiektowy jak i proceduralny. Podłączenie do bazy (obiektowo) mysqli:: construct() ([ string $host [, string $username
Bardziej szczegółowoWydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki
Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Przetwarzanie i organizowanie danych : bazy danych Nr ćwiczenia 10 Temat Aplikacje
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x
Wdrożenie modułu płatności eservice dla systemu oscommerce 2.3.x - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowoInstalacja MySQL. http://dev.mysql.com/downloads/mysql/5.0.html#downloads
Instalacja MySQL Baza MySQL tworzona jest przez Szwedzką firmę MySQL AB strona domowa projektu to: www.mysql.com Wersję bezpłatną (różniącą się od komercyjnej brakiem wsparcia technicznego, nośnika i podręcznika)
Bardziej szczegółowoObiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody
Obiektowy PHP Czym jest obiekt? W programowaniu obiektem można nazwać każdy abstrakcyjny byt, który programista utworzy w pamięci komputera. Jeszcze bardziej upraszczając to zagadnienie, można powiedzieć,
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Zen Cart 1.3.9 1.5
Wdrożenie modułu płatności eservice dla systemu Zen Cart 1.3.9 1.5 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie
Bardziej szczegółowodziennik Instrukcja obsługi
Ham Radio Deluxe dziennik Instrukcja obsługi Wg. Simon Brown, HB9DRV Tłumaczenie SP4JEU grudzień 22, 2008 Zawartość 3 Wprowadzenie 5 Po co... 5 Główne cechy... 5 baza danych 7 ODBC... 7 Który produkt
Bardziej szczegółowoLaboratorium nr 4. Temat: SQL część II. Polecenia DML
Laboratorium nr 4 Temat: SQL część II Polecenia DML DML DML (Data Manipulation Language) słuŝy do wykonywania operacji na danych do ich umieszczania w bazie, kasowania, przeglądania, zmiany. NajwaŜniejsze
Bardziej szczegółowoProjektowanie systemów baz danych
Projektowanie systemów baz danych Seweryn Dobrzelewski 4. Projektowanie DBMS 1 SQL SQL (ang. Structured Query Language) Język SQL jest strukturalnym językiem zapewniającym możliwość wydawania poleceń do
Bardziej szczegółowoĆwiczenia laboratoryjne nr 11 Bazy danych i SQL.
Prezentacja Danych i Multimedia II r Socjologia Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL. Celem ćwiczeń jest poznanie zasad tworzenia baz danych i zastosowania komend SQL. Ćwiczenie I. Logowanie
Bardziej szczegółowo6. Bezpieczeństwo przy współpracy z bazami danych
6. Bezpieczeństwo przy współpracy z bazami danych 6.1. Idea ataku SQL injection Atak znany jako SQL injection jest możliwy wtedy, gdy użytkownik ma bezpośredni wpływ na postać zapytania wysyłanego do bazy
Bardziej szczegółowoWprowadzenie do Doctrine ORM
Wprowadzenie do Doctrine ORM Przygotowanie środowiska Do wykonania ćwiczenia konieczne będzie zainstalowanie narzędzia Composer i odpowiednie skonfigurowanie Netbeans (Tools->Options->Framework & Tools->Composer,
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Magento 1.4 1.9
Wdrożenie modułu płatności eservice dla systemu Magento 1.4 1.9 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do
Bardziej szczegółowoWykład 5: PHP: praca z bazą danych MySQL
Wykład 5: PHP: praca z bazą danych MySQL Architektura WWW Podstawowa: dwuwarstwowa - klient (przeglądarka) i serwer WWW Rozszerzona: trzywarstwowa - klient (przeglądarka), serwer WWW, serwer bazy danych
Bardziej szczegółowoJęzyk SQL, zajęcia nr 1
Język SQL, zajęcia nr 1 SQL - Structured Query Language Strukturalny język zapytań Login: student Hasło: stmeil14 Baza danych: st https://194.29.155.15/phpmyadmin/index.php Andrzej Grzebielec Najpopularniejsze
Bardziej szczegółowoInformatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java
Informatyka I Standard JDBC Programowanie aplikacji bazodanowych w języku Java dr inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2017 Standard JDBC Java DataBase Connectivity uniwersalny
Bardziej szczegółowoWdrożenie modułu płatności eservice. dla systemu Gekosale 1.4
Wdrożenie modułu płatności eservice dla systemu Gekosale 1.4 - dokumentacja techniczna Wer. 01 Warszawa, styczeń 2014 1 Spis treści: 1 Wstęp... 3 1.1 Przeznaczenie dokumentu... 3 1.2 Przygotowanie do integracji...
Bardziej szczegółowoInformatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.
Informatyka I Programowanie aplikacji bazodanowych w języku Java. Standard JDBC. dr hab. inż. Andrzej Czerepicki Politechnika Warszawska Wydział Transportu 2019 Standard JDBC Java DataBase Connectivity
Bardziej szczegółowoBazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski
Bazy danych II Andrzej Grzybowski Instytut Fizyki, Uniwersytet Śląski Wykład 12 Zastosowanie PHP do programowania aplikacji baz danych MySQL Wsparcie programowania w PHP baz danych MySQL Obsługa baz danych
Bardziej szczegółowoBazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1
Bazy danych Wykład IV SQL - wprowadzenie Copyrights by Arkadiusz Rzucidło 1 Czym jest SQL Język zapytań deklaratywny dostęp do danych Składnia łatwa i naturalna Standardowe narzędzie dostępu do wielu różnych
Bardziej szczegółowoProgramowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika
Programowanie w SQL procedury i funkcje UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika 1. Funkcje o wartościach skalarnych ang. scalar valued
Bardziej szczegółowoDECLARE VARIABLE zmienna1 typ danych; BEGIN
Procedury zapamiętane w Interbase - samodzielne programy napisane w specjalnym języku (właściwym dla serwera baz danych Interbase), który umożliwia tworzenie zapytań, pętli, instrukcji warunkowych itp.;
Bardziej szczegółowoZagadnienia. Konstrukcja bibliotek mysql i mysqli w PHP. Dynamiczne generowanie stron. Połączenie, zapytanie i sesja
Zagadnienia Konstrukcja bibliotek mysql i mysqli w PHP Dynamiczne generowanie stron Połączenie, zapytanie i sesja Podstawowe opakowanie dla zapytań SQL w PHP Zarządzania uŝytkownikami Włamania do mysql
Bardziej szczegółowoSQL (ang. Structured Query Language)
SQL (ang. Structured Query Language) SELECT pobranie danych z bazy, INSERT umieszczenie danych w bazie, UPDATE zmiana danych, DELETE usunięcie danych z bazy. Rozkaz INSERT Rozkaz insert dodaje nowe wiersze
Bardziej szczegółowo5. Współpraca z bazą danych MySQL
5. Współpraca z bazą danych MySQL 5.1. Informacje ogólne Język PHP posiada obsługę wielu relacyjnych baz danych, jedną z najpopularniejszych jest baza MySQL. PHP pozwala na pełną współpracę z bazą. Praca
Bardziej szczegółowoWprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych
Wprowadzenie Rozdział 23 PDO Wprowadzanie do PDO, kursory zwykłe, kursory przewijane, obsługa błędów, przetwarzanie transakcyjne PDO PHP Data Objects, obiektowo-zorientowany interfejs programistyczny dostępu
Bardziej szczegółowoBlaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik
Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik Technologia Przykłady praktycznych zastosowań wyzwalaczy będą omawiane na bazie systemu MS SQL Server 2005 Wprowadzenie
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami
Bardziej szczegółowoPawel@Kasprowski.pl Języki skryptowe - PHP. PHP i bazy danych. Paweł Kasprowski. pawel@kasprowski.pl. vl07
PHP i bazy danych Paweł Kasprowski pawel@kasprowski.pl Użycie baz danych Bazy danych używane są w 90% aplikacji PHP Najczęściej jest to MySQL Funkcje dotyczące baz danych używają języka SQL Przydaje się
Bardziej szczegółowostrukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych
SQL SQL (ang. Structured Query Language): strukturalny język zapytań używany do tworzenia strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych
Bardziej szczegółowoRef. 7 - Język SQL - polecenia DDL i DML
Ref. 7 - Język SQL - polecenia DDL i DML Wprowadzenie do języka SQL. Polecenia generujące strukturę bazy danych: CREATE, ALTER i DROP. Polecenia: wprowadzające dane do bazy - INSERT, modyfikujące zawartość
Bardziej szczegółowoDatabase Connectivity
Oprogramowanie Systemów Pomiarowych 15.01.2009 Database Connectivity Dr inŝ. Sebastian Budzan Zakład Pomiarów i Systemów Sterowania Tematyka Podstawy baz danych, Komunikacja, pojęcia: API, ODBC, DSN, Połączenie
Bardziej szczegółowoProgramowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie
Programowanie MSQL show databases; - pokazanie jakie bazy danych są dostępne na koncie show databases; - wyświetlenie wszystkich baz danych na serwerze create database nazwa; - za nazwa wstawiamy wybraną
Bardziej szczegółowoStruktura drzewa w MySQL. Michał Tyszczenko
Struktura drzewa w MySQL Michał Tyszczenko W informatyce drzewa są strukturami danych reprezentującymi drzewa matematyczne. W naturalny sposób reprezentują hierarchię danych toteż głównie do tego celu
Bardziej szczegółowoXQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery
http://xqtav.sourceforge.net XQTav - reprezentacja diagramów przepływu prac w formacie SCUFL przy pomocy XQuery dr hab. Jerzy Tyszkiewicz dr Andrzej Kierzek mgr Jacek Sroka Grzegorz Kaczor praca mgr pod
Bardziej szczegółowoSQL 4 Structured Query Lenguage
Wykład 5 SQL 4 Structured Query Lenguage Instrukcje sterowania danymi Bazy Danych - A. Dawid 2011 1 CREATE USER Tworzy nowego użytkownika Składnia CREATE USER specyfikacja użytkownika [, specyfikacja użytkownika]...
Bardziej szczegółowoCREATE USER
Temat: Administrowanie użytkownikami bazy danych. Po instalacji serwera MYSQL dostępne jest konto o nazwie root. Domyślnie nie ma ono przypisanego hasła, aczkolwiek podczas procesu konfiguracji jest możliwość
Bardziej szczegółowoInstytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska
Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl Wydział Mechaniczny Technologiczny Politechnika Śląska Laboratorium 1 Wprowadzenie, podstawowe informacje o obsłudze
Bardziej szczegółowoInternetowe bazy danych
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 6 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl Kontrola dostępu
Bardziej szczegółowoInternetowe bazy danych
Wyższa Szkoła Technologii Teleinformatycznych w Świdnicy Internetowe bazy danych wykład 5 dr inż. Jacek Mazurkiewicz e-mail: Jacek.Mazurkiewicz@pwr.wroc.pl mysql_list_tables pobranie listy tabel z bazy
Bardziej szczegółowoSystemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:
Systemy baz danych 16.04.2013 1. Plan: 10. Implementacja Bazy Danych - diagram fizyczny 11. Implementacja Bazy Danych - implementacja 2. Zadania: 1. Przygotować model fizyczny dla wybranego projektu bazy
Bardziej szczegółowoAutor: Joanna Karwowska
Autor: Joanna Karwowska Wygodniejszym i wydajniejszym sposobem przechowywania i korzystania z dużej ilości danych zapisanych na serwerze jest współpraca z relacyjną bazą danych. 2 1. Utworzyć bazę danych.
Bardziej szczegółowoPrzykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.
Marek Robak Wprowadzenie do języka SQL na przykładzie baz SQLite Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi. Tworzenie tabeli Pierwsza tabela W relacyjnych bazach danych jedna
Bardziej szczegółowoAplikacje WWW - laboratorium
Aplikacje WWW - laboratorium PHP + bazy danych Celem ćwiczenia jest przygotowanie prostej aplikacji internetowej wykorzystującej technologię PHP. Aplikacja pokazuje takie aspekty, współpraca PHP z bazami
Bardziej szczegółowoE.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze
Funkcje użytkownika Tworzenie funkcji Usuwanie funkcji Procedury składowane Tworzenie procedur składowanych Usuwanie procedur składowanych Wyzwalacze Wyzwalacze a ograniczenia i procedury składowane Tworzenie
Bardziej szczegółowoDECLARE <nazwa_zmiennej> typ [(<rozmiar> )] [ NOT NULL ] [ { := DEFAULT } <wartość> ];
Braki w SQL obsługi zdarzeń i sytuacji wyjątkowych funkcji i procedur użytkownika definiowania złożonych ograniczeń integralnościowych Proceduralny SQL Transact- SQL używany przez Microsoft SQL Server
Bardziej szczegółowoPaweł Rajba
Paweł Rajba pawel@cs.uni.wroc.pl http://www.itcourses.eu/ Wprowadzenie Używanie kursorów Rodzaje kursorów Praca z kursorami Co to jest kursor? Cykl życia kursora utworzenie pobieranie wartości ewentualnie
Bardziej szczegółowoSystemy GIS Tworzenie zapytań w bazach danych
Systemy GIS Tworzenie zapytań w bazach danych Wykład nr 6 Analizy danych w systemach GIS Jak pytać bazę danych, żeby otrzymać sensowną odpowiedź......czyli podstawy języka SQL INSERT, SELECT, DROP, UPDATE
Bardziej szczegółowoSystemy internetowe. Wykład 4 mysql. West Pomeranian University of Technology, Szczecin; Faculty of Computer Science
Systemy internetowe Wykład 4 mysql MySQL - wstęp SZBD: komercyjne: Microsoft SQL Server, Oracle, DB2... darmowe: MySQL, PostgreSQL, Firebird... MySQL darmowy (użytek niekomercyjny) Wady: niska wydajność
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 2 Kusory Wprowadzenie Kursory użytkownika Kursory domyślne Zmienne kursora Wyrażenia kursora - 2 - Wprowadzenie Co to jest kursor?
Bardziej szczegółowoWykład I. Wprowadzenie do baz danych
Wykład I Wprowadzenie do baz danych Trochę historii Pierwsze znane użycie terminu baza danych miało miejsce w listopadzie w 1963 roku. W latach sześcdziesątych XX wieku został opracowany przez Charles
Bardziej szczegółowoWprowadzenie do projektowania i wykorzystania baz danych Relacje
Wprowadzenie do projektowania i wykorzystania baz danych Relacje Katarzyna Klessa Dygresja nt. operatorów SELECT 2^2 SELECT 2^30 SELECT 50^50 2 Dygresja nt. operatorów SELECT 2^30 --Bitwise exclusive OR
Bardziej szczegółowoBazy danych. Polecenia SQL
Bazy danych Baza danych, to miejsce przechowywania danych. Dane w bazie danych są podzielone na tabele. Tabele składają się ze ściśle określonych pól i rekordów. Każde pole w rekordzie ma ściśle ustalony
Bardziej szczegółowoOdnawialne Źródła Energii I rok. Tutorial PostgreSQL
Tutorial PostgreSQL 1. Instalacja na własnym komputerze: a. Zainstaluj program ze strony: https://www.postgresql.org/download/ Wersja odpowiednia dla systemu operacyjnego Linux, Mac, Windows Przy pierwszym
Bardziej szczegółowoSmarty PHP. Leksykon kieszonkowy
IDZ DO PRZYK ADOWY ROZDZIA SPIS TREœCI KATALOG KSI EK KATALOG ONLINE ZAMÓW DRUKOWANY KATALOG Smarty PHP. Leksykon kieszonkowy Autor: Daniel Bargie³ ISBN: 83-246-0676-9 Format: B6, stron: 112 TWÓJ KOSZYK
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 6 Marcin Młotkowski 14 listopada 2012 Plan wykładu Trwałość obiektów Bazy danych DBM Bazy danych SQL Active records Szeregowanie obiektów Obiekt Serializacja @tytul = 'Pan Tadeusz'
Bardziej szczegółowoDlaczego PHP? - zalety
Dlaczego PHP? - zalety (+) bezpieczeństwo kodu - PHP wykonuje się po stronie serwera ( niezależność od przeglądarki) (+) bezpieczeństwo danych - wykorzystanie ssl i HTTPS (+) PHP jako moduł serwera WWW
Bardziej szczegółowoSkładowane procedury i funkcje
Składowane procedury i funkcje Procedury i funkcje są zestawem poleceń SQL, które są przechowywane na serwerze (tak jak dane w tablicach). Istnieją sytuacje, kiedy procedury i funkcje są szczególnie przydatne.
Bardziej szczegółowoPawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl
Bazy danych Podstawy języka SQL Dr inż. Paweł Kasprowski pawel@kasprowski.pl Plan wykładu Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność danych Współbieżność
Bardziej szczegółowoZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP
ZAAWANSOWANE BAZY DANYCH I HURTOWNIE DANYCH MySQL, PHP Zad. 1 Dla każdego zamówienia wyznaczyć jego wartość. Należy podać numer zamówienia oraz wartość. select z.id_zamowienia, sum(ilosc*cena) as wartosc
Bardziej szczegółowokoledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,
Celem ćwiczeń jest zaprojektowanie oraz utworzenie na serwerze bazy danych przechowującej informacje na temat danych kontaktowych. Celem jest również zapoznanie z podstawowymi zapytaniami języka SQL służącymi
Bardziej szczegółowoRelacyjne bazy danych. Podstawy SQL
Relacyjne bazy danych Podstawy SQL Język SQL SQL (Structured Query Language) język umożliwiający dostęp i przetwarzanie danych w bazie danych na poziomie obiektów modelu relacyjnego tj. tabel i perspektyw.
Bardziej szczegółowoPRZESTRZENNE BAZY DANYCH WYKŁAD 2
PRZESTRZENNE BAZY DANYCH WYKŁAD 2 Baza danych to zbiór plików, które fizycznie przechowują dane oraz system, który nimi zarządza (DBMS, ang. Database Management System). Zadaniem DBMS jest prawidłowe przechowywanie
Bardziej szczegółowoBazy Danych i Usługi Sieciowe
Bazy Danych i Usługi Sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2011 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2011 1 / 15 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_Danych_i_Usługi_Sieciowe_-_2011z
Bardziej szczegółowoWprowadzenie do JDBC z wykorzystaniem bazy H2
Wprowadzenie do JDBC z wykorzystaniem bazy H2 JDBC (ang. Java DataBase Connectivity). Biblioteka stanowiąca interfejs umożliwiający aplikacjom napisanym w języku Java porozumiewać się z bazami danych za
Bardziej szczegółowoLeszek Stasiak Zastosowanie technologii LINQ w
Leszek Stasiak Zastosowanie technologii LINQ w C# 1. Wstęp - połączenie Do naszych zadań będziemy używać Microsoft Visual Studio 2010. Stwórzmy nowy projekt Windows Form Application. Mając do dyspozycji
Bardziej szczegółowoZałożenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS. Zapoznaj się ze sposobami użycia narzędzia T SQL z wiersza poleceń.
Cel: polecenia T-SQL Założenia do ćwiczeń: SQL Server UWM Express Edition: 213.184.8.192\SQLEXPRESS Authentication: SQL Server Authentication Username: student01,, student21 Password: student01,., student21
Bardziej szczegółowoUruchamianie bazy PostgreSQL
Uruchamianie bazy PostgreSQL PostgreSQL i PostGIS Ten przewodnik może zostać pobrany jako PostgreSQL_pl.odt lub PostgreSQL_pl.pdf Przejrzano 10.09.2016 W tym rozdziale zobaczymy, jak uruchomić PostgreSQL
Bardziej szczegółowoPodstawy języka SQL. SQL Structured Query Languagestrukturalny
Podstawy języka SQL SQL Structured Query Languagestrukturalny język zapytań DDL Język definicji danych (np. tworzenie tabel) DML Język manipulacji danych (np. tworzenie zapytań) DCL Język kontroli danych
Bardziej szczegółowoPLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH. KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ),
PLAN WYNIKOWY PROGRAMOWANIE APLIKACJI INTERNETOWYCH KL IV TI 6 godziny tygodniowo (6x15 tygodni =90 godzin ), Program 351203 Opracowanie: Grzegorz Majda Tematyka zajęć 2. Przygotowanie środowiska pracy
Bardziej szczegółowoProgramowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki
Programowanie w Sieci Internet Python - c. d. Kraków, 28 listopada 2014 r. mgr Piotr Rytko Wydział Matematyki i Informatyki Co dziś będziemy robić Uwierzytelnianie użytkowników, Obiekt session, Silniki
Bardziej szczegółowoBAZY DANYCH. Obsługa bazy z poziomu języka PHP. opracowanie: Michał Lech
BAZY DANYCH Obsługa bazy z poziomu języka PHP opracowanie: Michał Lech Plan wykładu 1. PHP - co to jest? 2. Bazy danych obsługiwane przez PHP 3. Podstawowe polecenia 4. Sesje 5. Przykład - dodawanie towaru
Bardziej szczegółowoSprzeg podstawowy do baz danych w PHP Mateusz Sowa, 2007
1. Wstęp PHP jest to skryptowy język programowania wykonywany po stronie serwera (server-side) służący do generowania stron internetowych. Skrypty napisane w PHP po uruchomieniu nie są kompilowane do postaci
Bardziej szczegółowoBazy danych dla producenta mebli tapicerowanych. Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r.
Bazy danych dla producenta mebli tapicerowanych Bartosz Janiak Marcin Sikora Wrocław 9.06.2015 r. Założenia Stworzyć system bazodanowy dla małej firmy produkującej meble tapicerowane. Projekt ma umożliwić
Bardziej szczegółowoWykład 5. SQL praca z tabelami 2
Wykład 5 SQL praca z tabelami 2 Wypełnianie tabel danymi Tabele można wypełniać poprzez standardową instrukcję INSERT INTO: INSERT [INTO] nazwa_tabeli [(kolumna1, kolumna2,, kolumnan)] VALUES (wartosc1,
Bardziej szczegółowoNARZĘDZIA WIZUALIZACJI
Kurs interaktywnej komunikacji wizualnej NARZĘDZIA WIZUALIZACJI Andrzej Łachwa andrzej.lachwa@uj.edu.pl 3 4/8 Zobacz film: http://www.ted.com/talks/david_mccandless_the_beauty_of_dat a_visualization.html
Bardziej szczegółowoData modyfikacji: 2013-08-14
Data modyfikacji: 2013-08-14 Co zawiera ten dokument: Ten dokument przedstawia, w jaki sposób zainstalować program Kancelaris PLUS 4 za pomocą standardowego instalatora na serwerze MySQL w wersji 5.0 i
Bardziej szczegółowoQUERY język zapytań do tworzenia raportów w AS/400
QUERY język zapytań do tworzenia raportów w AS/400 Dariusz Bober Katedra Informatyki Politechniki Lubelskiej Streszczenie: W artykule przedstawiony został język QUERY, standardowe narzędzie pracy administratora
Bardziej szczegółowo15. Funkcje i procedury składowane PL/SQL
15. Funkcje i procedury składowane PLSQL 15.1. SQL i PLSQL (Structured Query Language - SQL) Język zapytań strukturalnych SQL jest zbiorem poleceń, za pomocą których programy i uŝytkownicy uzyskują dostęp
Bardziej szczegółowoIntegralność danych Wersje języka SQL Klauzula SELECT i JOIN
Integralność danych Wersje języka SQL Klauzula SELECT i JOIN Robert A. Kłopotek r.klopotek@uksw.edu.pl Wydział Matematyczno-Przyrodniczy. Szkoła Nauk Ścisłych, UKSW Integralność danych Aspekty integralności
Bardziej szczegółowoDokumentacja SQL API 1
Dokumentacja SQL API 1 Wprowadzenie... 2 Kody błędów... 3 Tworzenie konfiguracji... 4 Konfiguracja po stronie Klienta... 6 Konfiguracja po stronie SerwerSMS... 8 Archiwizacja danych... 9 2 Wprowadzenie
Bardziej szczegółowoAdministracja i programowanie pod Microsoft SQL Server 2000
Administracja i programowanie pod Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 5 Kursory w SQL Serverze Wprowadzenie Modele kursorów Używanie kursorów Rodzaje kursorów Praca
Bardziej szczegółowoProjektowanie baz danych za pomocą narzędzi CASE
Projektowanie baz danych za pomocą narzędzi CASE Metody tworzenia systemów informatycznych w tym, także rozbudowanych baz danych są komputerowo wspomagane przez narzędzia CASE (ang. Computer Aided Software
Bardziej szczegółowoBazy danych i usługi sieciowe
Bazy danych i usługi sieciowe Ćwiczenia I Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) BDiUS ćw. I Jesień 2014 1 / 16 Strona wykładu http://bioexploratorium.pl/wiki/ Bazy_danych_i_usługi_sieciowe_-_2014z
Bardziej szczegółowoWprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.
Bazy Danych i Systemy informacyjne Wykład 2 Piotr Syga 16.10.2017 Dodawanie, usuwanie i zmienianie rekordów Wstawianie rekordu wstawianie do tabeli INSERT INTO A VALUES ( fioletowy, okrągły, słodko-kwaśny
Bardziej szczegółowoLiteratura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska
Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion Autor: Joanna Karwowska SQL zapewnia obsługę: zapytań - wyszukiwanie danych w bazie, operowania danymi - wstawianie, modyfikowanie
Bardziej szczegółowoUstalanie dostępu do plików - Windows XP Home/Professional
Ustalanie dostępu do plików - Windows XP Home/Professional Aby edytować atrybuty dostępu do plikow/ katalogow w systemie plików NTFS wpierw sprawdź czy jest Wyłączone proste udostępnianie czyli przejdź
Bardziej szczegółowoJęzyk DML. Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE
Język DML Instrukcje DML w różnych implementacjach SQL są bardzo podobne. Podstawowymi instrukcjami DML są: SELECT INSERT UPDATE DELETE Systemy Baz Danych, Hanna Kleban 1 INSERT Instrukcja INSERT dodawanie
Bardziej szczegółowoProgramowanie w Ruby
Programowanie w Ruby Wykład 11 Marcin Młotkowski 19 grudnia 2012 Plan wykładu Modele danych i bazy danych Modele danych Migracje Bazy danych w Railsach Rusztowania Walidacja modeli Modele danych Definicje
Bardziej szczegółowoTrigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie.
Temat: Wyzwalacze (triggery). Trigger jest obiektem związanym z tablicą, który aktywuje się gdy do tablicy następuje odpowiednie zapytanie. W poniższym przykładzie definiujemy tablicę a następnie trigger
Bardziej szczegółowoOracle PL/SQL. Paweł Rajba.
Paweł Rajba pawel@ii.uni.wroc.pl http://www.kursy24.eu/ Zawartość modułu 8 Wprowadzenie Definiowanie typu obiektowego Porównywanie obiektów Tabele z obiektami Operacje DML na obiektach Dziedziczenie -
Bardziej szczegółowo1 Kursory 1. 2 Wyjątki Wyjątki predefiniowane Wyjątki niezdefiniowane wcześniej Definiowanie własnych wyjątków...
Plan wykładu Spis treści 1 Kursory 1 2 Wyjątki 4 2.1 Wyjątki predefiniowane............................. 4 2.2 Wyjątki niezdefiniowane wcześniej....................... 5 2.3 Definiowanie własnych wyjątków........................
Bardziej szczegółowoSSI Katalog. Program do katalogowania zawartości dysków. Dariusz Kalinowski
1.) Wymagania sprzętowe: SSI Katalog Program do katalogowania zawartości dysków Dariusz Kalinowski - System operacyjny: Windows 2000 lub Windows xp - Procesor minimum Pentium 1Ghz - Pamięć RAM minimum
Bardziej szczegółowo1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC
1 Katedra Optoelektroniki i Systemów Elektronicznych 2 Oprogramowanie Systemów Elektronicznych Zagadnienia: Temat wykładu 1. Interfejs ODBC 2. 3. 3 Interfejs ODBC 4 Interfejs ODBC ODBC (Open DataBase Connectivity)
Bardziej szczegółowo