7 Datenbankabfragen. 7.1 Die Hibernate Query Language

Größe: px
Ab Seite anzeigen:

Download "7 Datenbankabfragen. 7.1 Die Hibernate Query Language"

Transkript

1 149 Dieses Kapitel widmet sich dem effektiven Zugriff auf Daten. Mit Datenbankabfragen können Objekte mit bestimmten Eigenschaften gesucht werden. Erst mit Abfragen ist es möglich, Objekte zu laden, deren ID nicht bekannt ist. Es werden die drei Möglichkeiten beschrieben, wie Abfragen definiert und ausgeführt werden können. Zuerst wird die Hibernate Query Language (HQL) erläutert. Wir zeigen auch die programmatische Form der Abfrage mit Queries und Criterias. Außerdem zeigen wir, wie in Hibernate SQL-Abfragen genutzt werden können. Zum Ende des Kapitels werden Filter beschrieben, welche die Ergebnismenge von Abfragen einschränken. Für die Beispiele wird in dem Kapitel das einfache Beispiel weiter verwendet. Wie in der folgenden Abbildung verwenden wir Termine, die ihre Teilnehmer kennen. Überblick Abb. 7 1 Termin und Benutzer 7.1 Die Hibernate Query Language Die Syntax der HQL ist der von SQL sehr ähnlich. Groß- und Kleinschreibung ist für die Schlüsselwörter der HQL unerheblich. Für die weiteren Beispiele werden wir Kleinschreibung benutzen. Die einfachste Abfrage mit der HQL ist in unserem Fall die folgende: from Termin gleichbedeutend zu FROM Termin

2 150 Query ausführen Diese ganz einfache Abfrage liefert alle Termine aus der Datenbank und wird mit dem Befehl createquery an einer Session erzeugt: Query q = session.createquery( from Termine ); List<Termin> alletermine = q.list(); Die Ausführung der Query wird erst mit einer der Methoden list, scroll oder iterator gestartet. Ausführung der Query Befehl list() iterator() scroll() uniqueresult() Ergebnis Liefert eine Liste der Ergebnisse vom Typ java.util.list Liefert einen Iterator über die Ergebnisse vom Typ java.util.iterator Bietet die Möglichkeit, innerhalb des Ergebnisses zu blättern, liefert als Typ org.hibernate.scrollableresults Nützlich, wenn die Abfrage nur ein Ergebnis liefern kann, ist entweder null oder vom Typ java.lang.object Falls mehrere Ergebnisse gefunden werden, wird eine Exception geworfen! Ergebnis der Abfrage auto-import Eine Query kann nur mit den beschriebenenen Methoden ausgeführt werden, solange die erzeugende Session aktiv und nicht geschlossen ist. Die gefundenen Objekte befinden sich im persistenten Zustand, solange die Session nicht beendet wurde. Daher werden Änderungen an Objekten auch gespeichert, wenn diese durch eine Abfrage bezogen wurden und die Session aktiv ist. Das Ergebnis der obigen Abfrage from Termin sind alle Termine, die in der Datenbank gespeichert sind. In der from-klausel wird der Typ der Objekte angegeben, nach denen gesucht wird. Als Bezeichnung wird der Name des Typs angegeben. Es ist zu beachten, dass bei der Angabe des Typs auf Groß- und Kleinschreibung unterschieden wird. Die Schreibweise muss der der Klasse bzw. des Interfaces entsprechen! Im Beispiel haben wir den Typ Termin ohne das Package angegeben. Der Name des Typs muss in der Abfrage nur voll qualifiziert angegeben werden, wenn in der Mapping-Datei explizit das Attribut auto-import= false gesetzt wurde. Ansonsten sucht Hibernate nach dem Typ in allen Klassen und Interfaces, die bei der Configuration angemeldet sind 1. Dadurch können die Typen in den Abfrage ohne volle Qualifizierung angegeben werden.

3 7.1 Die Hibernate Query Language 151 Wird innerhalb mehrerer Objekttypen gesucht, werden diese durch Kommata getrennt. Das entspricht einem Join in SQL. Um diese Objekttypen in anderen Teilen der Abfrage zu referenzieren, wird nach dem Objekttyp ein Alias angegeben. Dieses Alias steht dann stellvertretend in der Abfrage für alle persistenten Objekte dieses Typs. Zur besseren Lesbarkeit darf optional»as«dazwischen stehen. Aliase from Termin as termin from Termin termin, Benutzer benutzer Sind in der from-klausel einer Abfrage mehrere Typen angegeben, werden die Ergebnisse als Liste von Arrays geliefert. Die nächste Abfrage liefert alle Kombinationen von Terminen und Benutzern als Liste von Arrays: Tupel Query q = session.createquery( from Termin, Benutzer ); List tupel = q.list(); Object[] arr = (Object[]) tupel.get(0); Termin termin = arr[0]; Benutzer benutzer = arr[1]; Die Abfragen können auf Ergebnisse mit bestimmten Eigenschaften eingeschränkt werden. Wie in SQL gibt eine where-klausel die Bedingung an, die für das Ergebnis zutreffen muss. Mit der folgenden Abfrage finden wir alle Termine, die im»raum 123«stattfinden: from Termin as term where term.ort = Raum 123 Der Bezeichner»ort«in der obigen Abfrage bezieht sich auf das gleichnamige Property der Klasse Termin und nicht auf den Spaltennamen in der Tabelle! Genauso bezieht sich der Bezeichner Termin auf den Namen der Klasse und nicht auf den Tabellennamen. Achtung Um Attribute von enthaltenen Objekten mit in die Abfrage einzubeziehen, werden sie einfach mit einem Punkt verknüpft. Als Beispiel suchen wir nach allen Terminen für einen Benutzer. Bei der Abfrage soll nur dessen Kürzel bekannt sein. Die Abfrage für die Termine des Benutzers, mit dem Kürzel»rb«lautet dann wie folgt: from Termin t where t.teilnehmer.kuerzel = rb 1. Wenn gleichnamige Klassen in unterschiedlichen Packages mit Hibernate verwaltet werden, muss auto-import ausgeschaltet werden, ansonsten ist der Typname für die Abfragen nicht eindeutig, und es wird eine Exception geworfen.

4 152 Kriterien Für die Beschreibung der Kriterien stehen die Standard-SQL-Operatoren zur Verfügung: =, <>, <, >, >=, <=, like, between, not between, in und not in. Folgendes Beispiel zeigt eine Abfrage aller Termine, deren Property Ort mit dem String»Raum A«anfängt: from Termin term where term.ort like Raum A% Wie man sieht, wird die Wildcard % aus SQL auch in HQL für das String-Kriterium like verwendet und steht für beliebig viele Zeichen. Mehrere Kriterien werden innerhalb der where-klausel mit den booleschen Operatoren and, or und not verknüpft und können mit Klammern gruppiert werden. Das folgende Beispiel liefert alle Termine, die in der Beschreibung mit»projekt Hibernate«anfangen und in Hamburg oder Berlin stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and (termin.ort = Hamburg or termin.ort= Berlin ) Die obige Abfrage lässt sich auch mit dem in-operator formulieren: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin in ( Hamburg, Berlin ) Der in-operator kann wie alle anderen Operatoren mit not negiert werden. Die folgende Abfrage findet somit alle Termine mit der obigen Beschreibung, die weder in München noch in Köln stattfinden: from Termin termin where termin.beschreibung like Projekt Hibernate% and termin not in ( München, Köln ) Eine weitere Möglichkeit, ein Kriterium zu bestimmen, sind Funktionen. Die folgende Abfrage liefert alle Termine, für die mindestens zwei Teilnehmer eingetragen sind. from Termin t where size(t.teilnehmer) > 2 Mit empty ist es sehr einfach abzufragen, ob eine Collection leer ist. So können mit der Abfrage alle Termine gefunden werden, für die keine Teilnehmer eingetragen sind: from Termin t where t.teilnehmer is empty Select Sind für die Abfrage nur Objekte eines bestimmten Typs erforderlich, werden vor der from-klausel mit einer select-klausel die Ergebnistypen ausgewählt. Im Vergleich zu SQL ist die select-klausel bei der Hibernate Query Language optional. In der select-klausel werden die Aliase

