Instrukcja laboratoryjna nr.4

Wielkość: px
Rozpocząć pokaz od strony:

Download "Instrukcja laboratoryjna nr.4"

Transkrypt

1 Języki programowania na platformie.net 2017/18 Instrukcja laboratoryjna nr.4 Biblioteka NHibernate Prowadzący: Tomasz Goluch Wersja: 2.0

2 I. Biblioteka NHibernate. Cel: Instalacja biblioteki NHibernate, utworzenie nowej bazy danych SqlServer CE oraz skonfigurowanie połączenia. Aby zainstalować bibliotekę NHibernate w projekcie najlepiej wykorzystać Nugeta (komenda: Install-Package <NazwaPakietu> [-Version <WersjaBiblioteki>] [-Project <NazwaProjektu>]) np.: Uwaga w celu instalacji najnowszej wersji biblioteki (aktualnie 5.0.0) wymagany jest.net w wersji W wyniku instalacji powinniśmy otrzymać następujące referencje: Dodać nową lokalną bazę danych: Project Add NewItem (Ctrl+Shift+A) Service-based Database. Następnie należy dodać plik konfiguracyjny nhibernate.cfg.xml: <hibernate-configuration xmlns="urn:nhibernate-configuration-2.2" > <session-factory name="nhibernate.test"> <property name="connection.driver_class"> NHibernate.Driver.Sql2008ClientDriver </property> <property name="connection.connection_string"> Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename= DataDirectory \WZGLEDNA_SCIEZKA_DO_BAz Y_DANYCH.mdf;Integrated Security=True </property> <property name="dialect">nhibernate.dialect.mssql2008dialect</property> <property name="show_sql">true</property> <mapping assembly="nazwa_assembly" /> </session-factory> </hibernate-configuration> Należy zwrócić uwagę czy: element <property name="connection.connection_string"> zawiera poprawny Connection string. Można go odnaleźć we właściwościach (okienko baz danych, nie projektu) pliku *.sdf Connection string i skopiować do powyższego pliku konfiguracyjnego, element <property name="show_sql"> ustawiony na true wypisuje w oknie konsoli zapytania bazodanowe, pozwala to na obserwację mechanizmu leniwego ładowania,

3 wartość atrybutu assembly elementu mapping to nazwa podzespołu w zawierającego mapowane klasy. Właściwości Build Action i Copy to Output Directory pliku konfiguracyjnego powinny być ustawione na Content i Copy Always. Wczytanie pliku konfiguracyjnego: Configuration cfg = new Configuration(); cfg.configure(); // domyślnie hibernate.cfg.xml w innym przypadku należy podać II. Sesja. Cel: Utworzenie sesji przy użyciu fabryki. Obiekt fabryki jest obiektem ciężkim i powinniśmy tworzyć tylko jeden dla danej konfiguracji. Pozwala on na tworzenie lekkich obiektów sesji, w ramach których będą wykonywane operacje bazodanowe. W celu wymuszenia zmian w bazie danych można wykorzystać metodę Flush(). ISessionFactory sf = cfg.buildsessionfactory(); using (ISession cs = sf.opensession()) { // Tutaj umieszczamy kod cs.flush(); // Kontynuujemy po utrwaleniu zmian w bazie } sf.close(); III. Trwałe obiekty. Cel: Tworzenie klas obiektów utrwalanych w bazie danych. Każdy utrwalany obiekt to zwykły obiekt klasy jednakże powinna spełniać kilka wymagań: powinna być publiczna aby skorzystać z leniwego ładowania, posiadać publiczny bezparametrowy konstruktor (może być domyślny 1 ), 1 W przypadku zaimplementowania dowolnego konstruktora, domyślny bezparametrowy konstruktor jest niedostępny i trzeba go zaimplementować explicite.

4 właściwości klasy powinny być wirtualne (NHibernate tworzy obiekty proxy wywodząc je z naszej klasy nadpisuje właściwości, więc muszą być wirtualne) powinna istnieć właściwość, która będzie identyfikatorem obiektu (tak jak id w bazie danych 2 ) public class Klasa { public Klasa() { } public virtual int id { get; set; } public virtual string data { get; set; } } Każdej klasie trwałych obiektów odpowiada plik konfiguracyjny.<nazwa_klasy>.hbm.xml (NAZWA_KLASY musi być zgodna z rzeczywistą nazwą klasy a nie z nazwą pliku w którym jest jej definicja). <?xml version="1.0" encoding="utf-8"?> <hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="nazwa_namespace" assembly="nazwa_assembly"> <class name="nazwa_klasy" table="nazwa_tabeli_w_bazie_danych"> <id name="id"> <generator class="native" /> </id> <property name="nazwa_property" column="nazwa_kolumny_w_bazie_danych" /> </class> </hibernate-mapping> id opisuje właściwość, która jest identyfikatorem obiektu o generator opisuje, w jaki sposób będą generowane wartości dla tworzonych elementów, poniżej omówiono tylko wybrane 3 : class="increment" generuje identyfikatory dowolnego typu integralnego (sbyte, byte, short, ushot, int, uint, ulong, char), które są unikalne tylko wtedy, gdy tylko jeden proces wstawia dane do tej tabeli, class="identity" wsparcie dla automatycznie generowanych wartości kolumny w DB2, MySQL, MS SQL Server, Sybase i HypersonicSQL (np. AUTO_INCREMENT w MySQL). Zwracany identyfikator jest konwertowany za pomocą Convert.ChangeType do właściwości dowolnego typu integralnego, class="sequence" generuje niepowtarzalną wartość wykorzystując konstrukcję SEQUENCE dostępną w bazach danych DB2, Interbase, Oracle, PostgreSQL i SAP DB. Konwersja identyfikatora identycznie jak w przypadku identity. 2 Dla NHibernate, dwa obiekty o tym samym identyfikatorze to te same id. W większości sytuacji biblioteka będzie nam gwarantowała, że jeżeli id dwóch obiektów jest takie samo, to jest to ten sam obiekt w pamięci. 3 Więcej informacji o sposobach generowania kluczy przez NHibernate można znaleźć tutaj: i tutaj:

