Datenbankanbindung: JDBC und SQLJ

Größe: px
Ab Seite anzeigen:

Download "Datenbankanbindung: JDBC und SQLJ"

Transkript

1 Prof. Dr. Klaus Dittrich Datenbankanbindung: JDBC und SQLJ Betreuung: Anca Dobre Jussi Prevost Borrweg Zürich

2 Inhaltsverzeichnis 1. Einleitung Grundlagen Einsatzfälle Die Architektur von JDBC...4 A. Treiber...4 B. Programmierkonzept SQLJ...8 A. Zweck...9 B. Überblick...9 C. Hostausdrücke...10 D. In or Out?...11 E. Iteratoren Vergleich Verbindungsaufbau Insert Select Online-Überprüfung Geschwindigkeit Zusammenfassung Literaturverzeichnis

3 1. Einleitung JDBC (Java DataBase Connectivity) 1 ist eine herstellerneutrale Programmierschnittstelle (Application programming interface, API). Sie erlaubt den Programmierern, Verbindung zu einer Datenbank herzustellen und mittels SQL die Datenbank abzufragen oder zu aktualisieren, ohne sich um die spezifischen Eigenheiten eines bestimmten Datenbanksystems zu kümmern. Um die Unterschiede kümmern sich sogenannte JDBC-Treiber, welche von den jeweiligen Datenbankherstellern bereitgestellt werden. Die JDBC-API ist vollständig in Java implementiert und ist somit auch plattformunabhängig. SQLJ befasst sich mit verschiedenen Aspekten der Integration von SQL und Java. SQLJ besteht aus drei Teilen: Der erste Teil (SQLJ Teil 0) stellt eine standardisierte Syntax und Semantik für die Einbettung von SQL in Java-Programmen zur Verfügung. Dabei bietet er gegenüber dem JDBC-Kit eine einfachere Verwendung und Überprüfungsmöglichkeiten der SQL Abfragen schon zu Übersetzungszeit. Der zweite Teil (SQLJ Teil 1) befasst sich mit der Implementierung von Prozeduren und Funktionen in Java, welche in einer Datenbank gespeichert werden können. Der dritte Teil (SQLJ Teil 2) beschreibt Möglichkeiten, wie man Java-Datentypen und -Klassen als benutzerdefinierte SQL-Datentypen in einer Datenbank ablegen kann. In dieser Arbeit werde ich mich auf JDBC und SQLJ Teil 0 2 konzentrieren, weil es um einen Überblick von Datenbankanbindung in Java geht. Wer sich für weitere Details von SQLJ Teil 1 und 2 interessiert, findet im Literaturverzeichnis weiterführende Referenzen. 2. Grundlagen 2.1. Einsatzfälle Wer eine Anwendung oder ein Applet in Java realisiert und dabei eine Datenbankanbindung benötigt, braucht JDBC oder SQLJ. Anwendungen haben dabei vollkommen freie Hand, um auf (verteilte) Datenbankserver zuzugreifen. Applets können nur eine Datenbankverbindung zu dem Server öffnen, von dem sie der Benutzer heruntergeladen hat. Das heisst Datenbankund Webserver müssen sich auf demselben Computer befinden, was kein typisches Setup ist. Für signierte Applets sind diese Restriktionen gelockert. Für die Realisierung der Anwendung spielt es keine Rolle, ob eine herkömmliche Client- /Server-Architektur oder eine Multi-Tier-Architektur verwendet wird. 1 JDBC ist ein geschützter Markenname und eigentlich keine Abkürzung. Trotzdem wird JDBC vielfach als eine Abkürzung für Java Database Connectivity betrachtet. 2 Ich verwende ab jetzt nur noch die Bezeichnung SQLJ. 3

4 2.2. Die Architektur von JDBC JDBC besteht aus zwei Schichten. Die obere Schicht ist die eigentliche JDBC API. Diese kommuniziert mit der unteren Schicht, dem JDBC-Treibermanager-API, und sendet dieser die verschiedenen SQL-Anweisungen. Der Treibermanager sollte mit den verschiedenen Treibern von Drittherstellern kommunizieren, welche die eigentliche Verbindung zur Datenbank herstellen. Der Programmierer muss sich nicht um herstellerspezifische Eigenheiten von DBMS kümmern. Diese Unterschiede übernimmt ein JDBC-Treiber vom jeweiligen Datenbankhersteller. Abbildung 1 gibt einen Überblick. Abbildung 1: Die Architektur von JDBC A. Treiber Wie aus Abbildung 1 ersichtlich ist, werden vier verschiedene Typen von Treibern unterschieden, die zumindest den SQL-92 Entry Level unterstützen müssen. 1. Ein Typ 1 Treiber (JDBC-ODBC Brücke) benützt die ODBC 3 -Schnittstelle, um mit der Datenbank zu kommunizieren. Ein solcher Treiber wird im JDK angeboten. Allerdings muss auf allen Clients eine ODBC-Schnittstelle installiert sein, was nicht immer ist bzw. möglich wäre. 2. Ein Typ 2 Treiber (Native API Treiber) ist zum Teil in Java geschrieben, benutzt aber bestimmte Schnittstellen von DBMS. Für eine Installation wird nicht nur die 3 Open Database Connectivity; DB-Zugriffsschnittstelle von Microsoft 4

5 Java-Bibliothek benötigt, sondern auch Bibliotheken vom jeweiligen Datenbankhersteller. 3. Ein Typ 3 Treiber (JDBC-Net Treiber) ist eine reine Client-Bibliothek in Java, die über ein datenbankunabhängiges Protokoll Datenbankanforderungen an eine Serverkomponente schickt, die wiederum die Anforderungen in ein datenbankspezifisches Protokoll umsetzt. Die Client-Bibliothek ist unabhängig von der eigentlichen Datenbank und vereinfacht somit die Entwicklung. 4. Ein Typ 4 Treiber (Native-Protokoll Treiber) ist auch eine reine Java-Bibliothek, die JDBC-Anforderungen direkt in ein datenbankspezifisches Protokoll übersetzt. Die meisten Datenbankhersteller stellen ihren Datenbanken entweder einen Typ 3 oder Typ 4 Treiber zur Verfügung. Typ 1 und Typ 2 Treiber werden oft für das Testen verwendet oder in Unternehmensnetzwerken, wo die zusätzliche Installation der notwendigen Bibliotheken kein grosses Problem sein sollte. B. Programmierkonzept Die für die JDBC-Programmierung verwendeten Klassen sind im Paket java.sql enthalten. Abbildung 2 zeigt die wichtigsten Klassen. Abbildung 2: Die wichtigsten Klassen in JDBC Bei der Programmierung geht man nach folgenden Schritten vor: 1. Verbindung zur Datenbank herstellen (über den JDBC-Treiber) 2. SQL-Anweisung an ein sogenanntes Statement-Objekte übergeben 3. Statement ausführen 4. evt. Abfrageergebnis verarbeiten 5. nicht mehr verwendete Objekte freigeben Auf diese fünf Punkte werde ich jetzt kurz eingehen. In Kapitel 3 folgt dann ein zusammenhängendes Beispiel. 5