5 7.1 Die Hibernate Query Language 153 der Objekte angegeben, die als Ergebnis für die Abfrage von Interesse sind. Die nächste Abfrage liefert z.b. alle Benutzer als Liste, die bei Terminen mit der Beschreibung»Buchbesprechung«eingetragen sind: select t.teilnehmer from Termin as t where t.beschreibung = Buchbesprechung Eine Abfrage wie from Termin bezieht sich auf alle in der Datenbank gespeicherten Objekte des Typs Termin. Bei der Abfrage werden auch sämtliche Subklassen von Termin aus der Datenbank geladen, die der Session bzw. der Configuration bekannt sind. Als Typ kann natürlich auch ein Interface angegeben werden. Das Ergebnis bezieht dann alle persistenten Objekte mit ein, die dieses Interface implementieren. Polymorphe Abfragen werden in HQL immer identisch formuliert, unabhängig von der Abbildung der Vererbungshierarchie. Hibernate muss bei polymorphen Anfragen mehrere SQL-Statements an die Datenbank schicken. Es ist zu beachten, dass in den Resultaten nicht mit dem Befehl scroll geblättert werden kann! Polymorphe Abfragen Achtung Nicht bei jeder Anfrage stehen zur Zeit der Programmierung die Kriterien fest. Häufig ist es notwendig, der Abfrage zur Laufzeit Parameter für die Kriterien zu übergeben. Hibernate bietet zwei Möglichkeiten, Parameter anzugeben. Ein Parameter kann in einer Abfrage mit einem Fragezeichen als Platzhalter angegeben werden. Anstelle dieses Platzhalters muss der Query zur Laufzeit vor der Ausführung der Abfrage ein Wert- oder ein kompatibles Objekt übergeben werden. Damit mehrere Parameter pro Abfrage benutzt werden können, übergibt man diese nummeriert der Query. Um Termine z.b. nach Ort zu suchen, würde man folgende Abfrage stellen: Parameter String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort =? ); q.setstring(0, gesuchterort); List gefundenetermine = q.list(); Bei Hibernate fängt die Nummerierung von Parametern immer bei 0 an und verhält sich somit wie Arrays oder die Collections aus dem JDK. Bei JDBC wird dagen die 1 für den ersten Parameter verwendet! Achtung

6 154 Benannte Parameter Entitäten als Parameter Sortierung Hibernate bietet auch die Möglichkeit, benannte Parameter zu benutzen. Ein benannter Parameter wird in der HQL mit einem Doppelpunkt eingeleitet. Diese benannten Platzhalter erhöhen die Lesbarkeit und verringern die Fehleranfälligkeit bei Abfragen. Die gleiche Abfrage mit einem benannten Parameter sieht wie folgt aus: String gesuchterort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setstring( ort, gesuchterort); List gefundenetermine = q.list(); Einer Query kann auch eine Entität als Suchparameter übergeben werden. Für den Platzhalter wird der Query ein bereits geladenes Objekt eingesetzt. Hibernate erzeugt für die Query selbstständig die Verknüpfung in seiner SQL-Abfrage. Es kann damit z.b. nach allen Terminen für einen bestimmten Ort gesucht werden: Ort ort = xyz.getgesuchterort(); Query q = session.createquery( from Termin termin + where termin.ort = :ort ); q.setentity( ort, ort); List gefundenetermine = q.list(); Die Ergebnisse einer Abfrage können sortiert werden. Dazu wird nach der from- und der where-klausel der Befehl order by angegeben, mit einem Attribut, nach dem sortiert werden soll. Das entspricht genau dem order by in SQL. Zusätzlich kann mit asc oder desc angegeben werden, ob auf- oder absteigend sortiert werden soll. Wird zu dem Befehl order by weder asc noch desc angegeben, wird aufsteigend sortiert (asc). Sind mehrere Sortierkriterien erwünscht, werden sie in absteigender Rangfolge mit Kommata getrennt angegeben. Die obige Anfrage suchte nach Terminen mit einem bestimmten Ort. Diese Anfrage sieht wie folgt aus, wenn sie um eine Sortierung nach dem Anfang erweitert wird: from Termin termin where termin.ort = :ort order by termin.anfang Joins Bei einer Abfrage, die sich auf mehrere Typen bezieht, werden die Tabellen zum kartesischen Produkt verknüpft. Alle möglichen Kombinationen der Zeilen der beteiligten Tabellen werden dabei kombiniert. Die Auswahl der gelieferten Kombinationen wird durch die unterschiedlichen Join-Typen bestimmt. Bei einem Join werden die gesuchten Typen in der from-klausel angegeben. Die Basis der Abfrage bilden alle möglichen Kombinationen zwischen den angegebenen Typen.

7 7.1 Die Hibernate Query Language 155 Die folgende Abfrage liefert alle Termine und Benutzer, die sich in Berlin treffen. Die Ergebnisse sind Arrays mit jeweils dem Termin und einem der Teilnehmer. from Termin t inner join t.teilnehmer where t.ort = Berlin Um alle Termine zu bekommen, auch die ohne Teilnehmer, ist ein left outer join notwendig. In dem Ergebnis sind jetzt auch Termine ohne Teilnehmer enthalten. Das Ergebnis ist eine Liste von Arrays. Bei den Terminen ohne Teilnehmer ist das Feld des Arrays für die Teilnehmer null. from Termin t left outer join t.teilnehmer where t.ort = Berlin Ein right outer join liefert alle Kombinationen zwischen den beiden Tabellen und alle Einträge aus der zweiten Tabelle, für die es keinen entsprechenden Eintrag in der ersten Tabelle gibt. Die folgende Abfrage liefert eine Liste aller Benutzer, die einen Termin in Berlin eingetragen haben. Die Abfrage enthält keinen Join- Befehl. Hibernate macht intern einen Join über die Fremdschlüssel- Tabelle für die Benutzer und die Einschränkung auf den Ort. Daher wird diese Art auch impliziter Join genannt. select t.teilnehmer from Termin t where t.ort = Berlin Es gibt die Möglichkeit, Queries in Mapping-Dateien zu definieren, anstatt diese im Progammcode zu schreiben. Diese können dann unabhängig vom Rest des Programms weiterentwickelt und optimiert werden. Eine solche Named Query wird direkt an der Session mit der Methode getnamedquery bezogen. Benannte Queries Ort ort = xyz.getgesuchterort(); Query q = session.getnamedquery( alletermine ); q.setentity( ort, ort); List alletermine = q.list(); Wie in dem Beispiel zu sehen, entfällt der lange Text der eigentlichen Query im Programmcode. Als Nachteil ist sofort ersichtlich, dass die Namen der Parameter im Programmtext nicht erkennbar sind! Die Query wird in der Mapping-Datei durch das Element <query> definiert und mit dem Attribut name als»alletermine«benannt. Die eigentliche Query wird zusätzlich in einem CDATA-Element verpackt:

8 156 <query name= alletermine > <![CDATA[from Termin as t where t.ort = :ort ]]> </query> Projektion Genauere Angaben zu den Mapping-Dateien und deren Syntax sind in Kapitel 4 zu finden. Für Auswertungen und Berichte sind bei einer Abfrage nicht immer die kompletten Objekte mit allen Attributen notwendig. Auch wird bei diesen Abfragen nicht die transparente Persistenz benötigt, um geladene Objekte ändern zu können. Bei diesen Abfragen wird nur ein Teil der Werte aus den Ergebnissen benötigt. Das wird Projektion genannt. In der select-klausel dürfen auch ausgewählte Attribute eines gesuchten Objektes angegeben werden. Diese Attribute werden in der Ergebnisliste dann als Array geliefert. Das Ergebnis ist nur ein aktuelles Abbild der Daten, es hat für Hibernate keinen Zustand und keine transparente Persistenz. Somit werden Änderungen an diesen Daten nicht wieder in die Datenbank geschrieben. Das folgende Beispiel liefert den Titel, die Anfangszeit und die Beschreibung aller Termine: Query q = session.createquery( select t.titel, termin.anfang, termin.beschreibung + from Termin as termin ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String titel = (String) zeile[0]; Date anfang = (Date) zeile[1]; String beschreibung = (String) zeile[2];... } Gruppierungen und Zusammenfassungen In unserem Beispiel kann es gewünscht sein, dass wir in einem Bericht die Anzahl der Termine pro Ort ausgeben. Wir wollen die Frage beantworten, in welchen Städten die meisten Termine stattfinden, um damit eine Rangliste zu erzeugen. Anstatt alle Objekte zu laden, zu vergleichen, Termine zu addieren usw., können wir eine Abfrage mit Gruppierung benutzen.