5 class="hilo" wykorzystuje algorytm Hi/Lo do wydajnego generowania identyfikatorów dowolnego typu integralnego, class="native" identity, sequence albo hilo w zależności który sposób jest najbardziej natywny dla danej bazy danych. class="guid" wykorzystywany jest typ System.Guid class="guid.comb" jak powyżej tylko do generowania kluczy wykorzystywany jest algorytm opisany tutaj. property opisują właściwości klasy, zawierają między innymi takie atrybuty jak: o name odpowiada nazwie właściwości w klasie, o column (opcjonalny) odpowiada nazwie kolumny w bazie, domyślnie kolumna przyjmie nazwę właściwości, o type (opcjonalny) typ identyfikatora podany explicite. Lista dostępnych typów jest dostępna tutaj: Właściwość Build Action należy ustawić na Embbeded Resource ponieważ NHibernate przegląda osadzone zasoby w poszukiwaniu plików *.hbm.xml i pobiera z nich opisy obiektów. NHibernate jest w stanie zapamiętać, bez dodatkowego wysiłku z naszej strony, wszystko, co jest serializowalne (ISerializable) byle był w stanie przełożyć to na zawartość kolumny w bazie (dla ISerializable potrzebna jest kolumna typu varbinary/blob/itp.). W celu automatycznej weryfikacji składni plików konfiguracyjnych możemy podać VS ich definicje. W tym celu należy kliknąć na odpowiednim pliku.xml i we właściwościach podać dla właściwości Schemas ścieżkę do odpowiedniego pliku.xsd znajdującego się w głównym katalogu NHibernate. Dla pliku konfiguracji NHibernate jest to nhibernate-configuration.xsd a dla plików mapowania nhibernate-mapping.xsd.

6 Tabele można utworzyć ręcznie (wtedy trzeba pamiętać o zgodności tabeli z opisem), gdy nie podamy parametru column, to kolumna musi nazywać się tak samo jak właściwość. Typy kolumn powinny być zgodne z typami properties w rozsądnym zakresie, biblioteka jest w stanie przechowywać np. liczbę w kolumnie typu varchar, ale w drugą stronę sobie nie poradzi. Automatyczne tworzenie/aktualizacja tabel: new SchemaExport(cfg).Execute(false, true, false); cfg obiekt konfiguracji (musi być skonfigurowany) pierwszy parametr czy wyświetlać na konsolę utworzony opis (create-y), drugi parametr czy rzeczywiście wykonać ddl na bazie, trzeci parametr jeżeli true, to będą wykonane tylko drop-y (usunięcie tabel, bez tworzenia), np. false, true, false utwórz na nowo wszystkie tabele, np. false, true, true tylko usuń tabele (np. po wykonaniu testów), np. true, false, false wyświetl, to co byłoby zrobione, ale nic nie wykonuj, uwaga! stare dane zostaną usunięte. new SchemaUpdate(cfg).Execute(false, true); parametry, poza ostatnim, identyczne jak w przypadku SchemaExport. Trwały obiekt może znajdować się w jednym z trzech stanów: przejściowy nie ma przydzielonego trwałego identyfikatora (np. zaraz po utworzeniu obiektu, kiedy nie został jeszcze zapisany w bazie), trwały ma trwały identyfikator i może być już powiązany z wierszem w bazie danych; przypisany jest do istniejącej, otwartej sesji; w tym stanie gwarantowane jest, że jeżeli dwa obiekty mają takie samo id, to jest to ten sam obiekt w pamięci ; w tym stanie operacje na obiekcie będą automagicznie utrwalane w bazie danych, odłączony ma przypisany trwały identyfikator i być może wiersz w bazie, ale sesja w której istniał została zamknięta lub obiekt został przeserializowany do innego procesu; nie mamy gwarancji z drugiego punktu. Utworzenie obiektu: tak, jak wszystkie obiekty: new NazwaKlasy() (obiekt w stanie przejściowym) PersistClass pc = new PersistClass(); Zapisanie w bazie (obiekt staje się trwały): currentsession.save(obiekt) currentsession.save(obiekt, id_dla_niego) (jeżeli id jest assigned i jeszcze nie przypisaliśmy go do obiektu) cs.save(pc); cs.save(pc, 1); Odczytanie obiektu z bazy: currentsession.get<typ>(id_obiektu_do_odczytania)

7 PersistClass pc2 = cs.get<persistclass>(1); jeżeli obiekt nie istnieje w bazie, zostanie zwrócone null jeżeli obiekt był już wcześniej odczytany, otrzymamy referencję na niego: PersistClass pc = new PersistClass(); cs.save(pc, 1); PersistClass pc2 = cs.get<persistclass>(0); Console.WriteLine(pc.Equals(pc2)); // "true" - pc2 wskazuje na ten sam obiekt co pc usunięcie: cs.delete(pc); // obiekt, nie jego id! aktualizacja: cs.save(pc); cs.update(pc); Transakcje: mechanizm jak w SQL ITransaction t = null; t = cs.begintransaction(); możemy też jawnie zdefiniować poziom izolacji transakcji: t = cs.begintransaction(system.data.isolationlevel.<isolationlevel>) zatwierdzenie/odwołanie transakcji: t.commit(); t.rollback(); IV. Zawieranie obiektów i kolekcji Cel: Utrwalanie złożonych obiektów i kolekcji oraz wykorzystanie funkcji leniwego ładowania.. Obiekty mogą zawierać inne obiekty, a dokładnie referencje do niech. Jest to reprezentowane w bazie danych przy pomocy relacji jeden do wielu, oraz w pliku mapującym przy pomocy odpowiedniego elementu many-to-one: <many-to-one name="nazwa_obiektu_zawieranej_klasy" column="nazwa_tabeli_zawieranej_klasy" cascade="all" /> atrybuty jak w przypadku elementu property, atrybut cascade opisuje operacje na powiązanych obiektach: o all zapisuje/aktualizuje/usuwa obiekt bieżący i te, na które ma referencje, o save-update po referencjach przenoszą się tylko operacje save i update, o delete tylko operacje usuwania,