6 1) Verbindung herstellen Über die Klasse DriverManager wählt man einen Datenbanktreiber aus und erstellt eine neue Datenbankverbindung. Der Treibermanager muss einen Treiber allerdings erst registrieren, bevor er ihn aktivieren kann. Das folgende Beispiel registriert die JDBC-ODBC-Brücke von Sun: Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Jetzt kann die Verbindung zur Datenbank hergestellt werden. Die Verbindung wird dabei als Objekt vom Typ Connection repräsentiert. Zum Verbindungsaufbau werden drei Parameter benötigt. Der erste Parameter ist eine URL 4, welche den Verbindungsmechanismus, den Treiber und den Namen der Datenbank beinhaltet. Die beiden anderen Parameter sind Benutzername und Passwort. String url = "jdbc.odbc.seminardb"; String username = Jussi ; String pw = "seminar"; Connection con = DriverManager.getConnection(url, username, pw); Die Verbindung zur Datenbank steht nun. 2) SQL-Anweisungen SQL-Anweisungen werden als Statement-Objekte behandelt. Diese Objekte senden Anweisungen zur Datenbank und empfangen die zurückgelieferten Ergebnisse. Dabei werden drei verschiedene Arten von Statements unterschieden: 1. java.sql.statement ist die Basisklasse für die Verarbeitung von Anweisungen. Ein Statement-Objekt kann dabei für mehrere Abfragen und Anweisungen benutzt werden (z.b. innerhalb einer Transaktion). 2. java.sql.preparedstatement ist eine Klasse, welche die Verarbeitung von vorbereiteten Anweisungen zulässt. Dabei wird ein sogenannter IN-Parameter (vgl. zu IN und OUT Seite 11) in der SQL-Anweisung durch eine Hostvariable ersetzt. Als Platzhalter dient ein?. Bevor man nun die vorbereitete Anweisung ausführt, muss man die Hostvariable mit der passenden set-methode an den tatsächlichen Wert binden. Es gibt für jeden Datentyp eine set-methode. 3. java.sql.callablestatement ist eine Klasse, welche die Verarbeitung von gespeicherten Prozeduren ermöglicht. Darauf gehe ich nicht weiter ein. 3) Ausführen von Anweisungen Zum Ausführen der Anweisungen benötigt man noch zusätzliche Methoden. Dabei muss man zwischen Abfragen (SELECT) und anderen Anweisungen (Datendefinition und Datenmanipulation) unterscheiden. 6

7 Für Abfragen dient executequery(string sql) Im Erfolgsfalle wird das Ergebnis in einem java.sql.resultset zurückgeliefert. Die Ergebnismenge kann dabei durch den Aufruf von next() zeilenweise durchlaufen werden. Statement stmt = con.createstatement(); String query = "SELECT Nachname, Gehalt FROM Angestellter " + "WHERE Gehalt > 5000"; ResultSet rs = stmt.executequery(query); while (rs.next()) System.out.println("Name: " + rs.getstring(1) + " " + "Gehalt: " + rs.getdouble("gehalt")); rs.close(); Für Datendefinitionen und Datenmanipulationen muss hingegen executeupdate(string command) verwendet werden. Diese Methode liefert im Erfolgsfall die Anzahl veränderter Zeilen zurück, die von der SQL-Anweisung betroffen waren. Statement stmt = con.createstatement(); String cmd = "UPDATE Angestellte SET Gehalt = Gehalt * 1.1" + "WHERE Nachname = 'Prevost'"; stmt.executeupdate(cmd); Daneben gibt es noch eine allgemeine Methode execute, mit der sich beliebige SQL- Anweisung ausführen lassen. Die Methode liefert true, wenn das Ergebnis ein ResultSet ist, und false, wenn es ein Integer-Wert ist. 4) Ergebnisse von Abfragen Wie wir gesehen haben, werden Abfrageergebnisse in einem java.sql.resultset dargestellt. Ein ResultSet verwaltet einen internen Zeiger, der einen tupelweisen Zugriff auf die Ergebnismenge erlaubt (Ähnlich dem java.util.iterator). Der Zeiger ist dabei zu Beginn auf eine Position vor der ersten Zeile gesetzt. Folglich muss man die Methode next 5 einmal aufrufen, um den Iterator auf die erste Zeile zu setzen. Dies wird normalerweise in einer while-schleife gemacht: while (rs.next()) { Zeile der Ergebnismenge betrachten } Für den Zugriff auf den Inhalt einer Spalte gibt es verschiedene Zugriffsmethoden. Für jeden Java-Typ gibt es Zugriffsmethoden wie getstring und getdouble. Jede Zugriffsmethode hat zwei Formen, eine mit einem numerischen Parameter und eine mit einer Zeichenfolge. Übergibt man ein numerisches Argument, bezieht man sich auf die Spalte mit dieser Nummer (z.b. rs.getstring(1);). Zu beachten ist, dass die Nummerierung der Datenbankspalten 4 Uniform Resource Locator 5 Im JDBC 2 wurden auch andere Navigationsmethoden eingeführt. 7

8 mit 1 beginnt und nicht mit 0. Übergibt man eine Zeichenfolge, bezieht man sich auf die Spalte mit diesem Namen (z.b. rs.getdouble("gehalt");). Numerische Argumente sind zwar etwas effizienter, aber mit Zeichenfolgen ist der Code verständlicher und leichter zu pflegen. SQL- und Java-Datentypen sind nicht genau gleich. Jede get-methode führt eine sinnvolle Typumwandlung durch, wenn der Typ der Methode nicht dem Typ der Spalte entspricht. Z.B. können fast alle Typen als Strings dargestellt werden. Tabelle 1 gibt einen Überblick über die wichtigsten Typumwandlungen. SQL-Datentyp CHAR VARCHAR BIT INTEGER BIGINT REAL FLOAT DOUBLE BINARY DATE TIME Java-Datentyp String String boolean int long float double double byte[] java.sql.date java.sql.time Tabelle 1: Typabbildungen zwischen SQL und Java 5) Freigabe von Objekten Objekte, wie z.b. Connection, Statement oder ResultSet, welche nicht mehr gebraucht werden, sollten durch die Methode close freigegeben werden. Ein ResultSet wird üblicherweise nach Beenden der while-schleife geschlossen. Somit wird es sofort freigegeben und kann durch die automatische Speicherbereinigung entsorgt werden, was nebenbei auch DBMS-Ressourcen freimacht. Statement-Objekte werden oft am Ende der Methode geschlossen. Connection-Objekte werden meistens erst bei Beenden der Anwendung geschlossen, da diese ständig gebraucht werden SQLJ Es stellt sich die Frage, wieso man überhaupt SQLJ braucht. JDBC alleine reicht vollkommen aus. Es zeigen sich allerdings zwei Schwächen: 1. Der (SQL-relevante) Code wird lange und unhandlich. 2. Fehler innerhalb SQL-Operationen werden erst zur Laufzeit entdeckt. Wie wir sehen werden, löst SQLJ beide Probleme. Vom ersten Punkt und dessen Lösung können wir uns in Kapitel 3 überzeugen. 8

