Dostęp do DBMS w Prologu za pomocą API ODBC

Podobne dokumenty
Podstawy programowania III WYKŁAD 2

Informatyka I. Standard JDBC Programowanie aplikacji bazodanowych w języku Java

Informatyka I. Programowanie aplikacji bazodanowych w języku Java. Standard JDBC.

Oracle PL/SQL. Paweł Rajba.

Ref. 7 - Język SQL - polecenia DDL i DML

Database Connectivity

Języki programowania wysokiego poziomu. PHP cz.4. Bazy danych

Odnawialne Źródła Energii I rok. Tutorial PostgreSQL

SQL 4 Structured Query Lenguage

Paweł Rajba

Wykład 4. SQL praca z tabelami 1

Wprowadzenie. Rozdział 23 PDO. Podstawowe kroki aplikacji. Źródło danych

Projektowanie bazy danych. Jarosław Kuchta Projektowanie Aplikacji Internetowych

Język SQL, zajęcia nr 1

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Projektowanie systemów baz danych

SQL Server i T-SQL w mgnieniu oka : opanuj język zapytań w 10 minut dziennie / Ben Forta. Gliwice, Spis treści

Paweł Cieśla. Dokumentacja projektu

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

MySQL. Darmowa baza danych. Æwiczenia praktyczne

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę:

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

D D L S Q L. Co to jest DDL SQL i jakie s jego ą podstawowe polecenia?

Administracja i programowanie pod Microsoft SQL Server 2000

Administracja i programowanie pod Microsoft SQL Server 2000

Cele. Definiowanie wyzwalaczy

Bazy danych 7. SQL podstawy

15. Funkcje i procedury składowane PL/SQL

Bazy danych. Plan wykładu. Rozproszona baza danych. Fragmetaryzacja. Cechy bazy rozproszonej. Replikacje (zalety) Wykład 15: Rozproszone bazy danych

Bazy danych. Wykład IV SQL - wprowadzenie. Copyrights by Arkadiusz Rzucidło 1

Administracja bazy danych Oracle 10g

PHP może zostać rozszerzony o mechanizmy dostępu do różnych baz danych:

PODSTAWY BAZ DANYCH 13. PL/SQL

Wdrożenie modułu płatności eservice. dla systemu Zen Cart

DECLARE VARIABLE zmienna1 typ danych; BEGIN

System. Instalacja bazy danych MySQL. Autor : Piotr Zielonka tel Piotrków Tryb., sierpień 2018r.

Bazy danych - wykład wstępny

Administracja i programowanie pod Microsoft SQL Server 2000

Wdrożenie modułu płatności eservice. dla systemu oscommerce 2.3.x

SQL - DDL. 1 Tabele systemowe. 2 Typy danych

Administracja bazami danych

Administracja i programowanie pod Microsoft SQL Server 2000

Blaski i cienie wyzwalaczy w relacyjnych bazach danych. Mgr inż. Andrzej Ptasznik

Programowanie w SQL. definicja bloku instrukcji BEGIN...END, warunkowe wykonanie instrukcji IF...ELSE, wyrażenie CASE,

BACKUP BAZ DANYCH FIREBIRD

Bazy danych 9. SQL Klucze obce Transakcje

dziennik Instrukcja obsługi

Wykład 2. SQL 1 Structured Query Lenguage

Bazy danych 2. Wykład 1

1.1. System otwartych baz danych ODBC. System otwartych baz danych ODBC. Interfejs ODBC. Interfejs ODBC. System otwartych baz danych ODBC

Oracle PL/SQL. Paweł Rajba.

Metody dostępu do danych

Instrukcje SQL można podzielić na pięć kategorii, które zostały przedstawione w poniższej tabeli.

Bazy danych 6. Klucze obce. P. F. Góra

CREATE USER

Data modyfikacji:

Ustawienie na poziomie sesji (działa do zmiany lub zakończenia sesji zamknięcia połączenia).

Materiały do laboratorium MS ACCESS BASIC

Wdrożenie modułu płatności eservice. dla systemu Magento

E.14 Bazy Danych cz. 18 SQL Funkcje, procedury składowane i wyzwalacze

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota

Bazy Danych i Usługi Sieciowe

Wydział Elektrotechniki, Informatyki i Telekomunikacji Instytut Informatyki i Elektroniki

Instrukcja CREATE TABLE

Programowanie w SQL procedury i funkcje. UWAGA: Proszę nie zapominać o prefiksowaniu nazw obiektów ciągiem [OLIMP\{nr indeksu}] Funkcje użytkownika

Bloki anonimowe w PL/SQL

Plan wykładu BAZY DANYCH II WYKŁAD 2. Bloki. Struktura bloku