9 7.1 Die Hibernate Query Language 157 Query q = session.createquery( select termin.ort, count(termin) + from Termin as termin group by termin.ort + order by count(termin) desc ); List<Object[]> uebersicht = q.list(); for (Object[] zeile : uebersicht) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1]; System.out.println("Stadt=" + ort + ", Anzahl Termine=" + anzahl); } In der Abfrage werden alle Orte ausgewählt und nach den Orten gruppiert. Die Aggregatsfunktion count() zählt alle Einträge, die in dieselbe Gruppierung fallen. In diesem Fall zählen wir die Termine mit dem gleichen Ort. Bei der order-by-klausel darf auch die Aggregatsfunktion verwendet werden, damit nach deren Ergebnis sortiert wird. Das Beispiel sortiert absteigend nach der Anzahl der Termine pro Gruppierung. Neben count() gibt es noch die folgenden Aggregatsfunktionen: Aggregatsfunktionen Funktion count() min() max() sum() avg() Zweck Berechnet die Anzahl der Elemente in der Gruppierung Bestimmt das Minimum der Elemente in der Gruppierung Bestimmt das Maximum der Elemente in der Gruppierung Summiert die Elemente in der Gruppierung Berechnet den Mittelwert Eine Aggregatsfunktion ist entweder mit einer Gruppierung kombiniert oder bezieht sich auf alle Ergebnisse der Abfrage. Wenn keine Gruppierung angegeben wird, dann gibt es nur ein Ergebnis. Die in der select-klausel ausgewählten Attribute dürfen in diesem Fall dann auch nur Aufrufe von Aggregatsfunktionen sein! So kann als Beispiel die Abfrage dienen, um zu erfahren, wie viele Termine in einer gegebenen Stadt geplant sind: Query query = session.createquery("select count(t) + from Termin as t where t.ort = :ort"); query.setstring("ort", "Berlin"); int anzahl = (Integer) query.uniqueresult();

10 158 Blättern Nicht jede Anfrage liefert eine überschaubare Anzahl von Ergebnissen. Mitunter können die Ergebnisse sehr lange Listen sein, die komplett geladen den Speicher der Anwendung überlasten würden. Hibernate bietet zwei Ansätze, diesem Problem bei Abfragen zu begegnen. Das Ergebnis einer Query kann durch eine untere Schranke eingegrenzt werden. Dazu kann die maximale Anzahl von Ergebnissen angegeben werden. Query q = session.createquery( from Termin ); q.setfirstresult(90); q.setmaxresults(10); List<Termin> termine = q.list(); In diesem Beispiel wurde das Ergebnis auf zehn Termine eingeschränkt. Die ersten 90 Termine der Abfrage sollen ignoriert werden. Die Methode setfirstresult ist nullbasiert wie alle Methoden in Hibernate mit Bezug auf Indizes. Der zweite Lösungsansatz liefert Queries, in denen geblättert werden kann. Die Methode scroll liefert das Ergebnis als ScrollableResults. Das Ergebnis kann sehr variabel iteriert werden. Ergebnisse können auch direkt angesprungen werden. Spätestens bei dem Zugriff auf ein bestimmtes Objekt wird dieses erst aus der Datenbank geladen. Das ScrollableResults hat einen Zeiger auf eine Zeile des Ergebnisses, der mit den Methoden next, first, scroll, previous, last, beforefirst, afterlast und setrownumber verschoben werden kann. Entsprechend der select-klausel der Anfrage können in jeder Zeile der Ergebnisse mehrere Objekte sein. Auf das aktuell selektierte Ergebnis wird immer indiziert zugegriffen, auch wenn pro Zeile nur ein Objekt ausgewählt wird. Folgende Abfrage liefert eine Übersicht der Benutzer, bei der nur jeder zwanzigste angegeben wird: Query q = session.createquery( select b.nachname + from Benutzer b + order by b.nachname ); ScrollableResults ergebnis = q.scroll(); List<String> benutzer = new ArrayList<String>(); if (ergebnis.first()) { do { benutzer.add(ergebnis.getstring(0)); } while(ergebnis.scroll(20)); }

11 7.2 Typsichere Abfragen mit Criteria 159 Wird über ein ScrollableResults iteriert und auf enthaltene Objekte zugegriffen, muss die Session noch aktiv sein. Das ScrollableResults kann nur benutzt werden, wenn der eingesetzte JDBC-Treiber Blättern unterstützt. Bisher wurden mit der HQL nur Objekte und Daten ausgelesen. Es ist auch seit Hibernate 3 möglich, mit einer Abfrage zu ändern und zu löschen. Sollen z.b. alle Termine aus Berlin nach Hamburg verlegt werden, kann das wie folgt passieren: Ändern und Löschen Query q = session.createquery( update Termin + set ort = :neuerort where ort = :alterort ); q.setstring( alterort, Berlin ); q.setstring( neuerort, Hamburg ); q.executeupdate(); Auf das Schlüsselwort update folgt der zu ändernde Typ. Dem folgen der Befehl set und die Zuweisung der zu ändernden Attribute. Abschließend kann mit einem where ein Kriterium angegeben, das die Änderung einschränkt. Mit der Methode executeupdate wird diese Form einer verändernden Abfrage ausgeführt. Die Methode liefert als Ergebnis die Anzahl der veränderten Objekte. Mit der HQL können auch Objekte gelöscht werden, die bestimmten Kriterien entsprechen. Somit können auch Objekte gelöscht werden, die nicht geladen sind. Alle Termine, die in München stattfinden sollen, werden mit dem folgenden Beispiel gelöscht: Query q = session.createquery( delete Termin + where ort = :ort ); q.setstring( ort, München ); q.executeupdate(); Auch bei dem Löschen wird die verändernde Query mit der Methode executeupdate ausgeführt. Bei einer ändernden Abfrage dürfen sowohl die Änderung als auch das Kriterium sich dabei nur auf einen Typ beziehen. Subtypen und enthaltene Objekte dürfen nicht mit in eine ändernde Abfrage einbezogen werden! Achtung 7.2 Typsichere Abfragen mit Criteria Hibernate bietet mit Criterias eine programmatische Möglichkeit, Abfragen zu definieren. An der Session kann ein Criteria erzeugt wer-

12 160 den, dabei muss der Ergebnistyp angegeben werden. Das einfachste Criteria, das alle Benutzer als Liste liefert, ist das folgende: Criteria criteria = session.createcriteria(benutzer.class); List<Benutzer> benutzer = criteria.list(); Es sind bei den programmatischen Abfragen mit Criterias Einschränkungen der Ergebnismenge durch Kriterien möglich. Die Klasse Restrictions aus dem Package org.hibernate.criterion ist eine Fabrik für solche Kriterien. Die folgende Abfrage liefert alle Termine aus Hamburg: Criteria crit = session.createcriteria(termin.class); c.add(restrictions.eq("ort", "Hamburg")); List<Termin> termine = criteria.list(); Diese Kriterien liefern als Rückgabewert immer wieder das geänderte Criteria-Objekt. Somit können komplexere Abfragen mit einem Java- Statement definiert werden. Das folgende Beispiel zeigt, wie mit einem einzigen Statement alle Termine aus Hamburg als Liste geliefert werden, die in der Beschreibung»Hibernate«enthalten: List liste = session.createcriteria(termin.class).add(restrictions.eq("ort", "Hamburg")).add(Restrictions.like( beschreibung, %Hibernate% )).list(); Diese Abfrage kann vereinfacht werden durch das neue Feature des statischen Imports in Java 5. Damit können die statischen Methoden und Attribute der importierten Klasse ohne Qualifizierung durch den Namen der Klasse benutzt werden. import static org.hibernate.criterion.restrictions.*;... List liste = session.createcriteria(termin.class).add(eq("ort", "Hamburg")).add(like( beschreibung, %essen% )).list(); Gruppierung Mit der Criteria-API können auch Gruppierungen in Abfragen erzeugt werden. Ein Beispiel zur Gruppierung hatte die Anzahl der Termine pro Ort abgefragt. Dem Criteria muss eine Projection gesetzt werden. int anzahl = (Integer) session.createcriteria(termin.class).setprojection(projections.rowcount()).add(like("ort", "Berlin")).uniqueResult();