9 A. Zweck Java gehört zu den objektorientierten Programmiersprachen. SQL ist dagegen eine nichtprozedurale Sprache zur Definition und Manipulation von Daten in relationalen Datenbanken. SQLJ ist der ANSI-Standard 6 für die Einbettung von statischen SQL-Anweisungen in Java Programmen. Es ist das Produkt der Zusammenarbeit von Oracle, IBM, Sybase, Tandem, Informix, JavaSoft, XDB und Microsoft. B. Überblick SQLJ ersetzt JDBC nicht, sondern benutzt es weiterhin. Für statische SQL-Anweisungen, welche schon zum Entwicklungszeitpunkt bekannt sind, liefert SQLJ aber einen einfacheren und robusteren Weg. Für dynamische SQL-Anweisungen, welche z.b. während der Laufzeit von einem Endbenutzer kreiert werden, muss der bisherige JDBC-Weg verwendet werden. Natürlich können beide Möglichkeiten nebeneinander eingesetzt werden. JDBC und SQLJ sind also keine Substitute, sondern Komplementärprodukte. SQLJ-Anweisungen werden grundsätzlich mit #sql { SQL-Ausdruck }; gekennzeichnet. Java-Code mit solchen Anweisungen kann somit nicht mehr in einem herkömmlichen Java-Compiler übersetzt werden, sondern benötigt einen SQLJ-Translator. Abbildung 3 zeigt das Vorgehen im Überblick. Abbildung 3: Übersetzung eines SQLJ-Programms 6 seit

10 Der Quellcode wird nicht in einer.java-datei erfasst, sondern in einer.sqlj-datei. Diese Datei wird von einem Präprozessor, dem SQLJ-Translator, übersetzt. Dabei werden die SQL- Operationen auf ihre Syntax und Semantik überprüft. Zusätzlich besteht die Möglichkeit des Online-Überprüfens, d.h. der Translator kann die Anweisungen gegen das Datenbankschema testen. Während der Übersetzung werden (mindestens) zwei Dateien generiert: 1. Eine Java-Quellcodedatei (.java-datei): Sie enthält a) die SQL-Anweisungen, welche durch Aufrufe an das SQLJ-Laufzeitsystems ersetzt wurden; und b) den normalen Quellcode des Programms. 2. Ein sogenanntes Profil (Datei mit der Endung.ser), welches eine Beschreibung der SQL-Anweisungen beinhaltet. Nun kann der generierte Java-Quellcode mit einem Standard-Compiler (z.b. javac aus dem JDK) übersetzt werden. Auch das Starten der Anwendung ist normal möglich. Das SQLJ- Laufzeitsystem wird dabei automatisch aufgerufen, wenn es sich um eine SQLJ-Anwendung handelt. Zur Verbindung mit der Datenbank wird der JDBC-Treiber benutzt. C. Hostausdrücke Der zentrale Bestandteil der Integration von SQL in Java als Wirtssprache bilden die sogenannten Hostausdrücke. Die einfachste Form davon sind die Hostvariablen. Das sind normale Java-Variablen, welche den Konventionen der Typenabbildung zwischen Java und SQL genügen (vgl. Tabelle 1). Es versteht sich von selbst, dass diese Variablen innerhalb des Blockes sichtbar sein müssen. Hostvariablen werden in SQLJ-Anweisungen mit einem vorangestellten Doppelpunkt gekennzeichnet. Z.B.: double salaer; String name = "Prevost"; #sql { SELECT Gehalt INTO :salaer FROM Angestellter WHERE Nachname = :name }; Neben Hostvariablen können auch Hostausdrücke verwendet werden. Das sind u.a.: Zuweisungen: z.b. Gehalt = Gehalt * (1.0 + bonus/100) Inkrement und Dekrement: z.b. i++ Methodenaufrufe: z.b. name.touppercase() Dabei müssen diese Ausdrücke innerhalb einer runden Klammer mit einem Doppelpunkt davor stehen. Als Beispiel: String[] namen = new String[] { "Prevost", "Scheff", "Knaller"}; double[] bonus = new double[] { 10.0, 5.0, 2.5 }; for (int i=0; i<namen.length; i++ ) { #sql { UPDATE Angestellter SET Gehalt = Gehalt * :(1.0 + bonus[i]/100) WHERE Nachname = :(namen[i].touppercase()) }; } 10

11 Doch noch nicht genug mit der Flexibilität von SQLJ. Es können auch gespeicherte Prozeduren und Funktionen als Hostausdrücke verwendet werden. Dabei werden die Schlüsselworte CALL für Prozeduren und VALUES für Funktionen benutzt. Das folgende Beispiel ruft die (eingebaute) SQL-Funktion SYSDATE() 7 auf und weist den Wert einer Variable zu: java.sql.date heute; #sql heute = { VALUES(SYSDATE()) }; System.out.println("Die Datenbank denkt, heute ist der " + heute); D. In or Out? Im vorherigen Abschnitt habe ich die Tatsache weggelassen, dass Hostvariablen (oder -ausdrücke) in drei verschiedenen Modi benutzt werden können. IN bezeichnet Werte, die an die Datenbank gesendet werde. Dagegen beschreibt OUT Variablen, die ihren Wert aus der Datenbank bekommen. INOUT umfasst beide. Normalerweise haben Hostausdrücke den Modus IN. Die Ausnahme sind Hostausdrücke in der SELECT INTO Anweisung, welche OUT-Variablen sind. In diesen Fällen ist der Modus implizit vorgegeben. In allen anderen Fällen, v.a. bei gespeicherten Prozeduren, muss der Modus explizit festgelegt werden. E. Iteratoren Hostausdrücke eignen sich nur für den Austausch einzelner Werte zwischen SQL und Java. Zur Speicherung von ganzen Ergebnismengen wird dagegen ein Iterator verwendet, ähnlich einem java.sql.resultset. Im Unterschied zum JDBC, muss ein Iterator vorher deklariert werden. Dabei wird zwischen zwei unterschiedlichen Arten unterschieden: Positionsiteratoren: Sie werden durch den (Java-)Datentyp der Spalte charakterisiert. Zum Abrufen der Werte wird die FETCH-Anweisung verwendet. Dies ist eine übliche Vorgehensweise auch in anderen Sprachen mit eingebettetem SQL. #sql iterator MyPosIter(String, double); Benannte Interatoren: Hier kann neben dem Datentyp auch der Bezeichner gewählt werden. Der Bezeichner liefert denn auch gerade noch den Namen für die Zugriffsmethode auf den jeweiligen Spaltenwert. JDBC-Programmier sollten sich unmittelbar mit dieser Art vertraut fühlen. #sql iterator MyNamedIter(String name, double gehalt); Dabei muss die Anzahl der Spalten der Ergebnisrelation mit der Anzahl der Attribute der Iteratoren übereinstimmen. In unserem Fall muss die Ergebnisrelation zweidimensional sein. Der SQLJ-Translator generiert aus der Iterator-Definition eine Iterator-Klasse mit dem angegebenen Namen. Z.B. ergibt sich für den Positionsiterator eine Klasse MyPosIter. Bei 7 Zumindest bei Oracle 11