8 o none żadne operacje. np. dla kodu: PersistClass pc = new PersistClass(); pc.ac = new AggregatedClass(); cs.save(pc); dla cascade="none" lub "delete" utrwalona zostanie tylko klasa pc (pc.ac musimy utrwalić sami). W pozostałych przypadkach zostanie zapisane w bazie zarówno pc jak i pc.ac. Jeżeli ręcznie tworzymy bazę, należy dodać kolumnę, która będzie przechowywała identyfikator obiektu, na który trzymamy referencję (agregowanego). W celu zaobserwowania obserwacja leniwego ładowania należy: w pliku konfiguracyjnym ustawić: <property name="show_sql">true</property>. utworzyć obiekt A i B, powiązany z nim (A ma referencję na B) w nowej sesji (np. nowe uruchomienie programu): odczytać z bazy A, wypisać zawartość pól (innych niż referencja) wypisać zawartość pól obiektu, do którego mamy referencję obiekt B zostanie odczytany z bazy dopiero wówczas, gdy będziemy próbowali wypisać jego pola (dopiero przed drugim wypisaniem); do tego czasu B istnieje jako proxy. V. Dziedziczenie. Cel: Realizacja paradygmatu mechanizmu dziedziczenia przy pomocy NHibernate.. Sposoby realizacji dziedziczenia: model tabela na klasę: o cała klasa i jej potomne przechowywane są w jednej tabeli. Klasy rozróżniane są po discriminator-value, króra przechowywana jest w osobnej kolumnie, o kolumny nie mogą mieć ograniczenia not null, o tabela powinna posiadać kolumny dla wszystkich podklas, <class name="ipayment" table="payment"> <id name="id" type="int64" column="payment_id"> <generator class="native"/> </id> <discriminator column="payment_type" type="string"/> <property name="amount" column="amount"/> <subclass name="creditcardpayment" discriminator-value="credit"> </subclass> <subclass name="cashpayment" discriminator-value="cash"> </subclass> <subclass name="chequepayment" discriminator-value="cheque"> </subclass> </class>

9 model tabela na podklasę: o pola, o które klasa bazowa jest rozszerzona przechowywane są w osobnej tabeli, o tabela ta zawiera dodatkowe pole identyfikator obiektu bazowego, o obiekt klasy potomnej przechowywany jest częściowo w tabeli bazowej (pola klasy bazowej), a częściowo w dodatkowej tabeli; identyfikator wiąże oba wiersze, <class name="ipayment" table="payment"> <id name="id" type="int64" column="payment_id"> <generator class="native"/> </id> <property name="amount" column="amount"/> <joined-subclass name="creditcardpayment" table="credit_payment"> <key column="payment_id"/> </joined-subclass> <joined-subclass name="cashpayment" table="cash_payment"> <key column="payment_id"/> </joined-subclass> <joined-subclass name="chequepayment" table="cheque_payment"> <key column="payment_id"/> </joined-subclass> </class> model tabela na konkretną klasę: o każda klasa posiada swoją tabelę, o każda tabela musi zawierać wszystkie swoje właściwości, o kolumny przechowujące pola klasy bazowej muszą nazywać się tak samo we wszystkich tabelach. <class name="payment"> <id name="id" type="int64" column="payment_id"> <generator class="sequence"/> </id> <property name="amount" column="amount"/> <union-subclass name="creditcardpayment" table="credit_payment"> <property name="creditcardtype" column="cctype"/> </union-subclass> <union-subclass name="cashpayment" table="cash_payment"> </union-subclass> <union-subclass name="chequepayment" table="cheque_payment"> </union-subclass> </class>

10 VI. Kolekcje Cel: Utrwalanie kolekcji.. NHibernate pozwala na utrwalanie całych kolekcji. Aktualnie wspierane są tylko kolekcje generyczne. Dostępne są różne elementy set, list, map, bag, array, primitive-array odpowiadające odpowiednim kolekcjom.net. Mapowanie wymaga zachowania pewnych reguł: pola w klasie powinny być typu interfejsowego ( IList, ISet, IDictionary, IDictionary<>, itp.) obiekty powinny być utworzone w konstruktorze: public PersistClass() { IntSet = new HashSet<int>(); } public virtual ISet<int> IntSet { get; set; } lub jako wartość początkowa: public virtual ISet<int> IntSet { get; set; } = new HashSet<int>(); NHibernate podczas zapisywania podmienia zawartość pola na swoją implementację, więc nie będzie poprawne wywołanie: HashSet s = klasa.dane; kolekcje poza ISet<int> posiadają indeks liczbę typu Int32 lub dowolnego typu (w przypadku słowników). Należy to uwzględnić ręcznie tworząc tabele. Kolekcja przechowywana jest w osobnej tabeli, której kolumny zawierają: o daną o indeks (poza ISet<int>) o klucz/identyfikator obiektu, do którego należą Mapowanie listy typów prostych: <list name="nazwa_property" table="nazwa_tabeli" > <key column = "KOLUMNA_KLUCZY"/> <index column="kolumna_indeksów"/> <element column="kolumna_danych" type="typ_danych "/> </list> Mapowanie zbioru typów złożonych: <set name="nazwa_property" table="nazwa_tabeli" > <key column = "KOLUMNA_KLUCZY"/> <one-to-many class = "NAZWA_KLASY"/> </set> Słownik IDictionary<string, int>: public virtual IDictionary<string, int> DataDict { get; set; } = new Dictionary<string, int>(); <map name="nazwa_property " table="nazwa_tabeli"> <key column="kolumna_kluczy" /> <index column=" KOLUMNA_INDEKSÓW" type="string" /> <element column="kolumna_danych" type="int32" />