Dr Michał Tanaś(

Literatura: SQL Ćwiczenia praktyczne Autor: Marcin Lis Wydawnictwo: Helion. Autor: Joanna Karwowska

ODBC polecenia i funkcje

Wdrożenie modułu płatności eservice. dla systemu Gekosale 1.4

8.9. Język SQL Kwerenda wybierająca w języku SQL

Plan. Formularz i jego typy. Tworzenie formularza. Co to jest formularz? Typy formularzy Tworzenie prostego formularza Budowa prostego formularza

Programowanie MSQL. show databases; - pokazanie jakie bazy danych są dostępne na koncie

Specyfikacja API Runtime BAS 3.0

Wprowadzenie do BD Operacje na bazie i tabelach Co poza zapytaniami? Algebra relacji. Bazy Danych i Systemy informacyjne Wykład 2.

Laboratorium nr 4. Temat: SQL część II. Polecenia DML

JDBC w LoXiMie. Interfejs Java Database Connectivity dla systemu LoXiM. Adam Michalik 2008

SWI-Prolog: XPCE, XML, ODBC

Obowiązuje od wersji

Wprowadzenie do JDBC z wykorzystaniem bazy H2

Bazy danych 6. SQL funkcje daty i czasu, zmienne tymczasowe, aliasy

Oracle PL/SQL. Paweł Rajba.

NARZĘDZIA WIZUALIZACJI

strukturalny język zapytań używany do tworzenia i modyfikowania baz danych oraz do umieszczania i pobierania danych z baz danych

Bazy danych II. Andrzej Grzybowski. Instytut Fizyki, Uniwersytet Śląski

Bazy danych 10. SQL Widoki

Wykład 8. SQL praca z tabelami 5

Indeksowanie w bazach danych

ECDL/ICDL Użytkowanie baz danych Moduł S1 Sylabus - wersja 5.0

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia

MongoDB. wprowadzenie. dr inż. Paweł Boiński, Politechnika Poznańska

Procedury składowane. Funkcje vs. procedury Funkcja. Procedura. zazwyczaj ma parametry tylko typu IN; można wywoływać z poziomu

Wprowadzenie do projektowania i wykorzystania baz danych. Katarzyna Klessa

Bazy danych i usługi sieciowe

Bazy danych 5. Samozłaczenie SQL podstawy

Ćwiczenia 2 IBM DB2 Data Studio

Oracle PL/SQL. Paweł Rajba.

Systemy baz danych Prowadzący: Adam Czyszczoń. Systemy baz danych. 1. Import bazy z MS Access do MS SQL Server 2012:

Transkrypt:

Dostęp do DBMS w Prologu za pomocą API ODBC Paweł Maślanka PWSZ w Tarnowie 8 stycznia 2011 Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 1 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Plan prezentacji Plan prezentacji 1 Wstęp do ODBC 2 Konfiguracja ODBC 3 Warstwy ODBC 4 Wykonywanie zapytań SQL 5 Pobieranie wyników z zapytania 6 Transakcje 7 Dostęp do słownika bazy danych 8 Dodatkowe informacje 9 Reprezentacja danych SQL w Prologu 10 Zakończenie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 2 / 59

Wstęp do ODBC Co to jest ODBC? ODBC Co to jest ODBC? ODBC (ang. Open DataBase Connectivity - otwarte łącze baz danych) - interfejs pozwalający programom łączyć się z systemami zarządzającymi bazami danych (DBMS). Celem projektantów ODBC było uniezależnienie go od języków programowania, systemów operacyjnych i baz danych. Tak więc ODBC umożliwia każdej aplikacji dostęp do danych, niezależnie od tego, jaki system zarządzania bazą danych (DBMS) przetwarza te dane. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 3 / 59

Wstęp do ODBC Jak to działa? ODBC Jak to działa? ODBC dokonuje tego dzięki pośredniej warstwie, zwanej sterownikiem bazy danych, umieszczonej między aplikacją, a DBMS. Celem tej warstwy jest translacja zapytań wysłanych przez aplikację na komendy specyficzne dla danego DBMS. Dzięki temu aplikacja musi znać tylko składnię API ODBC, a sterownik przekaże zapytanie do DBMS w jego natywnym formacie, zwracając dane w formacie zrozumiałym dla aplikacji. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 4 / 59

Wstęp do ODBC Jak to działa? Aplikacja. Realizuje przetwarzanie i wywołuje funkcje ODBC w celu uruchamiania instrukcji SQL. Menedżer sterowników. Menedżer sterowników ODBC to interfejs pomiędzy aplikacją ODBC i sterownikiem ODBC. Przetwarza wywołania funkcji ODBC i przesyła żądania do sterownika. Sterownik. Przetwarza wywołania funkcji ODBC, wysyła żądania SQL do określonych źródeł danych i zwraca wyniki do aplikacji. Źródło danych. DBMS. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 5 / 59

Konfiguracja ODBC Niezbędne narzędzia (platforma UNIX i jej pochodne) Co będzie nam potrzebne? Aby umożliwić programowi komunikację z bazą danych poprzez interfejs ODBC musimy posiadać zainstalowane niżej wymienione pakiety: Środowisko SWI-Prolog http://www.swi-prolog.org DBMS PostgreSQL - http://www.postgresql.org Sterownik ODBC psqlodbc - http://psqlodbc.projects.postgresql.org Menedżer sterownika unixodbc - http://www.unixodbc.org Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 6 / 59

Konfiguracja ODBC Sterowniki ODBC Konfiguracja sterowników ODBC Sterowniki ODBC zdefiniowane są w pliku odbcinst.ini, przeważnie w katalogu /etc (w celu zweryfikowania lokalizacji wymaganych plików należy do terminala wprowadzić komendę: odbcinst -j). Poniższy przykład przedstawia specyfikację sterownika: Nazwa sterownika [PostgreSQL Unicode] Description = opis sterownika Description = PostgreSQL ODBC driver (Unicode version) Driver = ścieżka do sterownika Driver = /usr/lib/psqlodbcw.so Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 7 / 59

Konfiguracja ODBC Źródło danych (DSN) Do czego potrzebna jest nam nazwa źródła danych (DSN)? Aby używać źródła danych, należy utworzyć nazwę źródła danych (DSN). DSN zawiera informacje potrzebne sterownikowi w celu uzyskania dostępu do DBMS. Można podać jedną z następujących nazw DSN: DSN użytkownika: Te źródła danych są źródłami lokalnymi dla komputera i są dostępne tylko dla użytkownika, który je utworzył. Informacje te przechowywane są w rejestrze(windows). DSN systemu: Te źródła danych są źródłami lokalnymi dla komputera, nie są przeznaczone dla użytkownika. System lub użytkownik z odpowiednimi uprawnieniami może używać źródła danych skonfigurowanego w DSN systemu. Informacje te przechowywane są w rejestrze. DSN pliku: Są to źródła danych oparte na plikach, które mogą być współużytkowane przez wszystkich użytkowników z zainstalowanymi takimi samymi sterownikami, umożliwiającymi im dostęp do bazy danych. Te źródła danych nie muszą być dedykowane dla użytkownika ani lokalne dla komputera. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 8 / 59

Konfiguracja ODBC Źródło danych (DSN) Konfiguracja DSN W celu konfiguracji nazwy źródła danych wykorzystamy DSN pliku, edytując plik odbc.ini w katalogu systemowym /etc. Poniższy przykład przedstawia specyfikację DSN: Nazwa źródła danych ODBC [PostgreSQLProlog] Description = opis źródła danych Description = Baza PostgreSQL dla programów w Prologu Driver = nazwa sterownika Driver = PostgreSQL Unicode Database = nazwa bazy danych Database = prolog Servername = adres serwera Servername = localhost Username = nazwa użytkownika UserName = postgres Password = hasło Password = postgress Port = numer portu Port = 5432 Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 9 / 59

Konfiguracja ODBC Test połączenia Sprawdzenie zdefiniowanego połączenia można wykonać za pomocą poniższego polecenia: isql PostgreSQLProlog Argument PostgreSQLProlog to nazwa źródła danych z pliku odbc.ini Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 10 / 59

Warstwy ODBC Warstwy ODBC Interfejs ODBC dla Prologa dostarcza predykatów do zarządzania połączeniem, wykonywania zapytań SQL oraz odwzorowania typów danych. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 11 / 59

Warstwy ODBC Zarządzanie połączeniem Łączenie z bazą danych odbc connect(+dsn, -Connection, +Options) Predykat ten tworzy nowe połączenie ODBC do źródła danych DSN (Data Source Name), a następnie zwraca uchwyt do tego połączenia poprzez ukonkretnienie nim zmiennej Connection. Opcje dla połączenia definiuje się za pomocą listy i przekazuje się ją w argumencie Options. Możliwe jest użycie następujących opcji: user(user) - nazwa użytkownika password(password) - hasło alias(aliasname) - AliasName służy jako alias do zmiennej Connection open(openmode) - przyjmuje dwie wartości: once, multiple. Opcja ta definiuje zachowanie przy próbie ponownej próby połączenia do bazy danych przy użyciu tej samej nazwy źródła danych. Gdy wartością jest once wówczas zwrócony pozostaje uchwyt do istniejącego połączenia, w przeciwnym razie otwierane jest kolejne połączenie do tego samego źródła danych. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 12 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład o p e n c o n n e c t i o n : o d b c c o n n e c t ( PostgreSQLProlog, Connection, [ u s e r ( p o s t g r e s ), password ( p o s t g r e s ), a l i a s ( p s q l ), open ( once ) ] ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 13 / 59

Warstwy ODBC Zarządzanie połączeniem Łączenie z bazą danych odbc driver connect(+driverstring, -Connection, +Options) Predykat ten pozwala na połączenie z bazą przy użyciu wywołania funkcji SQLDriverConnect(). DriverString przekazany jest bez sprawdzenia. Opcje Options nie powinny zawierać atrybutów user i password. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 14 / 59

Warstwy ODBC Zarządzanie połączeniem Rozłączenie z bazą danych odbc disconnect(+connection) Predykat ten zamyka aktywne połączenie, przekazane w uchwycie Connection. Niszczy również aliasy dla tego uchwytu lub, jeżeli nie ma aliasów, uniemożliwia dalsze używanie uchwytu Connection. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 15 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład c l o s e c o n n e c t i o n : o d b c d i s c o n n e c t ( p s q l ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 16 / 59

Warstwy ODBC Zarządzanie połączeniem Ustawianie opcji połączenia odbc set connection(+connection, +Option) Predykat ten pozwala na ustawienie właściwości dla istniejącego połączenia Connection za pomocą parametru Option. Opcje możliwe do zdefiniowania to: access mode(mode) - możliwe wartości Mode: read, update. Jeżeli wartością jest read, to informujemy sterownik, że chcemy uzyskać dostęp do bazy danych w trybie do odczytu. Jeżeli ustawimy tryb dostępu na update(domyślnie), to informujemy sterownik, że możemy dokonywać aktualizacji stanu bazy danych. auto commit(bool) - jeżeli wartością jest true(domyślnie), wówczas każda kwerenda aktualizująca stan bazy danych jest zatwierdzana natychmiast. Jeżeli wartością jest false, wówczas każda kwerenda aktualizująca stan bazy danych rozpoczyna transakcję, która może zostać zatwierdzona lub wycofana. silent(bool) - jeżeli wartością jest true, wówczas wyrażenie zwraca SQL SUCCESS WITH INFO w razie powodzenia bez wyświetlania informacji. null(nullspecifier) - definiuje jak reprezentowana ma być wartość NULL. Domyślnie NULL jest reprezentowany przez atom null. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 17 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład q u e r y f o r n u l l : o d b c q u e r y ( p s q l, SELECT nazwa, o p i s FROM kompozycje WHERE nazwa = \ B u k i e t 10\, row ( Nazwa, Opis ) ), write ( Nazwa Nazwa ), nl, write ( Opis Opis ). s e t c o n n e c t i o n : o d b c s e t c o n n e c t i o n ( p s q l, n u l l ( ) ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 18 / 59

Warstwy ODBC Zarządzanie połączeniem Ustalanie aktywnych połączeń odbc current connection(?connection,?dsn) Za pomocą powyższego predykatu możemy zidentyfikować aktywne połączenia. Poprzez zmienną Connection ustalamy identyfikator(alias) połączenia, a dzięki zmiennej DSN otrzymujemy nazwę źródła danych skojarzoną z połączeniem. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 19 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład c o n n e c t i o n s : o d b c c u r r e n t c o n n e c t i o n ( Connection, DSN), write ( C o n n e c t i o n DSN). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 20 / 59

Warstwy ODBC Zarządzanie połączeniem Pobranie danych na temat połączenia odbc get connection(+connection,?property) Predykat ten definiuje zapytanie o właściwości połączenia Connection. Property to term o formacie atrybut(wartość). Predykat ten pozwala na odczyt następujących właściwości połączenia: database name(atom) - nazwa bazy danych związana z połączeniem. dbms name(name) - nazwa silnika bazy danych. dbms version(atom) - wersja silnika bazy danych. driver name(name) - nazwa sterownika dostarczającego interfejs pomiędzy ODBC, a bazą danych. driver odbc version(atom) - wersja ODBC wspierana przez sterownik. driver version(atom) - wersja sterownika. active statements(integer) - maksymalna liczba wykonywanych zapytań, które mogą być aktywne w tym samym czasie dla danego połączenia. Zwraca 0, jeżeli nie określono limitu. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 21 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład p r o p e r t y c o n n e c t i o n : o d b c g e t c o n n e c t i o n ( p s q l, database name (DBName) ), o d b c g e t c o n n e c t i o n ( p s q l, dbms name (DBMSName) ), o d b c g e t c o n n e c t i o n ( p s q l, d b m s v e r s i o n (DBMSVer) ), o d b c g e t c o n n e c t i o n ( p s q l, d r i v e r n a m e ( DriverName ) ), o d b c g e t c o n n e c t i o n ( p s q l, d r i v e r v e r s i o n ( D r i v e r V e r ) ), o d b c g e t c o n n e c t i o n ( p s q l, d r i v e r o d b c v e r s i o n (ODBCVer) ), o d b c g e t c o n n e c t i o n ( p s q l, a c t i v e s t a t e m e n t s ( A c t i v e S t m t s ) ), write ( Nazwa bazy danych DBName), nl, write ( S i l n i k bazy danych DBMSName), nl, write ( Wersja s i l n i k a DBMSVer), nl, write ( Nazwa s t e r o w n i k a DriverName ), nl, write ( Wersja s t e r o w n i k a D r i v e r V e r ), nl, write ( Wersja ODBC ODBCVer), nl, write ( L i c z b a aktywnych kwerend A c t i v e S t m t s ), nl. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 22 / 59

Warstwy ODBC Zarządzanie połączeniem Opis zdefiniowanych DSN odbc data source(?dsn,?description) Predykat ten zwraca opis do wszystkich zdefiniowanych źródeł danych w systemie. DSN to nazwa źródła danych tak samo jak w predykacie odbc connect/3. Description zawiera opis dla danego źródła danych. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 23 / 59

Warstwy ODBC Zarządzanie połączeniem Przykład d a t a s o u r c e s : o d b c d a t a s o u r c e (DSN, D e s c r i p t i o n ), write (DSN + D e s c r i p t i o n ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 24 / 59

Wykonywanie zapytań SQL Zapytania zwykłe, a sparametryzowane API ODBC pozwala nam na obsługę zapytań w formie tradycyjnej, jako tekst zapytania SQL oraz w formie zapytania sparametryzowanego. Pierwszą formę stosuje się dla zapytań rzadko wykonywanych (np. tworzenie tabeli). Zapytanie sparametryzowane pozwala interfejsowi ODBC i sterownikowi bazy danych na wstępną kompilację zapytania i przechowywanie jego zoptymalizowanego kodu, dzięki czemu uzyskujemy lepszą wydajność dla powtarzanych zapytań. Ponadto pozwalają one na przekazanie do zapytania parametrów. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 25 / 59

Wykonywanie zapytań SQL Jednorazowe wykonanie zapytania odbc query(+connection, +SQL, -RowOrAffected, +Options ) Powyższy predykat wykonuje zapytanie SQL do bazy danych reprezentowanej przez uchwyt Connection. SQL to każde prawidłowe zapytanie. Zapytanie SQL może być zdefiniowane jako atom, łańcuch znaków czy też jako term w formacie Format - Argumenty, który jest konwertowany przy użyciu predykatu format/2. Jeżeli zapytanie jest wyrażeniem SELECT, wówczas zbiór wyników zwracany jest w RowOrAffected. Domyślnie rekordy zwracane są jeden za drugim w procesie nawracania jako termy funktora row/arg{arity}, gdzie Arity oznacza numer kolumny w zbiorze wyników. Dla pozostałych zapytań RowOrAffected zwraca affected(rows), gdzie Rows reprezentuje liczbę zwróconych wierszy przez zapytanie. Parametr Options definiuje następujące opcje: null(nullspecifier) - definiujemy format reprezentacji wartości NULL, podobnie jak w predykacie odbc set connection/2 types(listoftypes) - określa do jakiego typu powinny zostać skonwertowane zwrócone wartości poszczególnych kolumn source(bool) - jeżeli wartością jest true(domyślnie false) wówczas zwrócone wyniki zawierają także nazwę tabeli oraz kolumny. Każdy wiersz zwracany jest w postaci: column(nazwatabeli, NazwaKolumn, Wartość) findall(template, row(column,... )) - zwraca wyniki w formie listy Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 26 / 59

Wykonywanie zapytań SQL Jednorazowe wykonanie zapytania Przykłady Zapytanie zwracające pojedyncze wiersze o d b c q u e r y ( p s q l, SELECT nazwa FROM Kompozycje, row ( Nazwa ) ). Zapytanie modyfikujące rekord w bazie o d b c q u e r y ( p s q l, UPDATE Kompozycje SET cena = 8 WHERE s t a n = 2, a f f e c t e d ( Rows ) ). Zapytanie konwertujące typ wartości kolumny o d b c q u e r y ( p s q l, SELECT nazwa, s t a n FROM Kompozycje, row ( Nazwa, Stan ), [ t y p e s ( [ d e f a u l t, f l o a t ] ) ] ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 27 / 59

Wykonywanie zapytań SQL Jednorazowe wykonanie zapytania odbc query(+connection, +SQL, -RowOrAffected) Taki sam jak predykat odbc query/4 bez użycia opcji. odbc query(+connection, +SQL) Taki sam jak predykat odbc query/3, ale używany do zapytań takich form SQL, które nie powinny zwracać wyniku jako wierszy (wszystkie wyrażenia za wyjątkiem zapytania SELECT). Predykat wypisuje diagnostyczny komunikat, jeżeli zapytanie zwróci wynik. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 28 / 59

Wykonywanie zapytań SQL Jednorazowe wykonanie zapytania Przykład Zapytanie zwracające wyniki w postaci listy przy użyciu predykatów findall/3 i odbc query/3 findall ( Nazwa, o d b c q u e r y ( p s q l, SELECT nazwa FROM Kompozycje, row ( Nazwa ) ), ListaNazw ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 29 / 59

Wykonywanie zapytań SQL Zapytania sparametryzowane Zapytania sparametryzowane posiadają znak? w miejscu, gdzie pojawić się ma parametr. Zalecane jest stosowanie zapytań sparametryzowanych, gdyż są one optymalizowane przez silnik ODBC i przy wielokrotnym użyciu znacząco podwyższają wydajność zapytań w przeciwieństwie do zapytań nieparametryzowanych. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 30 / 59

Wykonywanie zapytań SQL Zapytania sparametryzowane Przygotowanie zapytania odbc prepare(+connection, +SQL, +Parameters, -Statement, +Options) Connection - uchwyt do połączenia SQL - zapytanie SQL, które zawiera? w miejscu, gdzie ma pojawić się parametr Parameters - lista z typami parametrów Statement - zmienna, która będzie ukonkretniona tym zapytaniem Options - opcje do wykonywanego zapytania Parameters: default - ODBC sam pobierze typ parametru z bazy danych TypSQL - typ używany przez SQL np. char, varchar, integer Options: fetch(fetchtype) - ustawienie FetchType, na auto (domyślne) powoduje że wyniki będą pobieranie przy nawracaniu, tak jak to ma miejsce w zapytaniach niesparametryzowanych, ustawienie FetchType, na fetch powoduje że wyniki zapytania będą mogły być pobrane za pomocą predykatu odbc fetch/3. odbc prepare(+connection, +SQL, +Parameters, -Statement) Predykat taki sam, jak odbc prepare/5 bez możliwości definiowania opcji Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 31 / 59

Wykonywanie zapytań SQL Zapytania sparametryzowane Wykonanie zapytania odbc execute(+statement, +ParameterValues, -RowOrAffected) Statement - zmienna, która została ukonkretniona przygotowanym zapytaniem ParameterValues - lista parametrów, które mają zastąpić znak? w zapytaniu RowOrAffected - zwracane wyniki zapytania Predykat może rzucić wyjątek type error jeśli typy podane w ParameterValues nie będą się zgadzały z tymi podanymi podczas przygotowania zapytania odbc execute(+statement, +ParameterValues) Podobny do predykatu odbc query/2. Używany do prostych zapytań, gdzie nie interesują nas wyniki zwrócone przez zapytanie. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 32 / 59

Wykonywanie zapytań SQL Zapytania sparametryzowane Zwolnienie zasobu odbc free statement(+statement) Predykat ten zwalnia przygotowany wcześniej zasób Statement, utworzony przez predykat odbc prepare. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 33 / 59

Wykonywanie zapytań SQL Zapytania sparametryzowane Przykład Przygotowanie zapytania o d b c p r e p a r e ( p s q l, SELECT nazwa FROM kompozycje WHERE s t a n >?, [ integer ], Statement ). Wykonanie zapytania o d b c e x e c u t e ( $Statement, [ 5 ], Rows ). Zwolnienie zasobu o d b c f r e e s t a t e m e n t ( $Statement ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 34 / 59

Wykonywanie zapytań SQL Pobieranie wyników zapytania Innym sposobem otrzymania wyników z zapytania jest użycie predykatu odbc fetch/3. odbc fetch(+statement, -Row, +Option) Predykat ten pobiera pojedynczy rekord ze zbioru wyników zapytania identyfikowanego przez Statement. Zapytanie Statement musi być utworzone przez predykat odbc prepare/5 przy użyciu opcji fetch(fetch) i wykonane za pomocą predykatu odbc execute/2. Row jest unifikowany pobranym rekordem lub atomem end of file po pobraniu wszystkich danych. Opcja Option jest jedną z poniższych: next - pobranie następnego wiersza prior - pobranie poprzedniego wiersza first - pobranie pierwszego wiersza last - pobranie ostatniego wiersza absolute(offset) - pobranie wiersza o numerze Offset relative(offset) - pobranie określonego wiersza względem bieżącej pozycji Offset relative(1) oznacza to samo co next() bookmark(offset) - zarezerwowane dla przyszłych implementacji Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 35 / 59

Wykonywanie zapytań SQL Pobieranie wyników zapytania Przykład f e t c h ( O p t ions ) : o d b c s e t c o n n e c t i o n ( p s q l, c u r s o r t y p e ( s t a t i c ) ), o d b c p r e p a r e ( p s q l, SELECT nazwa FROM kompozycje, [ ], Statement, [ f e t c h ( f e t c h ) ] ), o d b c e x e c u t e ( Statement, [ ] ), f e t c h ( Statement, O p t i o n s ). f e t c h ( Statement, O p t i o n s ) : o d b c f e t c h ( Statement, row (Row), O p t i o n s ), (Row == e n d o f f i l e > true ; w r i t e l n (Row), f e t c h ( Statement, O p t i o n s ) ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 36 / 59

Transakcje Zarządzanie transakcjami ODBC może działać w dwóch trybach transakcji. W domyślnym trybie wszystkie modyfikacje są zatwierdzane natychmiast po wykonaniu zapytania. Używając predykatu odbc set connection/2 można zmienić tryb, w którym ODBC przełącza się w tryb transakcji i każde zapytanie, które jest wykonywane uruchamia nową transakcję. Transakcje te mogą zostać zakończone przez użycie predykatu odbc end transaction/2. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 37 / 59

Transakcje Zarządzanie transakcjami Kończenie transakcji odbc end transaction(+connection, +Action) Powyższy predykat kończy bieżąco otwartą transakcję, jeżeli istnieje. Connection - uchwyt do połączenia Action - podejmowana akcja dla transakcji commit - zatwierdzenie transakcji rollback - porzucenie transakcji Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 38 / 59

Transakcje Zarządzanie transakcjami Przykład Wyłączenie automatycznego zatwierdzania transakcji o d b c s e t c o n n e c t i o n ( p s q l, auto commit ( f a l s e ) ). Zatwierdzenie bieżącej transakcji o d b c e n d t r a n s a c t i o n ( p s q l, commit ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 39 / 59

Dostęp do słownika bazy danych (Data Dictionary) Słownik bazy danych (Data Dictionary) Słownik Bazy Danych (Data Dictionary) Słownik Bazy Danych (ang. Data Dictionary) zawiera zestaw opisów definiujących wszystkie wchodzące w skład bazy danych tabele (ang. Tables), a także definicje indeksów (ang. Indexes), sekwencji (ang. Sequences) i wyzwalaczy (ang. Triggers). W Słowniku Bazy Danych definiowane są także warunki walidacyjne, reguły integralności bazy danych i ograniczenia w dostępie do danych. Jednym z narzędzi zabezpieczenia integralności bazy danych są wyzwalacze, czyli specyficzne procedury definiowane przez projektanta bazy i uruchamiane automatycznie w momencie wykonywania określonych akcji (np. dodanie nowego rekordu, modyfikacja zawartości pola itp.). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 40 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych odbc current table(+connection, -Table) Powyższy predykat zwraca podczas nawracania nazwy wszystkich tabel przechowywanych w bazie danych identyfikowanej przez Connection. Connection - uchwyt do połączenia Table - zmienna, która zostanie ukonkretniona wszystkimi nazwami tabel Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 41 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Przykład Pobranie nazw tabel składowanych w bazie o d b c c u r r e n t t a b l e ( p s q l, T a b l e s ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 42 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) odbc current table(+connection,?table,?property) Powyższy predykat pobiera informacje o tabeli. Connection - uchwyt do połączenia Table - nazwa tabeli Property - właściwość tabeli Property: qualifier(qualifier) - nazwa bazy danych, w której znajduje się tabela owner(owner) - właściciel comment(comment) - komentarz arity(arity) - ilość kolumn w tabeli Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 43 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Przykład Pobranie informacji o tabeli o d b c c u r r e n t t a b l e ( p s q l, kompozycje, W l a s c i w o s c i ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 44 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) odbc table column(+connection,?table,?column) Powyższy predykat pozwala uzyskać nam nazwy kolumn tabeli. Connection - uchwyt do połączenia Table - nazwa tabeli, dla której pobierane będą nazwy kolumn Column - zmienna, która zostanie ukonkretniona wszystkimi nazwami kolumn Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 45 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Przykład Uzyskanie nazw kolumn tabeli o d b c t a b l e c o l u m n ( p s q l, kompozycje, Names ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 46 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) odbc table column(+connection,?table,?column,?facet) Powyższy predykat pozwala nam uzyskać informacje o kolumnie tabeli. Connection - uchwyt do połączenia Table - nazwa tabeli, dla której pobierane będą nazwy kolumn Column - nazwa kolumny Facet - właściwość kolumny Facet: table qualifier(qualifier) - nazwa bazy danych, w której znajduje się tabela kolumny table owner(owner) - właściciel tabeli kolumny table name(table) - nazwa tabeli kolumny data type(datatype) - identyfikator typu type name(typename) - nazwa typu precision(precision) - precyzja length(length) - długość (w bajtach) scale(scale) - ilość miejsc po przecinku nullable(nullable) - czy może być NULL type(type) - typ reprezentowany przez Prolog Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 47 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Przykład Uzyskanie właściwości kolumny o d b c t a b l e c o l u m n ( p s q l, kompozycje, cena, P r o p e r t y ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 48 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) odbc type(+connection,?typespec,?property) Powyższy predykat pozwala nam na uzyskanie informacji o typach danych obsługiwanych przez źródło danych. Connection - uchwyt do połączenia TypeSpec - identyfikator typu lub stała all types, która wylistuje wszystkie typy danych Property - właściwość typu Property: name(name) - nazwa typu data type(datatype) - identyfikator typu precision(precision) - precyzja literal prefix(prefix) - znak specjalny występujący przed znakiem literal suffix(suffix) - znak specjalny występujący za znakiem create params(createparams) - parametry przy definiowaniu, np. przy określaniu precyzji nullable(bool) - czy może przyjąć NULL case sensitive(bool) - czy rozróżnia wielkość liter searchable(searchable) - czy może występować w kryterium wyszukiwania unsigned(bool) - czy reprezentuje typ bez znaku money(bool) - czy reprezentuje typ monetarny auto increment(bool) - czy automatycznie zwiększa swoją wartość minimum scale(minscale) - minimalny rozmiar typu maximum scale(maxscale) - maksymalny rozmiar typu Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 49 / 59

Dostęp do słownika bazy danych (Data Dictionary) Dostęp do słownika bazy danych (Data Dictionary) Przykład Uzyskanie informacji o typie int4(identyfikator: 4) o d b c t y p e ( p s q l, 4, P r o p e r t y ). Pobranie listy wszystkich typów danych obsługiwanych przez bazę danych o d b c t y p e ( p s q l, a l l t y p e s, name( Type ) ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 50 / 59

Dodatkowe informacje Pobieranie dodatkowych informacji odbc statistics(?key) Powyższy predykat pozwala nam na uzyskani statystyk dotyczących zapytań. Key - zdefiniowany jako: statements(utworzone, Zwolnione) Otrzymanie informacji o liczbie utworzonych i zwolnionych instrukcji przez wszystkie połączenia. Zapytania wykonywane za pomocą odbc query/[2-3] zwiększają liczbę utworzonych zapytań oraz zwiększają liczbę zwolnionych zapytań, gdy zostaną wykonane bez względu na to czy zakończyły się one powodzeniem, nie powodzeniem czy nawet rzuciło wyjątkiem. Zapytania utworzone za pomocą odbc prepare/[4-5] zwiększają tylko liczbę utworzonych zapytań, a odbc free statement/1 liczbę zwolnionych zapytań Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 51 / 59

Dodatkowe informacje Pobieranie dodatkowych informacji Przykład Pobranie statystyk zapytań do bazy o d b c s t a t i s t i c s ( s t a t e m e n t s ( Utworzonych, Zwolnionych ) ). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 52 / 59

Dodatkowe informacje Pobieranie dodatkowych informacji Ustawienie poziomu debugger a odbc debug(+level) Powyższy predykat pozwala nam ustawić poziom pracy debugger a. Level - poziom debugger a, domyślnie: 0 Na najwyższym poziomie wypisywane są wszystkie informacje, przydatne głównie dla deweloperów Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 53 / 59

Reprezentacja danych SQL w Prologu Typy danych Prologa SQL posiada więcej typów niż Prolog, niektóre z nich są identyczne jak w Prologu. Jednak część typów SQL jest reprezentowana w Prologu przez jeden typ dzięki wbudowanej w interfejsie ODBC/Prolog funkcji do przekształcania typów. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 54 / 59

Reprezentacja danych SQL w Prologu Typy danych Prologa Reprezentacja typów SQL w Prologu atom Typ używany domyślnie dla następujących typów SQL: char, varchar, longvarchar, binary, varbinary, longvarbinary, decimal i numeric. Może być używany do wszystkich typów. string Rozszerzony typ string w SWI-Prolog. Może być używany do wszystkich typów. codes Lista znaków. Może być używana do wszystkich typów. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 55 / 59

Reprezentacja danych SQL w Prologu Typy danych Prologa Reprezentacja typów SQL w Prologu integer Typ używany domyślnie dla następujących typów SQL: bit, tinyint, smallint i integer. Należy zwrócić uwagę, że typ integer w SWI-Prolog jest wartością 32-bitową ze znakiem, podczas gdy typ SQL zezwala także na typ bez znaku. Typ ten może być używany do typów całkowitych, a także do typu decimal, date i timestamp, który reprezentowany jest według czasu POSIX (sekundy liczone są od 1 Stycznia 1970). double Typ używany domyślnie dla następujących typów SQL: real, float i double. Typ ten może być używany do typów całkowitych, float i decimal, a także do date i timestamp, który reprezentowany jest jako timestamp według POSIX (sekundy liczone są od 1 Stycznia 1970). Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 56 / 59

Reprezentacja danych SQL w Prologu Typy danych Prologa Reprezentacja typów SQL w Prologu date Term w Prologu w formacie date(rok,miesiąc,dzień) używany jako domyślny typ dla typu SQL date time Term w Prologu w formacie time(godzina,minuta,sekunda) używany jako domyślny typ dla typu SQL time timestamp Term w Prologu w formacie timestamp(rok, Miesiąc, Dzień, Godzina, Minuta, Sekunda, Milisekundy)) używany jako domyślny typ dla typu SQL timestamp Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 57 / 59

Zakończenie Literatura Źródła informacji: http://www.swi-prolog.org/pldoc/package/odbc.html http://www.unixodbc.org/ http://home.agh.edu.pl/~ligeza/wiki/_media/presentations: odbc_latin2.pdf?id=presentations%3aprolog&cache=cache https://ai.ia.agh.edu.pl/wiki/_media/pl:miw:referat.pdf http://www.amzi.com/manuals/amzi/ls/lsxodbc.htm http://www.easysoft.com/developer/interfaces/odbc/linux.html https://ai.ia.agh.edu.pl/wiki/pl:prolog:prolog_lab:prolog_lab_rdbms http://publib.boulder.ibm.com/infocenter/idshelp/v10/index.jsp?topic=/com. ibm.odbc.doc/odbc20.htm W. F. Clocksin, C. S. Mellish - Prolog. Programowanie Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 58 / 59

Zakończenie Pożegnanie i podziękowanie Dziękuję za ewentualną uwagę. Paweł Maślanka (PWSZ w Tarnowie) Dostęp do DBMS w Prologu za pomocą API ODBC 8 stycznia 2011 59 / 59