12 den benannten Iteratoren wird zusätzlich noch für jede Spalte eine Zugriffsmethode geschaffen, also in unserem Beispiel zwei Methoden mit den Namen name() und gehalt(). 3. Vergleich Nun wissen wir genug, um SQLJ und JDBC zu vergleichen. Am Besten können wir das ganze anhand eines Beispiels machen. Wie schon erwähnt, muss bei SQLJ das Datenbankschema schon bekannt sein. Ich verwende folgende zwei Relationen: 1. Angestellter(Vorname, Nachname, AHV_Nr, Gehalt, Abt_Nr) 2. Abteilung(Abt_Name, Nr, Ort) Im Beispiel wird zuerst ein INSERT und danach ein SELECT ausgeführt. import java.sql.*; import sqlj.runtime.*; import sqlj.runtime.ref.*; public class SeminarExample { // Die beiden folgenden Variablen sind für die Abfrage vorgesehen String name = "Müller"; double salary = ; Connection con; public static void main(string[] args) throws SQLException { // Treiber registrieren, Verbindung herstellen usw. (Vgl. Seite 6) if (args[0].equals("jdbc")) jdbcexample(); else if (args[0].equals("sqlj")) sqljexample(); } public void jdbcexample() throws SQLException { // Zuerst INSERT durchführen // SQL-Anweisung als Objekt vorbereiten Statement stmt = con.createstatement(); // INSERT-Anweisung erstellen String command = "INSERT INTO Angestellter " + "VALUES ('Jussi', 'Prevost', 2606, , 3)"; // Anweisung ausführen stmt.executeupdate(command); // Statement schliessen stmt.close(); // SELECT ausführen // Abfrage erstellen String query = "SELECT Vorname, Nachname, AHV_Nr, Gehalt, Ort " + "FROM Angestellter, Abteilung " + "WHERE Nachname=? AND " + "Gehalt>? AND " + "Abt_Nr=Nr"; 12

13 } // PreparedStatements vorbereiten und Hostvariablen einbinden PreparedStatement pstmt = con.preparedstatement(query); pstmt.setstring(1, name); pstmt.setint(2, salary); // Abfrage ausführen ResultSet rs = pstmt.executequery(); // und Resultate anzeigen while(rs.next()) { System.out.println("Vorname = " + rs.getstring(1) + " " + "Nachname = " + rs.getstring(2) + " " + "AHV_Nr = " + rs.getint(3) + " " + "Gehalt = " + rs.getdouble("gehalt") + " " + "Ort = " + rs.getstring("ort")); } // ResultSet- und Statement-Objekte schliessen rs.close(); pstmt.close(); public void sqljexample() throws SQLException { // Zuerst INSERT durchführen // INSERT-Anweisung in der SQLJ-Syntax erstellen #sql { INSERT INTO Angestellter(Vorname, Nachname, AHV_Nr, Gehalt, Abt_Nr) values('jussi', 'Prevost', 2606, , 3) }; // SELECT ausführen // Iterator für das Speichern der Abfrage definieren #sql iterator MyIter(String FirstName, String Name, int AHV_NR, double Gehalt, String Ort); } } // Iterator-Objekt erstellen MyIter iter; // Abfrage ausführen und Ergebnis dem Iterator zuweisen #sql iter = { SELECT Vorname, Nachname, AHV_Nr, Gehalt, Ort FROM Angestellter, Abteilung WHERE Nachname = :name AND Gehalt> :salary AND Abt_Nr=Nr }; // Ergebnis Anzeigen while (iter.next()) { System.out.println("Vorname = " + iter.firstname() + " " + "Nachname = " + iter.name() + " " + "AHV_Nr = " + iter.ahv_nr()+ " " + "Gehalt = " + iter.gehalt() + " " + "Ort = " + iter.ort(); } // Iterator-Objekt freigeben iter.close(); 13

14 3.1. Verbindungsaufbau Der Verbindungsaufbau funktioniert in beiden Varianten gleich. Eine geschicktere Variante anstelle der manuellen Registrierung des Treibers, wäre die Verwendung der Systemeigenschaft jdbc.drivers. Dabei könnte auch die URL, der Benutzername und das Passwort in einer Eigenschaftsdatei (Datei mit der Endung.properties) gespeichert werden und bequem auf die Endbenutzer eingestellt werden Insert Eine Insert-Anweisung auf dem JDBC-Weg umfasst mehrere Schritte, welche den Code aufblähen: Zuerst muss ein Statement-Objekt erzeugt werden, dann ausgeführt und zum Schluss sollte es wieder geschlossen werden. SQLJ braucht hingegen nur eine Anweisung, welche (beinahe) die reine SQL-Anweisung in der SQLJ-Syntax beinhaltet. Es wird auch keine execute-methode gebraucht. Die Verwendung von SQLJ ist also viel einfacher, kürzer und deshalb auch einfacher zu Warten Select Bei der Select-Anweisung sieht es ähnlich aus. Die JDBC-Methode benötigt wieder mehrere Schritte: (Prepared)Statement-Objekt schaffen, Variablen zuweisen, ausführen, Ergebnis einem ResultSet zuweisen. Danach Ergebnis bearbeiten und zum Schluss ResultSet- und Statement-Objekte schliessen. Bei der SQLJ-Methode muss zuerst der Iterator für die Ergebnismenge definiert werden. Dies sieht auf den ersten Blick nach zusätzlicher Arbeit aus, ist es aber nicht. Denn ein solcher Iterator liefert intuitivere Zugriffsmethoden auf die einzelnen Ergebnisspalten, als diejenigen von ResultSet. Auch hier wird keine execute-methode verwendet. Zudem entfällt das Setzen der Platzhalter und Zuweisen der (Host-)Variablen durch Methodenaufruf. Die Host- Ausdrücke können direkt in der SQL-Anweisung verwendet werden. Das SQLJ-Verfahren ist wiederum kürzer und einfacher zu Bedienen Online-Überprüfung Bei SQLJ besteht die Möglichkeit, SQL-Anweisungen zur Übersetzungszeit anhand des Datenbankschemas zu prüfen. Dabei werden nicht schon die Daten benötigt, sondern das Schema mit den richtigen Attributen und Datentypen genügt. Eine solche Online- Überprüfung kann folgendermassen aussehen: sqlj user=jussi/seminar url=jdbc:odbc:seminardb SeminarExample.sqlj So werden SQL-spezifische Fehler schon zur Übersetzungszeit erkannt und können behoben werden. JDBC (bzw. der Java-Compiler) bietet keine solchen Möglichkeiten. 14