11 </map> NAZWA_PROPERTY nazwa wirtualnej właściwości w klasie reprezentującej kolekcję.net, NAZWA_TABELI nazwa tabeli, w której będą przechowywane dane kolekcji, KOLUMNA_KLUCZY nazwa kolumny w tabeli NAZWA_TABELI, przechowującej identyfikator obiektu, do którego wiersz należy, KOLUMNA_INDEKSÓW nazwa kolumny w tabeli NAZWA_TABELI, przechowującej indeks wartości kolekcji indeksowanych takich jak list i map (dla węzłów innych niż map typ powinien być Int32), KOLUMNA_DANYCH to nazwa kolumny w tabeli NAZWA_TABELI, przechowującej daną przypisaną do klucza W przypadku słowników jeżeli indeks jest obiektem, zamiast elementu index należy użyć elementu index-many-to-many, jeżeli wartość jest obiektem, zamiast elementu element należy użyć elementu many-to-one. VII. Zapytania HQL 4. Cel: Zapoznanie z językiem zapytań Hibernate Query Language. HQL jest językiem zapytań podobnym do SQL, obsługuje większość konstrukcji z SQL, jednak jest to język w pełni obiektowy i rozumie takie pojęcia jak dziedziczenie, polimorfizm i asocjacja. Jest case insensitive oprócz nazw klas i właściwości które muszą być pisane z uwzględnieniem wielkości liter. IQuery q = cs.createquery("from PersistClass k"); // Klasa: nazwa TYPU! //IEnumerable<PersistClass> data = q.enumerable<persistclass>(); //IList<PersistClass> data = q.list<persistclass>(); ICollection<PersistClass> data = q.list<persistclass>(); foreach (PersistClass v in data) Console.WriteLine("PersistClass({0},\"{1}\")", v.id, v.data); Parametrem do CreateQuery jest zapytanie w języku HQL. HQL to taki SQL, w którym zamiast nazw tabel i kolumn mamy typy (klasy) i ich pola, np.: "from Klasa k where k.id < 10" select * można pominąć Konstrukcje: FROM Namespace.Class from Class c alias From Class as c j.w. from A, B iloczyn kartezjański lub "cross" join from A as a, B as b j.w inner join 4 Więcej szczegółowych informacji o składni HQL można znaleźć tutaj:

12 left outer join right outer join where a.data = b. Data warunki (nazwy pól klas a nie kolumn!) where a.data like 'a_%_%' % - zero lub więcej znaków, _ - jeden znak is null is not null between A and B in ( Foo, Bar, Baz ) select from wybrane pola z klasy, wartością elementami kolekcji będą: o jeżeli wybieramy tylko jedno pole obiekty typu tego pola, o jeżeli wybieramy kilka poł będą siedzieć w tabeli obiektów. IList<object[]> datatab = cs.createquery("select id, data from PersistClass pk").list<object[]>();int id = (int)datatab[0][0]; string data = (string)datatab[0][1]; parametry zapytania: o pozycyjne:? ("where k.id=?") o nazwane: :nazwa (dwukropek nazwa) ("where dana=:param") IQuery::SetString/SetInt32/SetParameter/Set(nazwa_lub_numer, obiekt) o nazwa_lub_numer to numer parametru pozycyjnego (liczba, licząc od 0) lub nazwa parametru nazwanego (string) o obiekt wartość do nadania parametrowi IQuery::SetFirstResult(numer) numer pierwszego zwróconego wiersza IQuery::SetMaxResults(liczba) ustawienie maksymalnej liczby zwróconych wierszy Wykorzystanie kolekcji w HQL: "from Klasa k where k[ klucz ] = 5" VIII. Zapytania SQL 5. Cel: Zapoznanie z wykorzystaniem natywnego języka zapytań SQL w NHibernate. Realizacja zapytań SQL jest kontrolowana przez interfejs ISQLQuery, który jest uzyskiwany przez wywołanie metody ISession.CreateSQLQuery(), której parametrem jest zapytanie w SQL. Wynik zapytania należy opisać: ISQLQuery::AddScalar(nazwa, typ) nazwa alias kolumny wyniku (string) typ typ wyniku (NHibernateUtil.[String Int32 itd.]) ISQLQuery::List() (nie ma enumerable): IList l = query.list() 5 Więcej o Native SQL dla NHibernate tutaj:

13 wynik lista obiektów (jeżeli pojedyncza kolumna) lub lista tablic obiektów (jak przy zapytaniach HQL) jeżeli chcemy otrzymać obiekty "SELECT {t.*} from tabela t": o tabela nazwa tabeli, w której przechowywane są obiekty o {t.*} oznacza wszystkie pola klasy z indywidualnymi polami jest problem trzeba odpowiednio aliasować kolumny, tworzyć dodatkowe opisujące typ itp. spojrzeć na rzeczywiste zapytanie (<property name="show_sql">true</property>) ISQLQuery sq = cs.createsqlquery("select id, info FROM persistclassindb").addscalar("id", NHibernateUtil.Int32).AddScalar("info", NHibernateUtil.String); IList e = q.list(); foreach (object[] v in e) Console.WriteLine("{0} {1}", v[0], v[1]); Obiekty też należy opisać: ISQLQuery::AddEntity(alias_kolumny, typ_obiektu) ISQLQuery sq = cs.createsqlquery("select { pk.*} from persistclassindb pk").addentity("pk", typeof(persistclass)); IList<PersistClass> f = q.list<persistclass>(); foreach (var v in f) Console.WriteLine("{0} {1}", v.id, v.data); Odczytanie klasy zawierającej kolekcję: ISQLQuery sq = cs.createsqlquery("select {k.*} from tab k, dict di where k.id = di.id").addentity("k", typeof(persistclass)); IList<PersistClass> f = q.list<persistclass>(); foreach (var v in f) { Console.WriteLine("{0}", v.id); if (v.dict.containskey("ef")) Console.WriteLine(" ef = {0}", v.dict["ef"]); } Trzeba ręcznie powiązać dane z tabeli z elementami kolekcji. Powyższy przykład nie jest w pełni funkcjonalny NHibernate nie wie, że elementy słownika przeczytał już z bazy danych przy dostępie do niego wystąpi dodatkowe zapytanie do bazy. Aby poinformować NHibernate o odczytanych danych, trzeba dodatkowo opisać połączenie: AddJoin("nazwa_aliasu_tabeli_kolekcji", "alias_tabeli_obiektu.nazwa_pola_kolekcji") ISQLQuery sq = cs.createsqlquery("select {k.*}, {di.*} from tab k, dict di where k.id = di.id").addentity("k", typeof(persistclass)).addjoin("di", "k.dict");