13 7.3 Abfragen mit SQL 161 Das Beispiel hat eine Gruppierung auf die gesamte Ergebnismenge. Um mit Criterias für jeden Ort die Anzahl der Termine auszugeben, wird nach dem Ort gruppiert. Um eine Projektion auf mehrere Attribute und Aggregierungen zu erreichen, muss eine ProjectionList benutzt werden. Das folgende Beispiel nutzt die Möglichkeit von Hibernate, die Befehle»aneinander zu ketten«. So liefert z.b. die Methode setprojection dasselbe Criteria als Ergebnis, an dem sie aufgerufen wurde: List<Object[]> list = session.createcriteria(termin.class).setprojection( Projections.projectionList().add(Projections.property("ort")).add(Projections.rowCount()).add(Projections.groupProperty("ort"))).list(); for (Object[] zeile : list) { String ort = (String) zeile[0]; int anzahl = (Integer) zeile[1];... } Abfragen mit Criterias bieten einen großen Vorteil, denn durch die Angabe des Typs als Class-Objekt bei der Erzeugung des Criterias bieten sie Typsicherheit. Werden Änderungen an dem Namen des Typs gemacht, fällt das schon zur Kompilierzeit auf. Für die Erstellung einer Abfrage ist keine Kenntnis von HQL oder von SQL notwendig. Wenn Abfragen optionale Kriterien enthalten, ist das mit Criterias einfacher zu lösen als mit HQL, wobei dort der Abfragetext jeweils angepasst werden muss. Criterias unterstützen keine Joins, sie sind somit nicht so mächtig wie Abfragen mit der HQL. Der Vorteil der Typsicherheit gilt nicht für die Angabe der Properties, diese müssen als String angegeben werden. Sie sind somit anfällig gegenüber Änderungen an den persistierten Klassen und werden zur Kompilierzeit nicht aufgedeckt. Abfragen mit Criterias sind nicht so»übersichtlich«wie HQL-Abfragen. Vor- und Nachteile 7.3 Abfragen mit SQL An der Session kann eine SQL-Query erzeugt werden. Das kann für mehrere Fälle sinnvoll sein: Stored Procedures sollen an der Datenbank aufgerufen werden. Auf die spezielle Datenbank optimierte Abfragen sollen gerufen werden. Bei der Umstellung von alten SQL-Abfragen auf HQL

14 162 Damit Hibernate den Bezug von der Abfrage zu den verwalteten persistenten Klassen bekommt, müssen diese der Query angegeben werden. In dem einfachsten Beispiel sollen mit SQL alle Termine ausgegeben werden: SQLQuery q = session.createsqlquery( select {termin.*} + from TERMIN {termin} ); q.addentity( termin, Termin.class); List termine = q.list(); Named Queries Als Erstes fällt die select-klausel auf. Die geschweiften Klammern sind Platzhalter für Hibernate. Und in der from-klausel wird der Tabellenname angegeben, nicht der Typ! In dem Beispiel werden Objekte vom Typ Termin mit allen Attributen erwartet, daher der Stern hinter dem Platzhalter termin. Es wäre hier auch möglich, durch die Angabe von Propertys an dieser Stelle nur einzelne Attribute aus der Datenbank auszulesen. An Stelle der Platzhalter werden die Spalten aus der Datenbank eingesetzt. Dies muss mit einer Benennung und Reihenfolge geschehen, die Hibernate kennt. Ansonsten könnte Hibernate aus dem Ergebnis kein Objekt des Typs Termin erzeugen. Hibernate muss den Hinweis bekommen, dass Objekte des Typs Termin gesucht werden. Durch den Aufruf der Methode addentity wird Hibernate dieser Hinweis gegeben, und der Typ Termin wird mit dem Platzhalter termin verbunden. Ansonsten ist SQLQuery eine Spezialisierung und Subklasse einer Query und kann genauso zur Auflistung des Ergebnisses verwendet werden. SQL-Queries können ähnlich wie HQL-Queries in der Mapping- Datei definiert werden. Die Query wird in einem sql-query-element mit einem Namen verpackt. <sql-query name= sqlalletermine > <return alias= termin class= de.abc.termin /> <![CDATA[ select {termin.*} from TERMIN {termin} ]]> </sql-query> Diese Query kann genau wie benannte HQL-Queries an der Session mit der Methode getnamedquery abgerufen werden. Einer SQL-Query können auch benannte und nummerierte Parameter mit übergeben werden. Der Typ des Rückgabewertes wird einer benannten Query nicht mehr im Programmcode gesetzt, er ist in der Definition mit dem Element return inklusive Alias angegeben.

15 7.4 Filter 163 Aus dem Beispiel ist schon ersichtlich, dass Abfragen mit HQL oder Criterias gegenüber Abfragen mit SQL vorzuziehen sind. Es ist umständlicher und unsicherer als HQL und Criterias, denn z.b. die Namen der Tabellen und Spalten müssen bekannt sein, polymorphe Abfragen und implizite Joins sind nicht möglich. SQL-Abfragen können in einer Migration für den Umstieg auf Hibernate geeignet sein. Außerdem ist es seit Hibernate 3 möglich, mit der Hilfe benannter SQL-Queries stored procedures aufzurufen. Vor- und Nachteile 7.4 Filter Filter bieten die Möglichkeit, für eine Session sämtliche Abfragen auf Ergebnisse mit bestimmten Kriterien einzuschränken. Ein Filter wird in der Mapping-Datei definiert. Nach der Mapping-Definition der Klassen gibt man dort den Namen und die Parameter des Filters an: </hibernate-mapping>... </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Hier wurden nur der Name und die Parameter eines Filters definiert. Innerhalb des Mappings für persistente Klassen und Collections kann dieser Filter mit Kriterien gefüllt werden. </hibernate-mapping>... <class name= Termin >... <property name="ort"/> <filter name="nureinort" condition="ort = :ort"/> </class> <filter-def name= nureinort > <filter-param name= ort type= string /> </filter-def>... </hibernate-mapping> Innerhalb des Mappings für die Klasse Termin wird jetzt für den Filter mit dem Namen nureinort eine Bedingung angegeben. Dieser Filter bestimmt die zurückgelieferten Termine, die von jeder Abfrage mit diesem Filter geliefert werden. In dem Beispiel müssen Ergebnisse in der Spalte ort den gleichen Wert haben wie der Parameter :ort.

16 164 Achtung Der Bezeichner»ort«für das obige Kriterium bezieht sich nicht auf das Property mit dem Namen Ort, sondern die gleichnamige Tabellenspalte! Filterkriterien beziehen sich direkt auf die Namen der Spalten und nicht wie sonst in Hibernate üblich auf die Namen der Properties. Da Filter in der Mapping-Datei definiert werden, ist an dieser Stelle der Name der entsprechenden Tabellenspalte bekannt. Um den eben definierten Filter zu aktivieren, muss dieser an der Session mit enablefilter aktiviert werden. Zusätzlich müssen an dem Filter die benötigten Parameter gesetzt werden. Filter ortfilter = session.enablefilter("nureinort"); ortfilter.setparameter("ort", "Hamburg"); List termine = session.createquery( from Termin ).list(); Hier in dem Beispiel wurden nur Termine aus Hamburg geliefert. Der Filter beschränkt nur die Ergebnisse von sondierenden Abfragen. Ist in dem System noch ein Objekt, das dem Filter nicht entspricht, z.b. ein Termin aus München, dann kann dieser mit delete an der Session gelöscht werden, obwohl der Filter aktiv ist. Genauso können noch Objekte mit ihrer ID geladen werden, deren Attribute nicht den Filterkriterien entsprechen. Wird ein Filter nicht mehr benötigt, deaktiviert man ihn mit der Methode disablefilter und dem Namen des Filters: session.disablefilter("nureinort"); Filter können in der Praxis mehrere sinnvolle Einsatzgebiete finden. In unserem Beispiel könnte man z.b. für bestimmte Umstände sämtliche Termine herausfiltern, die in der Vergangenheit stattfanden. 7.5 Referenzen [Hibernate] Die Hibernate-Website mit der Dokumentation bietet sehr viel Information zu Abfragen.

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten

Einführung in SQL. Sprachumfang: Indizes. Datensätzen. Zugriffsrechten Einführung in SQL Die Sprache SQL (Structured Query Language) ist eine Programmiersprache für relationale Datenbanksysteme, die auf dem ANSI-SQL-Standard beruht. SQL wird heute von fast jedem Datenbanksystem

Mehr

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen.

Aufbau des SELECT-Befehls. Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. Datenbankabfragen (Query) mit SQL (Structured Query Language) 1 Aufbau des SELECT-Befehls Im Folgenden werden zunächst Abfragen aus einer Tabelle vorgenommen. SQL-Syntax: SELECT spaltenliste FROM tabellenname

Mehr

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language:

SQL. strukturierte Datenbankabfragesprache eine Datenbanksprache zur. Structured Query Language: SQL Structured Query Language: strukturierte Datenbankabfragesprache eine Datenbanksprache zur Definition, Abfrage und Manipulation von Daten in relationalen Datenbanken In der SQL-Ansicht arbeiten In

Mehr

SQL-Befehlsliste. Vereinbarung über die Schreibweise

SQL-Befehlsliste. Vereinbarung über die Schreibweise Vereinbarung über die Schreibweise Schlüsselwort [optionale Elemente] Beschreibung Befehlsworte in SQL-Anweisungen werden in Großbuchstaben geschrieben mögliche, aber nicht zwingend erforderliche Teile

Mehr

Sructred Query Language