15 3.5. Geschwindigkeit Da SQLJ über JDBC mit einer Datenbank kommuniziert, kann es kaum schneller sein als JDBC alleine. In beiden Technologien besteht die Möglichkeit, Datenmanipulationsanweisungen zu sammeln und in Form eines Stapels (Batch) an die Datenbank zu senden. Abfragen kann man nicht in einem Stapel einbinden, da sie Ergebnismengen zurückliefern. Hat man z.b. 20 Tupel einzufügen, so würde man diese in einem Stapeln sammeln und dann als eine Transaktion an die Datenbank senden, anstatt alle 20 Anweisungen einzeln zu übermitteln. Die Vorteile liegen auf der Hand. 4. Zusammenfassung Programmierer, die in ihrer Anwendung eine Datenbankanbindung brauchen, benötigen aus meiner Sicht JDBC und SQLJ. Dabei wird eine Anwendung geschaffen, die sowohl plattformunabhängig wie auch DBMS-unabhängig ist. JDBC alleine würde genügen, weist aber zwei Schwächen aus: 1. Der Quellcode wird lange und unübersichtlich, was Fehlersuche und Unterhalt erschwert. 2. Fehler innerhalb von SQL-Anweisungen werden erst zur Laufzeit erkannt. SQLJ löst beide Probleme folgendermassen: 1. SQLJ erlaubt die Verwendung von Hostausdrücken direkt in SQL-Anweisungen, was den Code kürzer und einfacher macht. 2. Der SQLJ Translator überprüft die Syntax und Semantik von SQL-Anweisungen. Es besteht die Möglichkeit die Anweisungen gegen das Datenbankschema zu prüfen, wobei SQL-Fehler frühzeitig entdeckt und behoben werden können. Voraussetzung für den Einsatz von SQLJ ist, dass die Datenbank schon vorhanden ist, oder zumindest das Schema. Ansonsten wäre es nicht möglich eine Online-Überprüfung vorzunehmen, oder sogar Abfragen vorzubereiten! Allgemein kann man sagen, dass JDBC und SQLJ komplementäre Technologien sind, weil: SQLJ benutzt zur Kommunikation mit der Datenbank JDBC. JDBC wird für dynamisches SQL gebraucht, wo die Anweisungen erst zur Laufzeit bekannt werden. JDBC und SQLJ können miteinander eingesetzt werden. 15

16 Literaturverzeichnis Estermann, Conny. SQLJ., Universität Zürich, Sommersemester 2001 Horstmann, Cay S. und Cornell, Gary. Core Java 2 Advanced Features. Prentice Hall, 1999 JDBC API Documentation. Khan, Salman & Kurian, Thomas & Wright, Brian. SQLJ: It s Javalicious! Lagler, Severin. JDBC und JavaBlend., Universität Zürich, Sommersemester 2001 Rohwelder, Ekkehard. SQLJ: Tricks, Traps and Gems Saake, Gunter und Sattler, Kai-Uwe. Datenbanken & Java: JDBC, SQLJ und ODMG. dpunkt.verlag, 2000 SQLJ Konsortium. SQLJ Standards. Taylor, Blair und Woodger, James. SQLJ: An Easier Way to Access SQL Data. Java Enterprise Developer online ( 006F42A0), November

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter

SQLJ. Standardisierte Java-DB. DB-Schnittstelle. Spezifikationen. Oracle, IBM, Informix, Sybase,, Tandem, Sun, Microsoft stehen dahinter SQLJ Standardisierte Java-DB DB-Schnittstelle Spezifikationen Part 0: Embedded SQL für Java (ANSI-Standard; Object Language Binding) Statische Einbettung von SQL-Anweisungen in Java-Quelltext Part 1: Java

Mehr

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql

seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql JDBC inoffizielle Abkürzung für: Java Database Connectivity seit Java 1.1 Bestandteil der API: packages java.sql, javax.sql ist eine Menge von Klassen und Methoden, um aus Java-Programmen relationale Datenbanken

Mehr

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1

Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Java Database Connectivity (JDBC) 14.07.2009 Walther Rathenau Gewerbeschule 1 Was ist JDBC? Hauptsächlich eine Sammlung von Java Klassen und Schnittstellen für eine einfache Verbindung von Java Programmen

Mehr

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures

Universität Stuttgart Abteilung Anwendersoftware 01.07.2002. - Steht für Embedded SQL in Java. - Java-Methoden als SQL Stored-Procedures SQLJ Basics Universität Stuttgart Abteilung Anwendersoftware 01.07.2002 Was ist SQLJ? SQLJ Part 0: - Steht für Embedded SQL in Java SQLJ Part 1: - Java-Methoden als SQL Stored-Procedures SQLJ Part 2: -

Mehr

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann.

JDBC. Es kann z.b. eine ODBC-Treiberverbindung eingerichtet werden, damit das JAVA-Programm auf eine ACCESS-DB zugreifen kann. JDBC in 5 Schritten JDBC (Java Database Connectivity) ist eine Sammlung von Klassen und Schnittstellen, mit deren Hilfe man Verbindungen zwischen Javaprogrammen und Datenbanken herstellen kann. 1 Einrichten

Mehr

Oracle: Abstrakte Datentypen:

Oracle: Abstrakte Datentypen: Oracle: Abstrakte Datentypen: Oracle bietet zwei mögliche Arten um abstrakte Datentypen zu implementieren: Varying Array Nested Table Varying Array (kunde) kdnr kdname gekaufteart 1 Mustermann 1 4 5 8

Mehr

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München

Dynamisches SQL. Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München Kapitel 4 Dynamisches SQL Folien zum Datenbankpraktikum Wintersemester 2009/10 LMU München 2008 Thomas Bernecker, Tobias Emrich unter Verwendung der Folien des Datenbankpraktikums aus dem Wintersemester

Mehr

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. Datenbank-Verschlüsselung mit DbDefence und Webanwendungen. In diesem Artikel werden wir Ihnen zeigen, wie Sie eine Datenbank verschlüsseln können, um den Zugriff einzuschränken, aber trotzdem noch eine

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen

Datenbankentwurf & Datenbankzugriff mit JDBC. Georg Köster Sven Wagner-Boysen Datenbankentwurf & Datenbankzugriff mit JDBC Georg Köster Sven Wagner-Boysen 6. November 2007 Gliederung 2 Datenbankentwurf für ProminentPeople.info ER-Modell Relationaler Entwurf Normalisierung Datenbankzugriff

Mehr

3. Stored Procedures und PL/SQL

3. Stored Procedures und PL/SQL 3. Stored Procedures und PL/SQL Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln

Mehr

Gesicherte Prozeduren

Gesicherte Prozeduren Gesicherte Prozeduren Wenn eine Anwendung auf einer Client-Maschine läuft, wird normalerweise jede SQL-Anweisung einzeln vom Client an den Server gesandt, und jedes Ergebnistupel wird einzeln zurückgeliefert.

Mehr

Datenbanken & Informationssysteme Übungen Teil 1