14 IX. Błędy. Cel: Informacja i najczęściej spotykanych błędach podczas związanych z NHibernate. No persister for:<nazwa_assembly>.<nazwa_klasy> plik mapujący <NAZWA_KLASY>.hbm.xml nie istnieje lub ma złą nazwę możliwe, że nie jest dołączany jako zasób osadzony (Properties BuildAction: Embedded Resource). Could not compile the mapping document: <NAZWA_ASSEMBLY>.<NAZWA_ KLASY >.hbm.xml najprawdopodobniej nazwie pliku mapującego nie odpowiada, żadna klasa (liczy się nazwa obiektu a nie pliku). Invalid Cast (check your mapping for property type mismatches); setter of <NAZWA_ASSEMBLY>.<NAZWA_ KLASY> błąd rzutowania, należy sprawdzić czy wszystkie właściwiści klasy są poprawnie zdefiniowane w odpowiadającym jej pliku *.nhm.xml. could not insert: [<NAZWA_ASSEMBLY>.<NAZWA_KLASY>][SQL: INSERT INTO <NAZWA_TABELI_W_BAZIE_DANYCH> (<NAZWA_KOLUMNY_W_BAZIE_DANYCH>) VALUES (?); select SCOPE_IDENTITY()] możliwe, że nie istnieje wymagana tabela, możliwy brak wywołania new SchemaExport(cfg).Execute( ). <NAZWA_ASSEMBLY>.<NAZWA_KLASY>: method get_<nazwa_property> should be 'public/protected virtual' or 'protected internal virtual' property mapowane przez NHibernate muszą być virtual.

Podstawowe wykorzystanie Hibernate

Podstawowe wykorzystanie Hibernate Podstawowe wykorzystanie Hibernate Cel Wykonanie prostej aplikacji webowej przedstawiającą wykorzystanie biblioteki. Aplikacja sprawdza w zależności od wybranej metody dodaje, nową pozycje do bazy, zmienia

Bardziej szczegółowo

Podejście obiektowe do relacyjnych baz danych Hibernate.

Podejście obiektowe do relacyjnych baz danych Hibernate. Podejście obiektowe do relacyjnych baz danych Hibernate. Plan wykładu Czym jest Hibernate? Jakie są zalety pracy z Hibernate? Jak skonfigurować Hibernate? Jak korzystać z Hibernate? Praktyczne przykłady

Bardziej szczegółowo

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

Ję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ółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 6 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu CastleProject i wzorzec ActiveRecord Wybrane możliwości Castle ActiveRecord Inicjalizja i konfiguracja Tworzenie klasy encji, dziedziczenie

Bardziej szczegółowo

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

Laboratorium 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ółowo

Metody dostępu do danych

Metody dostępu do danych Metody dostępu do danych dr inż. Grzegorz Michalski Na podstawie wykładów dra inż. Juliusza Mikody Obiekt interfejsu Session Jest to podstawowy interfejs komunikacji pomiędzy aplikacją, a API Hibernate

Bardziej szczegółowo

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/

Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Paweł Rajba pawel@ii.uni.wroc.pl http://www.itcourses.eu/ Architektura Trwałość przezroczysta Konfiguracja, konfiguracja mapowania Dziedziczenie klas Kolekcje Asocjacje Cykl życia obiektów Trwałość przechodnia

Bardziej szczegółowo

Język SQL, zajęcia nr 1

Ję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ółowo

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego.

77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. 77. Modelowanie bazy danych rodzaje połączeń relacyjnych, pojęcie klucza obcego. Przy modelowaniu bazy danych możemy wyróżnić następujące typy połączeń relacyjnych: jeden do wielu, jeden do jednego, wiele

Bardziej szczegółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Klucz podstawowy PRIMARY KEY Klucz kandydujący UNIQUE Klucz alternatywny - klucze kandydujące, które nie zostały wybrane na klucz podstawowy Klucz obcy - REFERENCES Tworząc tabelę,

Bardziej szczegółowo

Systemy GIS Tworzenie zapytań w bazach danych

Systemy 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ółowo

Ćwiczenia laboratoryjne nr 11 Bazy danych i SQL.

Ć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ółowo

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1

Tworzenie tabel. Bazy danych - laboratorium, Hanna Kleban 1 Tworzenie tabel Tabela podstawowa struktura, na której zbudowana jest relacyjna baza danych. Jest to zbiór kolumn (atrybutów) o ustalonych właściwościach, w których przechowuje się dane. Dane te są reprezentowane

Bardziej szczegółowo

Pawel@Kasprowski.pl Bazy danych. Bazy danych. Podstawy języka SQL. Dr inż. Paweł Kasprowski. pawel@kasprowski.pl

Pawel@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ółowo

Wprowadzenie do Doctrine ORM

Wprowadzenie 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ółowo

Instrukcja laboratoryjna nr.2

Instrukcja laboratoryjna nr.2 Języki programowania na platformie.net 2017/18 Instrukcja laboratoryjna nr.2 Kontener Unity Prowadzący: Tomasz Goluch Wersja: 2.0 I. Kontener Unity. Cel: Instalacja i konfiguracja kontenera Unity. Rejestracja

Bardziej szczegółowo

Wykład 5. SQL praca z tabelami 2

Wykł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ółowo

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

Blaski 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ółowo

Programowanie wielowarstwowe i komponentowe