Sructred Query Language Sructred Query Language Michael Dienert 11. November 2010 Inhaltsverzeichnis 1 Ein kurzer Versionsüberblick 1 2 SQL-1 mit einigen Erweiterungen aus SQL-92 2 3 Eine Sprache zur Beschreibung anderer Sprachen

Mehr

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert.

Die bisher bereits bekannten Aggregatsfunktionen MIN, MAX, SUM, AVG, COUNT, VARIANCE und STDDEV wurden um FIRST und LAST erweitert. Betrifft Autor FIRST, LAST Markus Jägle (markus.jaegle@trivadis.com) Art der Info Technische Background Info (April 2002) Quelle Aus dem NF9i-Kurs, NF9i-Techno-Circle der Trivadis und Oracle9i Data Warehousing

Mehr

Structured Query Language (SQL) 1

Structured Query Language (SQL) 1 Structured Query Language (SQL) 1 1. Grundlagen und Hilfsmittel Structured Query Language, kurz SQL, wurde in den 70er Jahren bei IBM entwickelt, als eine Arbeitsgruppe die erste relationale Datenbank

Mehr

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software

SQL Tutorial. SQL - Tutorial SS 06. Hubert Baumgartner. INSO - Industrial Software SQL Tutorial SQL - Tutorial SS 06 Hubert Baumgartner INSO - Industrial Software Institut für Rechnergestützte Automation Fakultät für Informatik Technische Universität Wien Inhalt des Tutorials 1 2 3 4

Mehr

SQL structured query language

SQL structured query language Umfangreiche Datenmengen werden üblicherweise in relationalen Datenbank-Systemen (RDBMS) gespeichert Logische Struktur der Datenbank wird mittels Entity/Realtionship-Diagrammen dargestellt structured query

Mehr

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER INHALTSVERZEICHNIS 1. Datenbanken 2. SQL 1.1 Sinn und Zweck 1.2 Definition 1.3 Modelle 1.4 Relationales Datenbankmodell 2.1 Definition 2.2 Befehle 3.

Mehr

Objektorientierte Datenbanken