Datenbanken & Informationssysteme Übungen Teil 1 Programmierung von Datenbankzugriffen 1. Daten lesen mit JDBC Schreiben Sie eine Java-Anwendung, die die Tabelle Books in der Datenbank azamon ausgibt. Verwenden Sie dabei die SQL-Anweisung select * from

Mehr

2. Datenbank-Programmierung

2. Datenbank-Programmierung 2. Datenbank-Programmierung SQL ist eingeschränkt bezüglich der algorithmischen Mächtigkeit, z.b. Berechnung einer transitiven Hülle ist in Standard-SQL nicht möglich. Die Einschränkung ist von Bedeutung

Mehr

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER

Inhalt. 1 Einleitung AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER AUTOMATISCHE DATENSICHERUNG AUF EINEN CLOUDSPEICHER Inhalt 1 Einleitung... 1 2 Einrichtung der Aufgabe für die automatische Sicherung... 2 2.1 Die Aufgabenplanung... 2 2.2 Der erste Testlauf... 9 3 Problembehebung...

Mehr

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

Kapitel 10. JDBC und SQLJ. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1 Kapitel 10 JDBC und SQLJ 1 JDBC und SQLJ Bisher: Einbettung von SQL (statisch bzw. dynamisch) in C, C++, COBOL, ADA (embedded SQL) bzw. prozedurale Erweiterungen für SQL in Oracle (PL/SQL) Was ist mit

Mehr

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {...

Verhindert, dass eine Methode überschrieben wird. public final int holekontostand() {...} public final class Girokonto extends Konto {... PIWIN I Kap. 8 Objektorientierte Programmierung - Vererbung 31 Schlüsselwort: final Verhindert, dass eine Methode überschrieben wird public final int holekontostand() {... Erben von einer Klasse verbieten:

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

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente

Autorisierung. Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Autorisierung Sicherheit und Zugriffskontrolle & Erstellen einer Berechtigungskomponente Dokumentation zum Referat von Matthias Warnicke und Joachim Schröder Modul: Komponenten basierte Softwareentwickelung

Mehr

Programmieren in Java

Programmieren in Java Programmieren in Java objektorientierte Programmierung 2 2 Zusammenhang Klasse-Datei In jeder *.java Datei kann es genau eine public-klasse geben wobei Klassen- und Dateiname übereinstimmen. Es können

Mehr

Beispiel: DB-Mock (1/7)

Beispiel: DB-Mock (1/7) Beispiel: DB-Mock (1/7) Aufgabe: DB, auf die vereinfachend nur lesend zugeriffen wird mocken warum: benötigte keine DB-Lizenz, garantiert gleiche Werte ohne aufwändiges reset, kein Zeitverlust durch Verbindungsaufbau

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Anleitung IPSec VPN. Datum: 17.03.2010. Version: 1.1. Gültig ab: 17.03.2010 Ablage:

Anleitung IPSec VPN. Datum: 17.03.2010. Version: 1.1. Gültig ab: 17.03.2010 Ablage: Anleitung IPSec VPN Datum: 17.03.2010 Autor: Version: 1.1 Freigegeben durch: Th. Ragaz Ivo Bussinger Gültig ab: 17.03.2010 Ablage: Verteiler: R:\09_Dokumente_Initiative\60_Rollout\20_Benutzeranleitung\30_IPSec_VP

Mehr

Datenbank und Informationssysteme

Datenbank und Informationssysteme Datenbank und Informationssysteme Inhaltsverzeichnis 1 Programmierung von Datenbankzugriffen 3 1.1 Architektur des SQL/CLI am Beispiel JDBC................... 4 1.2 Anfragen und Ergebnismengen in JDBC......................

Mehr

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein.

Es sollte die MS-DOS Eingabeaufforderung starten. Geben Sie nun den Befehl javac ein. Schritt 1: Installation des Javacompilers JDK. Der erste Start mit Eclipse Bevor Sie den Java-Compiler installieren sollten Sie sich vergewissern, ob er eventuell schon installiert ist. Gehen sie wie folgt

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

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Reporting Services und SharePoint 2010 Teil 1

Reporting Services und SharePoint 2010 Teil 1 Reporting Services und SharePoint 2010 Teil 1 Abstract Bei der Verwendung der Reporting Services in Zusammenhang mit SharePoint 2010 stellt sich immer wieder die Frage bei der Installation: Wo und Wie?

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

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

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Updatehinweise für die Version forma 5.5.5

Updatehinweise für die Version forma 5.5.5 Updatehinweise für die Version forma 5.5.5 Seit der Version forma 5.5.0 aus 2012 gibt es nur noch eine Office-Version und keine StandAlone-Version mehr. Wenn Sie noch mit der alten Version forma 5.0.x

Mehr

SEMINAR Modifikation für die Nutzung des Community Builders

SEMINAR Modifikation für die Nutzung des Community Builders 20.04.2010 SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung ecktion SEMINAR Modifikation für die Nutzung des Community Builders Step by Step Anleitung Bevor Sie loslegen

Mehr

5.2 Neue Projekte erstellen

5.2 Neue Projekte erstellen 5.2 Neue Projekte erstellen Das Bearbeiten von bestehenden Projekten und Objekten ist ja nicht schlecht wie aber können Sie neue Objekte hinzufügen oder gar völlig neue Projekte erstellen? Die Antwort

Mehr

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper)

Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10. Technische Informationen (White Paper) Upgrade auf die Standalone Editionen von Acronis Backup & Recovery 10 Technische Informationen (White Paper) Inhaltsverzeichnis 1. Über dieses Dokument... 3 2. Überblick... 3 3. Upgrade Verfahren... 4

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

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Testen mit JUnit. Motivation

Testen mit JUnit. Motivation Test First Design for Test in Eclipse (eigentlich: ) zu einer Klasse Beispiel zur Demonstration Ergänzungen Test First "Immer dann, wenn Du in Versuchung kommst, etwas wie eine print- Anweisung oder einen

Mehr

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem

Fachbericht zum Thema: Anforderungen an ein Datenbanksystem Fachbericht zum Thema: Anforderungen an ein Datenbanksystem von André Franken 1 Inhaltsverzeichnis 1 Inhaltsverzeichnis 1 2 Einführung 2 2.1 Gründe für den Einsatz von DB-Systemen 2 2.2 Definition: Datenbank

Mehr

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele: 2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Configuring Terminal Services o Configure Windows Server 2008 Terminal Services RemoteApp (TS RemoteApp) o Configure Terminal Services Gateway

Mehr

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005

Einführung in Java. PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Einführung in Java PING e.v. Weiterbildung Andreas Rossbacher 24. März 2005 Gliederung 1. Was ist Java / Geschichte von Java 2. Prinzip der Plattformunabhängigkeit 3. Wie kommt man vom Quellcode zum Programm

Mehr

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt.

Über die Internetseite www.cadwork.de Hier werden unter Download/aktuelle Versionen die verschiedenen Module als zip-dateien bereitgestellt. Internet, Codes und Update ab Version 13 Um Ihnen einen möglichst schnellen Zugang zu den aktuellsten Programmversionen zu ermöglichen liegen Update-Dateien für Sie im Internet bereit. Es gibt drei Möglichkeiten

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Prinzipien Objektorientierter Programmierung

Prinzipien Objektorientierter Programmierung Prinzipien Objektorientierter Programmierung Valerian Wintner Inhaltsverzeichnis 1 Vorwort 1 2 Kapselung 1 3 Polymorphie 2 3.1 Dynamische Polymorphie...................... 2 3.2 Statische Polymorphie........................

Mehr

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133.

Folgendes PL/SQL Codefragment zeigt das grundlegende Statement für diesen Test: Java. http://www.trivadis.com/images/javaperf_tcm16-7133. Page 1 of 7 Betrifft: Java oder PL/SQL? Art der Info: Technische Background Info Autor: Guido Schmutz (guido.schmutz@trivadis.com) Quelle: Aus unserer Schulungs- und Beratungstätigkeit Mit Oracle8.1 besteht

Mehr

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695

Database Exchange Manager. Infinqa IT Solutions GmbH, Berlin Stralauer Allee 2 10245 Berlin Tel.:+49(0) 30 2900 8639 Fax.:+49(0) 30 2900 8695 Database Exchange Manager Replication Service- schematische Darstellung Replication Service- allgemeines Replikation von Daten von bzw. in ein SAP-System und einer relationalen DMS-Datenbank Kombination

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

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

Wie richten Sie Ihr Web Paket bei Netpage24 ein

Wie richten Sie Ihr Web Paket bei Netpage24 ein Wie richten Sie Ihr Web Paket bei Netpage24 ein Eine kostenlose ebook Anleitung von Netpage24 - Webseite Information 1 E-Mail Bestätigung... 3 2 Ticketsystem... 3 3 FTP Konto anlegen... 4 4 Datenbank anlegen...

Mehr

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster:

Öffnen Sie den Internet-Browser Ihrer Wahl. Unabhängig von der eingestellten Startseite erscheint die folgende Seite in Ihrem Browserfenster: Schritt 1: Verbinden Sie Ihr wireless-fähiges Gerät (Notebook, Smartphone, ipad u. ä.) mit dem Wireless-Netzwerk WiFree_1. Die meisten Geräte zeigen Wireless-Netzwerke, die in Reichweite sind, automatisch

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

Grundlagen von Python

Grundlagen von Python Einführung in Python Grundlagen von Python Felix Döring, Felix Wittwer November 17, 2015 Scriptcharakter Programmierparadigmen Imperatives Programmieren Das Scoping Problem Objektorientiertes Programmieren

Mehr

SEP 114. Design by Contract

SEP 114. Design by Contract Design by Contract SEP 114 Design by Contract Teile das zu entwickelnde Programm in kleine Einheiten (Klassen, Methoden), die unabhängig voneinander entwickelt und überprüft werden können. Einheiten mit

Mehr

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken

Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Handbuch ECDL 2003 Basic Modul 5: Datenbank Grundlagen von relationalen Datenbanken Dateiname: ecdl5_01_00_documentation_standard.doc Speicherdatum: 14.02.2005 ECDL 2003 Basic Modul 5 Datenbank - Grundlagen

Mehr

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API).

Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Paketdeklaration Paketdeklaration package Bezeichner ; Pakete dienen dazu, die Software eines Projektes in größere inhaltlich zusammengehörige Bereiche mit eigenem Namen einzuteilen (siehe Java API). Ein

Mehr

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen

- Zweimal Wöchentlich - Windows Update ausführen - Live Update im Norton Antivirusprogramm ausführen walker radio tv + pc GmbH Flüelerstr. 42 6460 Altdorf Tel 041 870 55 77 Fax 041 870 55 83 E-Mail info@walkerpc.ch Wichtige Informationen Hier erhalten sie einige wichtige Informationen wie sie ihren Computer

Mehr

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9

pro4controlling - Whitepaper [DEU] Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9 Whitepaper zur CfMD-Lösung pro4controlling Seite 1 von 9 1 Allgemeine Beschreibung "Was war geplant, wo stehen Sie jetzt und wie könnte es noch werden?" Das sind die typischen Fragen, mit denen viele Unternehmer

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

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT

Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010. FHNW, Services, ICT Berechtigungen im Kalender Anleitung für die Rechtevergabe im Outlook Kalender 2010 FHNW, Services, ICT Windisch, März 2013 Berechtigungen im Kalender 1 1 Gruppen 3 1.1 Die Gruppe/der Benutzer Standard

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Einführung in die Programmierung

Einführung in die Programmierung Technische Universität München WS 2003/2004 Institut für Informatik Prof. Dr. Christoph Zenger Testklausur Einführung in die Programmierung Probeklausur Java (Lösungsvorschlag) 1 Die Klasse ArrayList In

Mehr

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0)

Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) Tapps mit XP-Mode unter Windows 7 64 bit (V2.0) 1 Einleitung... 2 2 Download und Installation... 3 2.1 Installation von WindowsXPMode_de-de.exe... 4 2.2 Installation von Windows6.1-KB958559-x64.msu...