Programowanie wielowarstwowe i komponentowe Programowanie wielowarstwowe i komponentowe HIBERNATE CD. Rodzaje relacji Jeden do wielu Pojedyncza Osoba ma wiele Wpisów Wiele do jednego Wiele Wpisów należy do jednej Osoby Jeden do jednego Pojedyncza

Bardziej szczegółowo

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate

Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Wirtualne przedsiębiorstwo II Mapowanie obiektowo-relacyjne z wykorzystaniem Hibernate Łukasz Macierzyński 157588 Daniel Nikończuk 157621 Kacper Oko 157626 Agenda 1. Co to jest mapowanie obiektowo-relacyjne

Bardziej szczegółowo

PHP 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: 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ółowo

PRZESTRZENNE BAZY DANYCH WYKŁAD 2

PRZESTRZENNE 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ółowo

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne

Baza danych sql. 1. Wprowadzenie. 2. Repozytaria generyczne Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z możliwości utworzenia struktury bazy danych z

Bardziej szczegółowo

Bazy danych. Polecenia SQL

Bazy 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ółowo

Instrukcja laboratoryjna

Instrukcja laboratoryjna Zaawansowane techniki obiektowe 2016/17 Instrukcja laboratoryjna Testy funkcjonalne Prowadzący: Tomasz Goluch Wersja: 1.0 Testowanie aplikacji z bazą danych Większość współczesnych aplikacji korzysta z

Bardziej szczegółowo

Bazy 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 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ółowo

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

strukturalny 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ółowo

Oracle PL/SQL. Paweł Rajba.

Oracle 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ółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne 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ółowo

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

Wprowadzenie 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ółowo

Baza danych sql. 1. Wprowadzenie