Objektorientierte Datenbanken OODB 11 Slide 1 Objektorientierte Datenbanken Vorlesung 11 Sebastian Iwanowski FH Wedel OODB 11 Slide 2 Wesentliche Eigenschaften von Hibernate Transparente Persistenz Transitive Persistenz (Persistenz

Mehr

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar

SQL für Trolle. mag.e. Dienstag, 10.2.2009. Qt-Seminar Qt-Seminar Dienstag, 10.2.2009 SQL ist......die Abkürzung für Structured Query Language (früher sequel für Structured English Query Language )...ein ISO und ANSI Standard (aktuell SQL:2008)...eine Befehls-

Mehr

Informatik 12 Datenbanken SQL-Einführung

Informatik 12 Datenbanken SQL-Einführung Informatik 12 Datenbanken SQL-Einführung Gierhardt Vorbemerkungen Bisher haben wir Datenbanken nur über einzelne Tabellen kennen gelernt. Stehen mehrere Tabellen in gewissen Beziehungen zur Beschreibung

Mehr

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken.

SQL. SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Vorlesungsteil SQL Grundlagen - 1 / 8 - SQL SQL = Structured Query Language, ist eine standardisierte Sprache zum Gebrauch im Zusammenhang mit Datenbanken. Auf einem Server (Rechner im Netz, der Dienste

Mehr

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services

27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services 531 27 Transact-SQL-Erweiterungen in Bezug auf Analysis Services Im zweiten Teil dieses Buches haben wir die Eigenschaften der Transact-SQL- Sprache in Bezug auf die Bearbeitung von operativen Daten gezeigt.

Mehr

Dokumentation zur Anlage eines JDBC Senders

Dokumentation zur Anlage eines JDBC Senders Dokumentation zur Anlage eines JDBC Senders Mithilfe des JDBC Senders ist es möglich auf eine Datenbank zuzugreifen und mit reiner Query Datensätze auszulesen. Diese können anschließend beispielsweise

Mehr

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus:

Die SQL-Syntax für den Befehl CREATE TABLE sieht folgendermassen aus: Einführung in MySQL SQL (Structured Query Language) ist eine Computersprache zum Speichern, Bearbeiten und Abfragen von Daten in relationalen Datenbanken. Eine relationale Datenbank kann man sich als eine

Mehr

Einführung in SQL Datenbanken bearbeiten

Einführung in SQL Datenbanken bearbeiten Einführung in SQL Datenbanken bearbeiten Jürgen Thomas Entstanden als Wiki-Buch Bibliografische Information Diese Publikation ist bei der Deutschen Nationalbibliothek registriert. Detaillierte Angaben

Mehr

Kapitel 3: Datenbanksysteme

Kapitel 3: Datenbanksysteme LUDWIG- MAXIMILIANS- UNIVERSITY MUNICH DEPARTMENT INSTITUTE FOR INFORMATICS Skript zur Vorlesung: Einführung in die Informatik: Systeme und Anwendungen Sommersemester 2015 Kapitel 3: Datenbanksysteme Vorlesung:

Mehr

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen

Datenbanksysteme. Programmieren von Datenbankzugriffen mit JDBC. Burkhardt Renz. Fachbereich MNI Technische Hochschule Mittelhessen Programmieren von Datenbankzugriffen mit JDBC Fachbereich MNI Technische Hochschule Mittelhessen Sommersemester 2015 Überblick über das Package java.sql Übersicht Architektur von JDBC Grundstruktur eines

Mehr

IV. Datenbankmanagement

IV. Datenbankmanagement Wirtschaftsinformatik 2 (PWIN) IV. Datenbankmanagement Kapitel 2: Datenmanipulationssprache SQL Wirtschaftsinformatik 2 (PWIN) SS 2009, Professur für Mobile Business & Multilateral Security 1 Agenda 1.

Mehr

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate

Hibernate. Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen. Nabil janah 1 Hibernate Hibernate Vortragender : Nabil Janah Kursleiter : Prof. Dr. Björn Dreher Lehrveranstaltung : Komponenten-Architekturen Nabil janah 1 Hibernate Inhalt Hibernate allgemeines Vorteile von Hibernate Hibernate-Architektur

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Datenbanksysteme I SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R VII-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Informatik Datenbanken SQL-Einführung

Informatik Datenbanken SQL-Einführung Informatik Datenbanken SQL-Einführung Gierhardt Inhaltsverzeichnis 1 Vorbemerkungen 1 2 Auswahl-Abfragen mit SELECT 2 2.1 Selektion...................................... 2 2.2 Projektion.....................................

Mehr

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen

ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen ARIS II - Modellierungsmethoden, Metamodelle und Anwendungen C3: Structured Query Language Lernziele: Nach der Bearbeitung dieser Lektion haben Sie folgende Kenntnisse erworben: Sie können elementaren

Mehr

Eine Abfrage (Query) ist in Begriffe und Operatoren unterteilt. Es gibt zwei verschiedene Arten von Begriffen: einzelne Begriffe und Phrasen.

Eine Abfrage (Query) ist in Begriffe und Operatoren unterteilt. Es gibt zwei verschiedene Arten von Begriffen: einzelne Begriffe und Phrasen. Lucene Hilfe Begriffe Eine Abfrage (Query) ist in Begriffe und Operatoren unterteilt. Es gibt zwei verschiedene Arten von Begriffen: einzelne Begriffe und Phrasen. Ein einzelner Begriff ist ein einzelnes

Mehr

SQL. Abfragesprache Datenmanipulation - DML

SQL. Abfragesprache Datenmanipulation - DML SQL Abfragesprache Datenmanipulation - DML SQL DML-Operationen DML = Data Manipulation Language Sprache zur Veränderung der Daten Operationen Daten selektieren Daten einfügen Daten ändern Daten löschen

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2

SQL SQL. SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R. Grundlagen der Programmierung 2 SQL SQL = Structured Query Language (SEQUEL) IBM San Jose Research Laboratory SYSTEM R IV-1 Beispielrelationen Filiale ( Name Leiter Stadt Einlagen ) Konto ( KontoNr KundenNr FilialName Saldo ) Kredit

Mehr

Kapitel 6. Vererbung

Kapitel 6. Vererbung 1 Kapitel 6 2 Ziele Das sprinzip der objektorientierten Programmierung verstehen Und in Java umsetzen können Insbesondere folgende Begriffe verstehen und anwenden können: Ober/Unterklassen Subtyping Überschreiben

Mehr

Begleitskript. zum PHP/MySQL. Kurs

Begleitskript. zum PHP/MySQL. Kurs Begleitskript zum PHP/MySQL Kurs http://www.online-platform.net Dieser Text unterliegt der GNU General Public License. Er darf als ganzes oder in Auszügen kopiert werden, vorausgesetzt, dass sich dieser

Mehr

Einführung in die Informatik II

Einführung in die Informatik II Einführung in die Informatik II Die Structured Query Language SQL Prof. Dr. Nikolaus Wulff SQL Das E/R-Modell lässt sich eins zu eins auf ein Tabellenschema abbilden. Benötigt wird eine Syntax, um Tabellen

Mehr

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung

Übersicht. Informatik 2 Teil 3 Anwendungsbeispiel für objektorientierte Programmierung Übersicht 3.1 Modell Konto 3.2 Modell Konto - Erläuterungen 3.3 Benutzer Ein- und Ausgabe mit Dialogfenster I 3.4 Benutzer Ein- und Ausgabe mit Dialogfenster II 3.5 Klassen- und Objekteigenschaften des

Mehr

TimeSafe Leistungserfassung

TimeSafe Leistungserfassung Keep your time safe. TimeSafe Leistungserfassung Adressimport 1/8 Inhaltsverzeichnis Inhaltsverzeichnis... 2 1 Allgemeines... 3 1.1 Adressen in der TimeSafe Leistungserfassung... 3 1.2 Organisationen und/oder

Mehr

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2

7. Datenbank-Zugriff. Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn. Zum Beispiel aus PHP-Skripten: Client 7-2 5 Vorlesung und Übung Dr. Peter Pfahler Institut für Informatik Universität Paderborn 7 7. Datenbank-Zugriff Zum Beispiel aus PHP-Skripten: Client 7-2 Struktur einer Datenbank 7-3 Erzeugen von Datenbanken

Mehr

Übungsaufgabe Transaktion als Middleware

Übungsaufgabe Transaktion als Middleware Übungsaufgabe Transaktion als Middleware und Java Persistence API Client/Server Abstraktes Komponentenmodell Entscheidende Punkte Erweiterung der Invoke-Methode Context-Verwaltung Transaktionsbehandlung

Mehr

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1

Fachhochschule Kaiserslautern Labor Datenbanken mit MySQL SS2006 Versuch 1 Fachhochschule Kaiserslautern Fachbereiche Elektrotechnik/Informationstechnik und Maschinenbau Labor Datenbanken Versuch 1 : Die Grundlagen von MySQL ------------------------------------------------------------------------------------------------------------

Mehr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr

Uni Duisburg-Essen Fachgebiet Informationssysteme Prof. Dr. N. Fuhr Raum: LF 230 Bearbeitung: 9.-11. Mai 2005 Datum Gruppe Vorbereitung Präsenz Aktuelle Informationen unter: http://www.is.informatik.uni-duisburg.de/courses/dbp_ss03/ Tabellen in IBM DB2 Tabellen Eine relationale

Mehr

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0

Wirtschaftsinformatik. SQL Abfragen und QBE. Unterrichtsskript. Version: 2.0 Wirtschaftsinformatik SQL Abfragen und QBE Unterrichtsskript Version: 2.0 Autor: Jonas Lanz Datum: 02.06.2006 FHNW Hochschule für Wirtschaft 2 / 29 Inhaltsverzeichnis 1. Einführung 3 1.1 Relationale Operationen

Mehr

Datenbankanfragen und -operationen mittels SQL

Datenbankanfragen und -operationen mittels SQL Datenbankanfragen und -operationen mittels SQL Über den verschiedenen Tabellen einer Datenbank werden Operationen ausgeführt, die immer wieder eine Tabelle als Ergebnis zurückgeben. Mathematisch modelliert

Mehr

Erste Schritte, um selber ConfigMgr Reports zu erstellen

Erste Schritte, um selber ConfigMgr Reports zu erstellen Thomas Kurth CONSULTANT/ MCSE Netree AG thomas.kurth@netree.ch netecm.ch/blog @ ThomasKurth_CH Erste Schritte, um selber ConfigMgr Reports zu erstellen Configuration Manager Ziel Jeder soll nach dieser

Mehr

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004)

Nachtrag: Farben. Farbblindheit. (Light und Bartlein 2004) Nachtrag: Farben Farbblindheit (Light und Bartlein 2004) 1 Vorgeschlagene Farbskalen (Light and Bartlein 2004) Farbkodierung metrisch skalierter Daten Unterscheide: 1. Sequential Data (ohne Betonung der

Mehr

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt

DBS ::: SERIE 5. Join Right Semi- Join Left Semi-Join Projektion Selektion Fremdschlüssel. Kreuzprodukt DBS ::: SERIE 5 Die Relation produkt enthält Hersteller, Modellnummer und Produktgattung (pc, laptop oder drucker aller Produkte. Die Modellnummer ist (der Einfachheit halber eindeutig für alle Hersteller

Mehr

Objektorientierte Programmierung. Kapitel 12: Interfaces

Objektorientierte Programmierung. Kapitel 12: Interfaces 12. Interfaces 1/14 Objektorientierte Programmierung Kapitel 12: Interfaces Stefan Brass Martin-Luther-Universität Halle-Wittenberg Wintersemester 2012/13 http://www.informatik.uni-halle.de/ brass/oop12/

Mehr

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs

WHERE Klausel Generierung mit.net und Oracle. Aus unserer Projekterfahrung und Architektur-Kurs Betrifft Art der Info Quelle WHERE Klausel Generierung mit.net und Oracle Technical Info Aus unserer Projekterfahrung und Architektur-Kurs Where ist the WHERE? Der Artikel untersucht die Möglichkeiten,

Mehr

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP

Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Datenbanktechnologie mit praktischen Übungen in MySQL und PHP Übung, Sommersemester 2013 29. April 2013 - MySQL 2 Sebastian Cuy sebastian.cuy@uni-koeln.de Aufgaben Anmerkungen Best practice: SQL Befehle

Mehr

Fachbereich Informatik Praktikum 1

Fachbereich Informatik Praktikum 1 Hochschule Darmstadt DATA WAREHOUSE SS2015 Fachbereich Informatik Praktikum 1 Prof. Dr. S. Karczewski Dipl. Inf. Dipl. Math. Y. Orkunoglu Datum: 14.April.2015 1. Kurzbeschreibung In diesem Praktikum geht

Mehr

PIWIN 1 Übung Blatt 5

PIWIN 1 Übung Blatt 5 Fakultät für Informatik Wintersemester 2008 André Gronemeier, LS 2, OH 14 Raum 307, andre.gronemeier@cs.uni-dortmund.de PIWIN 1 Übung Blatt 5 Ausgabedatum: 19.12.2008 Übungen: 12.1.2009-22.1.2009 Abgabe:

Mehr

Carl-Engler-Schule Karlsruhe Datenbank 1 (5)

Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Carl-Engler-Schule Karlsruhe Datenbank 1 (5) Informationen zur Datenbank 1. Definition 1.1 Datenbank-Basis Eine Datenbank-Basis ist eine Sammlung von Informationen über Objekte (z.b Musikstücke, Einwohner,

Mehr

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...

php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe... php Hier soll ein Überblick über das Erstellen von php Programmen gegeben werden. Inhaltsverzeichnis 1.Überblick...2 2.Parameterübergabe...7 3.Zugriff auf mysql Daten...11 Verteilte Systeme: php.sxw Prof.

Mehr

Whitepaper. Produkt: combit Relationship Manager 7, address manager 17. Import von Adressen nach Firmen und Kontakte

Whitepaper. Produkt: combit Relationship Manager 7, address manager 17. Import von Adressen nach Firmen und Kontakte combit GmbH Untere Laube 30 78462 Konstanz Whitepaper Produkt: combit Relationship Manager 7, address manager 17 Import von Adressen nach Firmen und Kontakte Import von Adressen nach Firmen und Kontakte

Mehr

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt.

Hochschule Karlsruhe Technik und Wirtschaft- 10.7.2013. Anhänge: Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Prof. Schmidt. Fakultät für Informatik und Wirtschaftsinformatik SS 2013 Datenbanken und Informationssysteme II Szenario: Projektverwaltung. Es gibt Projekte, Projektleiter, Mitarbeiter und ihre Zuordnung zu Projekten.

Mehr

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering

LINQ to SQL. Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel. Institut für Informatik Software & Systems Engineering LINQ to SQL Proseminar Objektorientiertes Programmieren mit.net und C# Christoph Knüttel Institut für Informatik Software & Systems Engineering Agenda 1. LINQ allgemein Vorteile Bausteine und Varianten

Mehr

7.5.3. CREATE TABLE-Syntax

7.5.3. CREATE TABLE-Syntax 7.5.3. CREATE TABLE-Syntax 7.5.3.1. Stille Spaltentyp-Änderungen CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tabelle [(create_definition,...)] [tabellen_optionen] [select_statement] create_definition: spalten_name

Mehr

Datenbankzugriff mit JDBC

Datenbankzugriff mit JDBC Java: Kapitel 8 Datenbankzugriff mit JDBC Programmentwicklung WS 2008/2009 Holger Röder holger.roeder@informatik.uni-stuttgart.de Überblick über Kapitel 8 Einführung in SQL und JDBC Verbindung zur Datenbank

Mehr

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004

Zugriff auf Firebird-Datenbanken mit PHP. Daniel de West DB-Campus-Treffen 15. Januar 2004 Zugriff auf Firebird-Datenbanken mit PHP Daniel de West DB-Campus-Treffen 15. Januar 2004 Inhalt PHP und Firebird Die wichtigsten Befehle Verbindungsaufbau Übermitteln von Abfragen Beenden von Verbindungen

Mehr

Datenbankprogrammierung 2

Datenbankprogrammierung 2 Datenbankprogrammierung 2 JDBC Java Database Connectivity Call Level Interface Schnittstelle zwischen DBMS und Applikation JDBC API ist seit JDK1.1 inkludiert Ermöglicht Zugriff aus Java-Applikationen

Mehr

Übertragung von Terminen und Baustellen

Übertragung von Terminen und Baustellen In dieser Dokumentation wird die Anwendung und die Konfiguration der Programme beschrieben, die für die Übertragung der Baustellen und Termine aus der KWP SQL-Datenbank an das virtic-system verwendet werden

Mehr

JDBC. Allgemeines ODBC. java.sql. Beispiele

JDBC. Allgemeines ODBC. java.sql. Beispiele JDBC Java Data Base Connectivity Programmierschnittstelle für relationale Datenbanken Sammlung von Klassen, welche zum Aufbau einer Verbindung zwischen einem Java-Programm und einer Datenbank dienen Verwendet

Mehr

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern

C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung. Eltern C++ - Einführung in die Programmiersprache Polymorphismus und Vererbung Eltern Kind Kind Vererbung Definition von Klassen auf Basis von bestehenden Klassen. Implementierung von ist ein. bildet ein hierarchisches

Mehr

Cassandra Query Language (CQL)

Cassandra Query Language (CQL) Cassandra Query Language (CQL) Seminar: NoSQL Wintersemester 2013/2014 Cassandra Zwischenpräsentation 1 Gliederung Basic facts Datentypen DDL/DML ähnlich zu SQL Besonderheiten Basic facts CQL kurz für

Mehr

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema..

Change Log. Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. Change Log 15.09.2015 Version 2.0.3.9 Fehlerbehebung bei den Funktionen Edit SQL, Set Session_user und Set current Schema.. 15.01.2015 Version 2.0.3.8 Unter Optionen können jetzt zusätzliche Parameter

Mehr

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16

Allgemein. Einrichtung. PHOENIX Tool WinUser2PHOENIXUser. Version: 3.5.2 Stand: 2013-04-16 PHOENIX Tool WinUser2PHOENIXUser Version: 3.5.2 Stand: 2013-04-16 Allgemein Das Tool ermöglicht es, Benutzerinformationen aus dem Windows Active Directory (AD) in den PHOENIX zu importieren. Dabei können

Mehr

SQL auf iseries. Software Voraussetzungen

SQL auf iseries. Software Voraussetzungen 1 SQL Seite auf iseries Software Voraussetzungen SQL auf iseries Structured Query Language (SQL) ist ein plattformunabhängiger Standard, der unabhängig von Hard- und Software für den Zugriff auf Datenbanken

Mehr

16 SQL Server-Zugriff per VBA

16 SQL Server-Zugriff per VBA Leseprobe aus Access und SQL Server http://www.acciu.de/asqllesen 16 SQL Server-Zugriff per VBA Sie werden an verschiedenen Stellen per VBA auf die Tabellen der SQL Server-Datenbank zugreifen müssen sei

Mehr

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ

Objektorientierte Programmierung. Objektorientierte Programmierung. Klasse. Objekt. Beispiel: Sportfest1. Methode. Eine Einführung mit BlueJ Objektorientierte Programmierung Objektorientierte Programmierung Eine Einführung mit BlueJ stellt die Daten, ihre Struktur und ihre Beziehungen zueinander in den Vordergrund. Weniger im Blickpunkt: die

Mehr

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben.

Der Aufruf von DM_in_Euro 1.40 sollte die Ausgabe 1.40 DM = 0.51129 Euro ergeben. Aufgabe 1.30 : Schreibe ein Programm DM_in_Euro.java zur Umrechnung eines DM-Betrags in Euro unter Verwendung einer Konstanten für den Umrechnungsfaktor. Das Programm soll den DM-Betrag als Parameter verarbeiten.

Mehr

Interaktive Webseiten mit PHP und MySQL

Interaktive Webseiten mit PHP und MySQL Interaktive Webseiten mit PHP und Vorlesung 4: PHP & Sommersemester 2003 Martin Ellermann Heiko Holtkamp Sommersemester 2001 Hier noch ein wenig zu (My)SQL: SHOW INSERT SELECT ORDER BY GROUP BY LIKE /

Mehr

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern

Objektorientierte Programmierung mit Python Polymorphismus und Vererbung. Eltern Objektorientierte Programmierung mit Python Polymorphismus und Vererbung Eltern Kind Kind Kind Kind Prinzipien der objektorientierten Programmierung Vererbung Strukturierung von Klassen. Oberbegriffe beschreiben

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen

Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen Datenbanken mit OpenOffice-Base Tabellen und einfache Abfragen Im Rahmen der IFB - Veranstaltung Nr. 92 177 01 01 Informatik in der Sek I Programmierung vom 21.-22.09.2009 Peter Dauscher Gymnasium am Kaiserdom,

Mehr

Java Kurs für Anfänger Einheit 5 Methoden

Java Kurs für Anfänger Einheit 5 Methoden Java Kurs für Anfänger Einheit 5 Methoden Ludwig-Maximilians-Universität München (Institut für Informatik: Programmierung und Softwaretechnik von Prof.Wirsing) 22. Juni 2009 Inhaltsverzeichnis Methoden

Mehr

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet

C++ Grundlagen. ++ bedeutet Erweiterung zum Ansi C Standard. Hier wird eine Funktion eingeleitet C++ Grundlagen ++ bedeutet Erweiterung zum Ansi C Standard Hier wird eine Funktion eingeleitet Aufbau: In dieser Datei stehen die Befehle, die gestartet werden, wenn das Programm gestartet wird Int main()

Mehr

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue

C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET. Leibniz Universität IT Services Anja Aue C# - Einführung in die Programmiersprache Arbeiten mit ADO.NET Leibniz Universität IT Services Anja Aue Experteneinstellungen in Visual Studio Express Extras Einstellungen Experteneinstellungen. Es werden

Mehr

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume.

Bäume. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 10: Collections 4. Inhalt. Bäume. Einführung. Bäume. Universität Osnabrück 1 Bäume 3 - Objektorientierte Programmierung in Java Vorlesung 10: Collections 4 Einführung Bäume sind verallgemeinerte Listenstrukturen Lineare Liste Jedes Element hat höchstens

Mehr

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 16: 3-Schichten-Architektur 1 Fachkonzept - GUI Universität Osnabrück Drei-Schichten-Architektur 3 - Objektorientierte Programmierung in Java Vorlesung 6: 3-Schichten-Architektur Fachkonzept - GUI SS 2005 Prof. Dr. F.M. Thiesing, FH Dortmund Ein großer

Mehr

SQL Injection Funktionsweise und Gegenmaßnahmen

SQL Injection Funktionsweise und Gegenmaßnahmen SQL Injection Funktionsweise und Gegenmaßnahmen EUROSEC GmbH Chiffriertechnik & Sicherheit Tel: 06173 / 60850, www.eurosec.com EUROSEC GmbH Chiffriertechnik & Sicherheit, 2005 Problematik SQL-Injection

Mehr

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden.

PHP und MySQL. Integration von MySQL in PHP. Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424. Michael Kluge (michael.kluge@tu-dresden. Zentrum für Informationsdienste und Hochleistungsrechnen (ZIH) PHP und MySQL Integration von MySQL in PHP Zellescher Weg 12 Willers-Bau A109 Tel. +49 351-463 - 32424 (michael.kluge@tu-dresden.de) MySQL

Mehr

5. Datenabfrage mit SQL 14

5. Datenabfrage mit SQL 14 Informationsbestände analysieren Datenabfrage mit SQL 5. Datenabfrage mit SQL 14 5.1. Einige Infos zu SQL SQL wurde Ende der 70er Jahre in den IBM Labors entwickelt und später als Standard für relationale

Mehr

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index!

Einstieg in das SQL- und Datenbanktuning 14.01.2009. Loblied auf den Tabellen-Index! 1/40 PHP-User-Group Stuttgart 14.01.2009 Warum Datenbanken einen Hals bekommen und was sich dagegen tun lässt. Tuning und Performancesteigerung ohne zusätzliche Hardware. Ein. Loblied auf den Tabellen-Index!

Mehr

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL )

SQL-DDL und SQL-Anfragen. CREATE TABLE Kategorie (Bezeichnung VARCHAR(15) NOT NULL PRIMARY KEY, Klassifikationskriterium VARCHAR(100) NOT NULL ) Technische Universität München WS 2003/04, Fakultät für Informatik Datenbanksysteme I Prof. R. Bayer, Ph.D. Lösungsblatt 6 Dipl.-Inform. Michael Bauer Dr. Gabi Höfling 1.12.2003 SQL-DDL und SQL-Anfragen

Mehr

Tutorium Java Ein Überblick. Helge Janicke

Tutorium Java Ein Überblick. Helge Janicke Tutorium Java Ein Überblick Helge Janicke 26. Oktober 2000 1 VORRAUSSETZUNGEN ZUM PROGRAMMIEREN MIT JAVA. 1 1 Vorraussetzungen zum Programmieren mit Java. Was braucht man, wenn man mit Java programmieren

Mehr

StructuredQueryLanguage(SQL)

StructuredQueryLanguage(SQL) StructuredQueryLanguage(SQL) Themen: ErstelenundÄndernvonTabelen AbfragenvonDaten Einfügen,ÄndernundLöschenvonDaten Erstelennutzerde niertersichten(views) 2012Claßen,Kempa,Morcinek 1/23 SQL Historie System

Mehr

Michaela Weiss 01. April 2015. Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL

Michaela Weiss 01. April 2015. Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL Michaela Weiss 01. April 2015 Lerneinheit 4: Relationale Datenbanken am Beispiel von MySQL Seite 2 Datenbanken Allgemeines: Datenbank(management)systeme ermöglichen die Speicherung großer Datenmengen Kennzeichen

Mehr

Objekt-relationales Mapping und Performance-Tuning

Objekt-relationales Mapping und Performance-Tuning Objekt-relationales Mapping und Performance-Tuning Thomas Krüger tkrueger@vanatec.com Agenda Wege um Daten zu lesen Wege um Daten zu modellieren Wege um Datenbanken effizient zu nutzen 2 2 Wege, Daten

Mehr

Einführung in SQL mit Oracle

Einführung in SQL mit Oracle Seminar Einführung in SQL mit Oracle von Prof. Dr. Rainer Schwenkert Hochschule München c Vervielfältigung nur mit Zustimmung des Autors Themenbereiche SQL-Historie Wichtige DDL- und DML-Anweisungen Der

Mehr

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH

Autor: Michael Spahn Version: 1.0 1/10 Vertraulichkeit: öffentlich Status: Final Metaways Infosystems GmbH Java Einleitung - Handout Kurzbeschreibung: Eine kleine Einführung in die Programmierung mit Java. Dokument: Autor: Michael Spahn Version 1.0 Status: Final Datum: 23.10.2012 Vertraulichkeit: öffentlich

Mehr

VIVIT TQA Treffen in Köln am 18. 04. 2013. API- Programmierung und Nutzung bei HP Quality Center / ALM. Michael Oestereich IT Consultant QA

VIVIT TQA Treffen in Köln am 18. 04. 2013. API- Programmierung und Nutzung bei HP Quality Center / ALM. Michael Oestereich IT Consultant QA VIVIT TQA Treffen in Köln am 18. 04. 2013 API- Programmierung und Nutzung bei HP Quality Center / ALM Michael Oestereich IT Consultant QA Agenda Vorstellung der API- Versionen OTA- API SA- API REST- API

Mehr

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de

LINQ. LANGUAGE INTEGREATED QUERY.net 3.5. Bernhard Grojer BernhardG@ppedv.de LINQ LANGUAGE INTEGREATED QUERY.net 3.5 Bernhard Grojer BernhardG@ppedv.de Agenda Übersicht LINQ Basistechnologien Verschiedene Arten von LINQ LINQ (to Objects) LINQ TO SQL Übersicht LINQ Aggregationen

Mehr

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine.

In Tabelle 2.1 sehen Sie das Ergebnis beider Ausführungen auf meiner Maschine. Kapitel 2 Datenverwaltung durch SQL Server Wir wollen das obige Skript zwei Mal laufen lassen, einmal mit und einmal ohne eingeschalteten Schreibcache der Festplatte. Für eine lokale Festplatte können

Mehr

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de

Bedienungsanleitung. Stand: 26.05.2011. Copyright 2011 by GEVITAS GmbH www.gevitas.de GEVITAS-Sync Bedienungsanleitung Stand: 26.05.2011 Copyright 2011 by GEVITAS GmbH www.gevitas.de Inhalt 1. Einleitung... 3 1.1. Installation... 3 1.2. Zugriffsrechte... 3 1.3. Starten... 4 1.4. Die Menü-Leiste...

Mehr

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation

JOB SCHEDULER. Managed User Jobs. Dokumentation Juli 2005. MySQL-Job-Automation MySQL-Job-Automation Managed User Jobs JOB SCHEDULER Dokumentation Juli 2005 Software- und Organisations-Service GmbH Giesebrechtstr. 15 D-10629 Berlin Telefon (030) 86 47 90-0 Telefax (030) 861 33 35

Mehr

Kapitel 3 Abfragen mit SQL Seite 1. Abbildung 3.1: Die Datenbank EDV_Kurse

Kapitel 3 Abfragen mit SQL Seite 1. Abbildung 3.1: Die Datenbank EDV_Kurse Kapitel 3 Abfragen mit SQL Seite 1 3 Abfragen mit SQL Um bestimmte Datensätze aus der Datenbank zu gewinnen, verwendest du die»programmiersprache«sql (Structured Query Language). Sie ist derzeit die am

Mehr

Kapitel 3 Das Projekt Bankkonto Seite 1

Kapitel 3 Das Projekt Bankkonto Seite 1 Kapitel 3 Das Projekt Bankkonto Seite 1 3 Das Projekt Bankkonto Nun wirst du dich etwas gründlicher mit dem Quelltext einer Klasse beschäftigen. Du lernst, wie zwei Objekte eine gemeinsame Aufgabe erledigen.

Mehr

Objektorientiertes Programmieren für Ingenieure

Objektorientiertes Programmieren für Ingenieure Uwe Probst Objektorientiertes Programmieren für Ingenieure Anwendungen und Beispiele in C++ 18 2 Von C zu C++ 2.2.2 Referenzen und Funktionen Referenzen als Funktionsparameter Liefert eine Funktion einen

Mehr

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc.

E-Commerce: IT-Werkzeuge. Web-Programmierung. Kapitel 4: Einführung in JavaScript Stand: 03.11.2014. Übung WS 2014/2015. Benedikt Schumm M.Sc. Übung WS 2014/2015 E-Commerce: IT-Werkzeuge Web-Programmierung Kapitel 4: Stand: 03.11.2014 Benedikt Schumm M.Sc. Lehrstuhl für ABWL und Wirtschaftsinformatik Katholische Universität Eichstätt-Ingolstadt

Mehr

Einführung in VisualBasic for Applications. Stefan Mahlitz

Einführung in VisualBasic for Applications. Stefan Mahlitz Einführung in VisualBasic for Applications Stefan Mahlitz Stefan Mahlitz Einführung in VBA 27.08.00 Inhaltsverzeichnis 1. Grundlagen der VisualBasic for Applications (VBA) Programmierung...2 1.1 Variablen,

Mehr

Unterabfragen (Subqueries)

Unterabfragen (Subqueries) Unterabfragen (Subqueries) Die kürzeste Formulierung ist folgende: SELECT Felderliste FROM Tabelle1 WHERE Tabelle1.Feldname Operator (SELECT Feldname FROM Tabelle2 WHERE Bedingung); wobei Tabelle1 und

Mehr

SQL-Anweisungen. SELECT (SQL Data Query Language)

SQL-Anweisungen. SELECT (SQL Data Query Language) SQL-Anweisungen SELECT (SQL Data Query Language) SELECT * SELECT * FROM "meine Tabelle"; SELECT feldname1, feldname2 SELECT feldname1, feldname2 FROM meinetabelle ORDER BY feldname2, feldname1 DESC; WHERE

Mehr