Mehr

Bauteilattribute als Sachdaten anzeigen

Bauteilattribute als Sachdaten anzeigen Mit den speedikon Attributfiltern können Sie die speedikon Attribute eines Bauteils als MicroStation Sachdaten an die Elemente anhängen Inhalte Was ist ein speedikon Attribut?... 3 Eigene Attribute vergeben...

Mehr

Applet Firewall und Freigabe der Objekte

Applet Firewall und Freigabe der Objekte Hauptseminar Applet Firewall und Freigabe der Objekte Nachweis von Sicherheitseigenschaften für JavaCard Jin Zhou Ein Überblick über diesen Vortrag Applet Firewall Kontext JCRE Entry Point Objekt Shareable

Mehr

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof

Bedienungsanleitung. Matthias Haasler. Version 0.4. für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Bedienungsanleitung für die Arbeit mit der Gemeinde-Homepage der Paulus-Kirchengemeinde Tempelhof Matthias Haasler Version 0.4 Webadministrator, email: webadmin@rundkirche.de Inhaltsverzeichnis 1 Einführung

Mehr

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer

Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Fachdidaktik der Informatik 18.12.08 Jörg Depner, Kathrin Gaißer Klassendiagramme Ein Klassendiagramm dient in der objektorientierten Softwareentwicklung zur Darstellung von Klassen und den Beziehungen,

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress.

Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Anmeldung http://www.ihredomain.de/wp-admin Dashboard Diese Ansicht erhalten Sie nach der erfolgreichen Anmeldung bei Wordpress. Das Dashboard gibt Ihnen eine kurze Übersicht, z.b. Anzahl der Beiträge,

Mehr

Vorkurs C++ Programmierung