Baza danych sql. 1. Wprowadzenie Baza danych sql 1. Wprowadzenie Do tej pory operowaliście na listach. W tej instrukcji pokazane zostanie jak stworzyć bazę danych. W zadaniu skorzystamy z edytora graficznego struktury bazy danych, który

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut 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 3 (Tworzenie bazy danych z użyciem UML, proste

Bardziej szczegółowo

Sprawdzenie czy połączenie przebiegło poprawnie if (mysqli_connect_errno()) { echo Błąd; Połączenie z bazą danych nie powiodło się.

Sprawdzenie 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ółowo

Podstawy języka SQL. SQL Structured Query Languagestrukturalny

Podstawy 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ółowo

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

Bazy danych 6. Klucze obce. P. F. Góra Bazy danych 6. Klucze obce P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ 2018 Dygresja: Metody przechowywania tabel w MySQL Tabele w MySQL moga być przechowywane na kilka sposobów. Sposób ten (żargonowo:

Bardziej szczegółowo

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście.

Instrukcja podwaja zarobki osób, których imiona zaczynają się P i dalsze litery alfabetu zakładamy, że takich osbób jest kilkanaście. Rodzaje triggerów Triggery DML na tabelach INSERT, UPDATE, DELETE Triggery na widokach INSTEAD OF Triggery DDL CREATE, ALTER, DROP Triggery na bazie danych SERVERERROR, LOGON, LOGOFF, STARTUP, SHUTDOWN

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny Technologiczny Politechnika Śląska

Instytut 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ółowo

Wykład 6. SQL praca z tabelami 3

Wykład 6. SQL praca z tabelami 3 Wykład 6 SQL praca z tabelami 3 Łączenie wyników zapytań Język SQL zawiera mechanizmy pozwalające na łączenie wyników kilku pytań. Pozwalają na to instrukcje UNION, INTERSECT, EXCEPT o postaci: zapytanie1

Bardziej szczegółowo

Wdrożenie do projektu

Wdrożenie do projektu Wdrożenie do projektu Zaczynamy od stworzenia zwykłego projektu Java. Środowisko z jakiego korzystam to Netbeans IDE w wersji 8.1. Możesz wykorzystywać inne IDE, bylebyś stosował analogiczne kroki w swoim

Bardziej szczegółowo

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1

1 LINQ. Zaawansowane programowanie internetowe Instrukcja nr 1 1 LINQ 1 1. Cel zajęć Celem zajęć jest zapoznanie się z technologią LINQ oraz tworzeniem trójwarstwowej aplikacji internetowej. 2. Zadanie Proszę przygotować aplikację WWW, która: będzie pozwalała na generowanie

Bardziej szczegółowo

Przykłady najlepiej wykonywać od razu na bazie i eksperymentować z nimi.

Przykł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ółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu Programowanie obiektowe - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia.

Bardziej szczegółowo

koledzy, Jan, Nowak, ul. Niecała 8/23, , Wrocław, , ,

koledzy, 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ółowo

Programowanie 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 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ółowo

Programowanie obiektowe

Programowanie obiektowe Laboratorium z przedmiotu - zestaw 02 Cel zajęć. Celem zajęć jest zapoznanie z praktycznymi aspektami projektowania oraz implementacji klas i obiektów z wykorzystaniem dziedziczenia. Wprowadzenie teoretyczne.

Bardziej szczegółowo

Instrukcja laboratoryjna nr.3

Instrukcja laboratoryjna nr.3 Języki programowania na platformie.net 2017/18 Instrukcja laboratoryjna nr.3 Biblioteka EPPlus Prowadzący: Tomasz Goluch Wersja: 1.0 I. Biblioteka EPPlus. Cel: Podstawowe informacje o bibliotece EPPlus.

Bardziej szczegółowo

P o d s t a w y j ę z y k a S Q L

P o d s t a w y j ę z y k a S Q L P o d s t a w y j ę z y k a S Q L Adam Cakudis IFP UAM Użytkownicy System informatyczny Aplikacja Aplikacja Aplikacja System bazy danych System zarządzania baz ą danych Schemat Baza danych K o n c e p

Bardziej szczegółowo

Kurs programowania aplikacji bazodanowych

Kurs programowania aplikacji bazodanowych Wykład 5 Instytut Informatyki Uniwersytet Wrocławski Plan wykładu Wprowadzenie do XPO Podstawowe obiekty Utrwalanie obiektów Transakcje i współbieżność Wzorzec unit of work Odwzorowanie dziedziczenia Asocjacje

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej Wydział Mechaniczny technologiczny Politechnika Śląska

Instytut 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 3 (Tworzenie bazy danych z użyciem UML, proste

Bardziej szczegółowo

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3

ASP.NET MVC. Podstawy. Zaawansowane programowanie internetowe Instrukcja nr 3 3 ASP.NET MVC Podstawy 1 1. Cel zajęć Celem zajęć jest zapoznanie się z podstawami ASP.NET MVC 2.0 Framework. 2. Zadanie Proszę zbudować prostą aplikację WWW przy zastosowaniu framework a ASP.NET MVC 2.0

Bardziej szczegółowo

Obiektowy PHP. Czym jest obiekt? Definicja klasy. Składowe klasy pola i metody

Obiektowy 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ółowo

Bazy danych. Dr inż. Paweł Kasprowski

Bazy danych. Dr inż. Paweł Kasprowski Plan wykładu Bazy danych Podstawy relacyjnego modelu danych Dr inż. Paweł Kasprowski pawel@kasprowski.pl Relacyjne bazy danych Język SQL Zapytania SQL (polecenie select) Bezpieczeństwo danych Integralność

Bardziej szczegółowo

Instytut Mechaniki i Inżynierii Obliczeniowej fb.com/groups/bazydanychmt/

Instytut Mechaniki i Inżynierii Obliczeniowej   fb.com/groups/bazydanychmt/ Instytut Mechaniki i Inżynierii Obliczeniowej www.imio.polsl.pl fb.com/imiopolsl @imiopolsl fb.com/groups/bazydanychmt/ Wydział Mechaniczny technologiczny Politechnika Śląska Laboratorium 3 (Tworzenie

Bardziej szczegółowo

Integralność danych Wersje języka SQL Klauzula SELECT i JOIN

Integralność 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ółowo

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

Literatura: 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ółowo

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

Odnawialne Ź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ółowo

Bazy 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. 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ółowo

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

3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota Laboratorium nr 3 1 Bazy Danych Instrukcja laboratoryjna Temat: Wprowadzenie do języka SQL, tworzenie, modyfikacja, wypełnianie tabel 3 Przygotowali: mgr inż. Barbara Łukawska, mgr inż. Maciej Lasota 1)

Bardziej szczegółowo

Podstawy technologii WWW

Podstawy technologii WWW Podstawy technologii WWW Ćwiczenie 11 PHP, MySQL: więcej, więcej!, więcej!!. tabel i funkcjonalności. Na dzisiejszych zajęciach zdefiniujemy w naszej bazie kilka tabel powiązanych kluczem obcym i zobaczymy,

Bardziej szczegółowo

Relacyjne bazy danych. Podstawy SQL

Relacyjne 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ółowo

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

CREATE DATABASE ksiegarnia_internetowa DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci; Zestaw ćwiczeń1 Dzięki DDL (Data Definition Language) można operować na strukturach, w których dane są przechowywane czyli np. dodawać, zmieniać i kasować tabele lub bazy. Najważniejsze polecenia tej grupy

Bardziej szczegółowo

Bazy Danych i Usługi Sieciowe

Bazy 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ółowo

NHibernate. Narzędzie mapowania obiektowo - relacyjnego

NHibernate. Narzędzie mapowania obiektowo - relacyjnego NHibernate Narzędzie mapowania obiektowo - relacyjnego Autor : Maciej Białorucki Mapowanie obiektowo-relacyjne Mapowanie obiektowo - relacyjne Object Relation Mapping Dwa światy Dlaczego nie stosować baz

Bardziej szczegółowo

PHP: bazy danych, SQL, AJAX i JSON

PHP: 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ółowo

Projektowanie systemów baz danych

Projektowanie 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

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych

Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Programowanie obiektowe i zdarzeniowe wykład 4 Kompozycja, kolekcje, wiązanie danych Obiekty reprezentują pewne pojęcia, przedmioty, elementy rzeczywistości. Obiekty udostępniają swoje usługi: metody operacje,

Bardziej szczegółowo

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni

Język SQL Złączenia. Laboratorium. Akademia Morska w Gdyni Akademia Morska w Gdyni Gdynia 2004 1. Złączenie definicja Złączenie (JOIN) to zbiór rekordów stanowiących wynik zapytania służącego pobraniu danych z połączonych tabel (związki jeden-do-jeden, jeden-do-wiele

Bardziej szczegółowo

Wprowadzenie do projektowania i wykorzystania baz danych Relacje

Wprowadzenie 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ółowo

Wykład 8. SQL praca z tabelami 5

Wykład 8. SQL praca z tabelami 5 Wykład 8 SQL praca z tabelami 5 Podzapytania to mechanizm pozwalający wykorzystywać wyniki jednego zapytania w innym zapytaniu. Nazywane często zapytaniami zagnieżdżonymi. Są stosowane z zapytaniami typu

Bardziej szczegółowo

BAZY 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 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ółowo

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678');

UPDATE Studenci SET Rok = Rok + 1 WHERE Rodzaj_studiow =' INŻ_ST'; UPDATE Studenci SET Rok = Rok 1 WHERE Nr_albumu IN ( '111345','100678'); polecenie UPDATE służy do aktualizacji zawartości wierszy tabel lub perspektyw składnia: UPDATE { } SET { { = DEFAULT NULL}, {

Bardziej szczegółowo

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

Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Wyzwalacz - procedura wyzwalana, składowana fizycznie w bazie, uruchamiana automatycznie po nastąpieniu określonego w definicji zdarzenia Składowe wyzwalacza ( ECA ): określenie zdarzenia ( Event ) określenie

Bardziej szczegółowo

Przykładowa baza danych BIBLIOTEKA

Przykładowa baza danych BIBLIOTEKA Przykładowa baza danych BIBLIOTEKA 1. Opis problemu W ramach zajęć zostanie przedstawiony przykład prezentujący prosty system biblioteczny. System zawiera informację o czytelnikach oraz książkach dostępnych

Bardziej szczegółowo

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

Aby uruchomić program klienta i połączyć się z serwerem, należy komendę: Bazy danych. Komunikacja z serwerem Aby połączyć się z serwerem i móc wykonywać czynności związane z obsługą baz, potrzebny jest program klienta. Razem z serwerem MySQL dostępny jest działający w wierszu

Bardziej szczegółowo

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013

Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013 Projektowanie obiektowe oprogramowania Wykład 9 Wzorce architektury aplikacji (1) Wiktor Zychla 2013 1 Automated code generation To bardziej technika wspomagająca niż wzorzec, ale wykorzystywana w praktyce

Bardziej szczegółowo

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

DMX DMX DMX DMX: CREATE MINING STRUCTURE. Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski DMX DMX DMX Data Mining Extensions jest językiem do tworzenia i działania na modelach eksploracji danych w Microsoft SQL Server Analysis Services SSAS. Za pomocą DMX można tworzyć strukturę nowych modeli

Bardziej szczegółowo

Bazy danych i usługi sieciowe

Bazy 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ółowo

Autor: Joanna Karwowska

Autor: Joanna Karwowska Autor: Joanna Karwowska Jeśli pobieramy dane z więcej niż jednej tabeli, w rzeczywistości wykonujemy tak zwane złączenie. W SQL istnieją instrukcje pozwalające na formalne wykonanie złączenia tabel - istnieje

Bardziej szczegółowo

Indeksowanie w bazach danych

Indeksowanie w bazach danych w bazach Katedra Informatyki Stosowanej AGH 5grudnia2013 Outline 1 2 3 4 Czym jest indeks? Indeks to struktura, która ma przyspieszyć wyszukiwanie. Indeks definiowany jest dla atrybutów, które nazywamy

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Wykład 13 Marcin Młotkowski 27 maja 2015 Plan wykładu Trwałość obiektów 1 Trwałość obiektów 2 Marcin Młotkowski Programowanie obiektowe 2 / 29 Trwałość (persistence) Definicja Cecha

Bardziej szczegółowo

Podstawy programowania III WYKŁAD 2

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ółowo

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

Ref. 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ółowo

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

E.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ółowo

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

Systemy 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ółowo

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT

Konstruowanie Baz Danych SQL UNION, INTERSECT, EXCEPT Studia podyplomowe Inżynieria oprogramowania współfinansowane przez Unię Europejska w ramach Europejskiego Funduszu Społecznego Projekt Studia podyplomowe z zakresu wytwarzania oprogramowania oraz zarządzania

Bardziej szczegółowo

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami.

UML a kod w C++ i Javie. Przypadki użycia. Diagramy klas. Klasy użytkowników i wykorzystywane funkcje. Związki pomiędzy przypadkami. UML a kod w C++ i Javie Projektowanie oprogramowania Dokumentowanie oprogramowania Diagramy przypadków użycia Przewoznik Zarzadzanie pojazdami Optymalizacja Uzytkownik Wydawanie opinii Zarzadzanie uzytkownikami

Bardziej szczegółowo

Dostę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 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ółowo

Wykład 5 Okna MDI i SDI, dziedziczenie

Wykład 5 Okna MDI i SDI, dziedziczenie Wykład 5 Okna MDI i SDI, dziedziczenie Autor: Zofia Kruczkiewicz Zagadnienia 1. Aplikacja wielookienkowa. Zakładanie projektu typu CLR Windows Forms 1.1. Aplikacja typu MDI 1.2. Aplikacja typu SDI 2. Dziedziczenie

Bardziej szczegółowo

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory.

Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Typy metod: konstruktory, destruktory, selektory, zapytania, iteratory. Konstruktory Konstruktory w językach obiektowych są to specjalne metody wywoływane podczas tworzenia nowego obiektu i służące do

Bardziej szczegółowo

SQL (ang. Structured Query Language)

SQL (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ółowo

Wykład 5: PHP: praca z bazą danych MySQL

Wykł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ółowo

Wykład 4. SQL praca z tabelami 1

Wykład 4. SQL praca z tabelami 1 Wykład 4 SQL praca z tabelami 1 Typy danych Typy liczbowe Typy całkowitoliczbowe Integer types - Typ INTEGER; 32-bitowa liczba ze znakiem z zakresu -2 31 do 2 31 1 - Typ SMALLINT; typ całkowity mniejszy

Bardziej szczegółowo

CREATE USER

CREATE 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ółowo

Bazy danych 10. SQL Widoki

Bazy danych 10. SQL Widoki Bazy danych 10. SQL Widoki P. F. Góra http://th-www.if.uj.edu.pl/zfs/gora/ semestr letni 2005/06 Widoki, AKA Perspektywy W SQL tabela, która utworzono za pomoca zapytania CREATE TABLE, nazywa się tabela

Bardziej szczegółowo

Programowanie w Ruby

Programowanie 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ółowo

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH

2010-11-22 PLAN WYKŁADU BAZY DANYCH PODSTAWOWE KWESTIE BEZPIECZEŃSTWA OGRANICZENIA DOSTĘPU DO DANYCH PLAN WYKŁADU Bezpieczeństwo w języku SQL Użytkownicy Uprawnienia Role BAZY DANYCH Wykład 8 dr inż. Agnieszka Bołtuć OGRANICZENIA DOSTĘPU DO DANYCH Ograniczenie danych z tabeli dla określonego użytkownika

Bardziej szczegółowo

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2.

Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Język SQL. Rozdział 9. Język definiowania danych DDL, część 2. Ograniczenia integralnościowe, modyfikowanie struktury relacji, zarządzanie ograniczeniami. 1 Ograniczenia integralnościowe Służą do weryfikacji

Bardziej szczegółowo

Programowanie w Ruby

Programowanie 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ółowo

Ję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 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ółowo