Vorkurs C++ Programmierung Vorkurs C++ Programmierung Klassen Letzte Stunde Speicherverwaltung automatische Speicherverwaltung auf dem Stack dynamische Speicherverwaltung auf dem Heap new/new[] und delete/delete[] Speicherklassen:

Mehr

Installation der SAS Foundation Software auf Windows

Installation der SAS Foundation Software auf Windows Installation der SAS Foundation Software auf Windows Der installierende Benutzer unter Windows muss Mitglied der lokalen Gruppe Administratoren / Administrators sein und damit das Recht besitzen, Software

Mehr

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden.

Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. Einfache Ein- und Ausgabe mit Java 1. Hallo-Welt! Das erste Programm soll einen Text zum Bildschirm schicken. Es kann mit jedem beliebigen Texteditor erstellt werden. /** Die Klasse hello sendet einen

Mehr

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.

Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin. Humboldt-Universität zu Berlin Juristische Fakultät Kurzanleitung zur Bereitstellung von Sachverhalten und Lösungen zum Universitätsrepetitorium auf dem Server unirep.rewi.hu-berlin.de Stand: 1. Juni 2010

Mehr

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor: Client-Installation ec@ros2 ASP-Server 1. Allgemeine Informationen Für den Einsatz von ec@ros2 ist auf den Clients die Software Java Webstart (enthalten im Java Runtime Environment (JRE)) notwendig. Wir

Mehr

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook

Version 1.0.0. NotarNet Bürokommunikation. Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Version 1.0.0 NotarNet Bürokommunikation Bedienungsanleitung für den ZCS-Import-Assistenten für Outlook Seite 1 Vorgehensweise bei der Einrichtung... 2 2 Vorbereitung... 2 3 Ablauf des Imports... 3 4 Allgemeine

Mehr

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen)

2. Einrichtung der ODBC-Schnittstelle aus orgamax (für 32-bit-Anwendungen) 1. Einführung: Über den ODBC-Zugriff können Sie bestimmte Daten aus Ihren orgamax-mandanten in anderen Anwendungen (beispielsweise Microsoft Excel oder Microsoft Access) einlesen. Dies bietet sich beispielsweise

Mehr

Registrierung am Elterninformationssysytem: ClaXss Infoline

Registrierung am Elterninformationssysytem: ClaXss Infoline elektronisches ElternInformationsSystem (EIS) Klicken Sie auf das Logo oder geben Sie in Ihrem Browser folgende Adresse ein: https://kommunalersprien.schule-eltern.info/infoline/claxss Diese Anleitung

Mehr

Unsere Webapplikation erweitern

Unsere Webapplikation erweitern Unsere Webapplikation erweitern Um die Webapplikation zu benutzen: 1. Starten Sie den Server, indem Sie das Hauptprogramm in der Klasse ImdbServer starten. 2. Laden Sie im Browser die Seite http://localhost:8080/html/index.html.

Mehr

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0)

Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Leitfaden zur ersten Nutzung der R FOM Portable-Version für Windows (Version 1.0) Peter Koos 03. Dezember 2015 0 Inhaltsverzeichnis 1 Voraussetzung... 3 2 Hintergrundinformationen... 3 2.1 Installationsarten...

Mehr

PHPNuke Quick & Dirty

PHPNuke Quick & Dirty PHPNuke Quick & Dirty Dieses Tutorial richtet sich an all die, die zum erstenmal an PHPNuke System aufsetzen und wirklich keine Ahnung haben wie es geht. Hier wird sehr flott, ohne grosse Umschweife dargestellt

Mehr

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation von NetBeans inkl. Glassfish Anwendungs-Server Installation von NetBeans inkl. Glassfish Anwendungs-Server Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung der Entwicklungsumgebung NetBeans, angefangen beim Download der benötigten

Mehr

YouTube: Video-Untertitel übersetzen

YouTube: Video-Untertitel übersetzen Der Easytrans24.com-Ratgeber YouTube: Video-Untertitel übersetzen Wie Sie mit Hilfe von Easytrans24.com in wenigen Schritten Untertitel für Ihre YouTube- Videos in mehrere Sprachen übersetzen lassen können.

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java:

II. Grundlagen der Programmierung. 9. Datenstrukturen. Daten zusammenfassen. In Java (Forts.): In Java: Technische Informatik für Ingenieure (TIfI) WS 2005/2006, Vorlesung 9 II. Grundlagen der Programmierung Ekkart Kindler Funktionen und Prozeduren Datenstrukturen 9. Datenstrukturen Daten zusammenfassen

Mehr

4. BEZIEHUNGEN ZWISCHEN TABELLEN

4. BEZIEHUNGEN ZWISCHEN TABELLEN 4. BEZIEHUNGEN ZWISCHEN TABELLEN Zwischen Tabellen können in MS Access Beziehungen bestehen. Durch das Verwenden von Tabellen, die zueinander in Beziehung stehen, können Sie Folgendes erreichen: Die Größe

Mehr

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht:

Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Beiträge erstellen in Joomla Nach der Anmeldung im Backend Bereich landen Sie im Kontrollzentrum, welches so aussieht: Abbildung 1 - Kontrollzentrum Von hier aus kann man zu verschiedene Einstellungen

Mehr

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3

Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 Handbuch Fischertechnik-Einzelteiltabelle V3.7.3 von Markus Mack Stand: Samstag, 17. April 2004 Inhaltsverzeichnis 1. Systemvorraussetzungen...3 2. Installation und Start...3 3. Anpassen der Tabelle...3

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

IBM SPSS Data Access Pack Installationsanweisung für Windows

IBM SPSS Data Access Pack Installationsanweisung für Windows IBM SPSS Data Access Pack Installationsanweisung für Windows Inhaltsverzeichnis Kapitel 1. Übersicht.......... 1 Einführung............... 1 Bereitstellen einer Datenzugriffstechnologie.... 1 ODBC-Datenquellen...........

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

Datenbanksysteme SS 2007

Datenbanksysteme SS 2007 Datenbanksysteme SS 2007 Frank Köster (Oliver Vornberger) Institut für Informatik Universität Osnabrück Kapitel 9c: Datenbankapplikationen Architektur einer Web-Applikation mit Servlets, JSPs und JavaBeans

Mehr

ID VisitControl. Dokumentation Administration. 2015 Equitania Software GmbH cmc Gruppe Seite 1

ID VisitControl. Dokumentation Administration. 2015 Equitania Software GmbH cmc Gruppe Seite 1 ID VisitControl Dokumentation Administration 2015 Equitania Software GmbH cmc Gruppe Seite 1 Inhalt 1. Anmeldung... 3 2. Benutzer anlegen oder bearbeiten... 4 2.1. Benutzer aus LDAP Anbindung importieren/updaten...

Mehr

Einführung in die Java- Programmierung

Einführung in die Java- Programmierung Einführung in die Java- Programmierung Dr. Volker Riediger Tassilo Horn riediger horn@uni-koblenz.de WiSe 2012/13 1 Wichtig... Mittags keine Pommes... Praktikum A 230 C 207 (Madeleine + Esma) F 112 F 113

Mehr