JDBC mit Oracle und PostgreSQL

Größe: px
Ab Seite anzeigen:

Download "JDBC mit Oracle und PostgreSQL"

Transkript

1 JDBC mit Oracle und PostgreSQL Holger Jakobs Inhaltsverzeichnis 1 Warum Java in Verbindung mit Datenbanken? 1 2 Vorstellung von JDBC ODBC zum Vergleich JDBC was ist anders? Portabilität von JDBC Die JDBC-Treibertypen Programmierung mit JDBC Bestandteile eines JDBC-Programms Exceptions Datenbanktreiber laden Datenbankverbindung herstellen Statement herstellen Anfrage ausführen Ergebnistupel lesen Ergebnismenge und Statement freigeben Ein komplettes JDBC-Programm Automatische Datenbank-Verbindung Metadaten einer Ergebnismenge Ermitteln der Metadaten Verarbeitung einer Ergebnismenge zu einer HTML-Tabelle Erweiterungen der dynamischen Abfrage Metadaten einer Datenbankverbindung SQL-Escapes Transaktionen Beginnen und Beenden von Transaktionen Isolationslevel Fehler und Warnungen Fehler Warnungen Prepared Statements

2 2 VORSTELLUNG VON JDBC 1 Warum Java in Verbindung mit Datenbanken? Eigentlich erscheint es auf den ersten Blick nicht so sinnvoll zu sein, die objektorientierte Sprache Java mit den tabellenorientierten relationalen Datenbanken zu verbinden. Trotzdem gibt es mehrere Anbindungsmöglichkeiten, eben weil sich der objektorientierte Ansatz bei der Programmierung vorwiegend durchgesetzt hat, im Bereich der Datenbanken aber nach wie vor die relationalen Datenbanken die führende Rolle spielen. Es gibt zwar auch ernst zu nehmende Ansätze im Bereich objektorientierter Datenbanken, aber da meistens auch auf bereits bestehende und nicht nur neu zu erstellende Datenbestände zugegriffen werden muss, ist da der Übergang nicht so schnell zu schaffen. Die objektorienteren Datenbanken führen noch immer eher ein Nischendasein (Stand Mitte 2008). Die relationalen Datenbanken haben aber bereits begonnen, objektorientierte Dinge hinzuzufügen, so dass man von objektrelationalen Datenbanken spricht. Oracle enthält seit Version 8 objektorientierte Ansätze, PostgreSQL seit Version 7. Zu diesen Ansätzen gehört z. B. die Abkehr vom Grundsatz, dass ein Objekt durch seine Attribute identifiziert wird. Während im rein relationalen Ansatz niemals zwei Tupel von ihren Werten her identisch sein können das wäre ein Widerspruch zur Relation als Tupelmenge, ist das bei Objekt-Datenbanken durchaus möglich, denn die Identität eines Objekts ergibt sich aus dem Object-Identifier (bei Oracle wäre das die rowid, bei PostgreSQL die oid) und ist von den Attributwerten völlig losgelöst. Darüber hinaus sind komplexe Datenelemente in Tupeln erlaubt, z. B. Mengen (set of), Tupel (tupel of), Listen (list of) so in Oracle 8. Es kann auch Vererbungen geben, so dass eine Tabelle Attribute und ggf. auch Tupel einer anderen Tabelle (oder sogar von mehreren) erbt so in PostgreSQL 7. Eine objektorientierte Datenbank kann auch Methoden enthalten, d. h. neben den reinen Daten auch Ausführbares. Die Methoden beschreiben dann, wie die Datenobjekte manipuliert werden dürfen. Es scheint sich also eher ein evolutionärer Weg von den relationalen Datenbanksystemen über die objektrelationalen abzuzeichnen als ein revolutionärer Bruch und Übergang zu rein objektorientierten Systemen. Schließlich haben nicht einmal die objektorientierten Programmiersprachen die prozeduralen vollständig verdrängt und das ist nicht ohne Grund so. 2 Vorstellung von JDBC Wenn ODBC für Open Data Base Connectivity steht, bedeutet dann JDBC nicht Java Data Base Connectivity? Laut Sun, dem Erfinder von JDBC ist das nicht so eine andere Deutung der Buchstabenkombination liefert Sun allerdings auch nicht. 2

3 2 VORSTELLUNG VON JDBC 2.1 ODBC zum Vergleich 2.1 ODBC zum Vergleich ODBC wurde von Microsoft entwickelt, um insbesondere den Office-Produkten einen direkten Zugriff auf Datenbanken beliebigen Typs zu geben. Für jede Datenbank auf Serverseite und jedes Betriebssystem auf Clientseite benötigt man hierfür einen Treiber. Die Datenbank muss also ODBC-fähig sein, und es muss auf Clientseite für genau diese Datenbank einen passenden ODBC-Treiber geben. Meistens handelt es sich hierbei um compilierten C-Code, d. h. er ist in der übersetzten Form sowohl von der Hardware als auch dem Betriebssystem abhängig. Da es aber nur wenige Windows-Versionen und diese jeweils nur auf einer einzigen Hardware-Plattform gibt, bleibt die Anzahl der Treiber in Grenzen. Bei 5 Plattformen und 10 Datenbanken wären das ansonsten auch schon 50 bereitzustellende Treiber. ODBC definiert übrigens keine völlig abstrakte Schnittstelle, sondern es werden einfach SQL-Anfragen als Zeichenketten an die Datenbank geschickt, die diese dann interpretiert so wie das bei den gängigen Datenbank-Frontends auch der Fall ist. Das bedeutet aber, dass eine SQL-Anfrage nach SQL92, z. B. SELECT * FROM A NATURAL JOIN B von vielen Datenbanken nicht verstanden wird. Der jeweilige SQL-Dialekt muss also nach wie vor berücksichtigt werden, was beim Wechsel des Datenbanksystems zu Problemen führen kann, wenn man viele Anfragen umschreiben muss. Für die MS-eigenen Datenspeicher (von einfachen Textdateien über Excel-Tabellen, den Jet-Engine-Dateien mit der Endung.mdb) sowie für einige klassische Datenbank-Dateien wie dbase und Foxpro (.dbf) werden die ODBC-Treiber bei Windows bereits mitgeliefert, für andere Datenbanken gibt es sie von den jeweiligen Herstellern. Alle werden in der Systemsteuerung unter ODBC-Datenquellen verwaltet. 2.2 JDBC was ist anders? Java verfolgt konsequent einen plattformübergreifenden Ansatz und möchte auf möglichst vielen Geräten lauffähig sein. Die Java VM (virtuelle Maschine) mit dem Bytecode-Interpreter wird daher fleißig auf immer neue Hardware portiert. Daher kann der compilierte Bytecode quasi überall ausgeführt werden. Allerdings muss auch der JDBC-Treiber für die jeweilige Datenbank passen, weil die Datenbanksysteme alle ein eigenes Protokoll für die Kommunikation zwischen Client und Server verwenden. Als JDBC vorgestellt wurde, gab es nur wenige Treiber, die von Sun entwickelt worden waren. Um es trotzdem möglichst schnell einsetzbar zu machen, fügte Sun die JDBC- ODBC-Bridge hinzu, so dass auf diese Weise jede ODBC-fähige Datenbank auch gleichzeitig JDBC-fähig wurde. Allerdings muss betont werden, dass dies nur dem Anstoßen der Entwicklung dienen sollte und heute keineswegs mehr der richtige Ansatz für den Einsatz von JDBC ist. Es gibt heute ausreichend native Treiber, die eine wesentlich bessere Performance und auch einen größeren Funktionsumfang bieten. Außerdem bindet man das Java-Programm an eine Schnittstelle, die plattformabhängig ist, konterkariert also den Java-Ansatz! In Java-Applets ist die Verwendung von ODBC übrigens völlig unmöglich, weil Applets 3

4 2.3 Portabilität von JDBC 2 VORSTELLUNG VON JDBC ausschließlich aus Java-Bytecode bestehen müssen und nur Java-Klassen nachladen können, aber keinen Maschinencode. Ein JDBC-Treiber besteht aus einer Java-Klasse meist einer.jar-datei. Diese ist, da in Java geschrieben, unmittelbar auf allen Plattformen mit Java-Interpreter lauffähig. Man benötigt also für jedes Datenbanksystem nur einen einzigen JDBC-Treiber. Dieser JDBC- Treiber verhält sich gegenüber dem Datenbank-Server genau wie ein in C geschriebener Client, d. h. es wird das datenbankspezifische Protokoll verwendet. Gegenüber dem Java-Programm (Application oder Applet) verhalten sich alle JDBC- Treiber gleich, d. h. für den Java-Programmierer ist es völlig gleichgültig, welcher JDBC- Treiber später einmal mit dem Programm verwendet werden soll. Beim Umstieg von einem Datenbanksystem auf ein anderes ist also keine Änderung am Programmcode notwendig außer den Namen des JDBC-Treibers und der Datenbank natürlich. Ein Java-Programm kann sogar mehrere JDBC-Treiber laden und gleichzeitig auf mehrere Datenbanken zugreifen. 2.3 Portabilität von JDBC Man fragt sich, warum das überhaupt ein Thema ist. Schließlich wurde oben erläutert, dass die Java-Programme plattformunabhängig sind, weshalb die Portierung auf eine andere Plattform eigentlich nur aus einem Kopiervorgang des Java-Programms bestehen sollte. Das ist soweit auch richtig. Allerdings geht es nicht nur um die Clientseite, sondern auch um die Datenbank. Leider kommuniziert auch JDBC mit der Datenbank über die Sprache SQL mit all ihren Dialekten. Das bedeutet, dass die SQL-Queries auf die jeweilige Zieldatenbank abgestimmt sein müssen. Das bereits in Abschnitt 2.1 auf der vorherigen Seite erläuterte Problem der Unterschiedlichkeit bei den Datenbanksystemen besteht weiterhin. JDBC ist eine Low-Level Schnittstelle zum SQL-Interface diverser Datenbanken, aber ebnet diese Unterschiede keineswegs ein (genau das beabsichtigt beispielsweise das ADO-Konzept von PHP). Immerhin verlangt Sun von JDBC-Treibern die Einhaltung des Entry Levels von SQL- 92. Nur dann darf sich der Treiber JDBC compliant nennen. Für einige typische Probleme, beispielsweise das Datumsformat, gibt es die Lösung von SQL-Escapes (siehe Abschnitt 3.6 auf Seite 12). Man darf in SQL-Kommandos ein Datum als {d } schreiben, auch wenn das Datenbanksystem das Datum evtl. in einem nicht ISO-8601-gemäßen Format verlangt. Über diverse Metadaten-Abfragen kann zur Laufzeit abgefragt werden, welche Eigenschaften das gerade verwendete Datenbanksystem hat. Beispiele sind in Abschnitt 3.4 auf Seite 10 zu finden. Falls man zum Entwicklungszeitpunkt nicht absolut sicher ist, welche Datenbank-Backends später einmal verwendet werden, sollte man sich bemühen, nur sehr kompatible Abfragen zu verwenden. Sogar so einfache Dinge wie NATURAL JOIN werden schließlich nicht von allen Systemen verstanden. 4

5 2 VORSTELLUNG VON JDBC 2.4 Die JDBC-Treibertypen Abbildung 1: Die 4 Treibertypen von JDBC Java Programm mit JDBC Treibermanager Java C JDBC ODBC Bridge ODBC Treiber (C) Treiber für DBMS B Treiber für DBMS B Middleware JDBC Treiber Treiber für DBMS D Client Middleware A B C D Treibertyp: Typ 1 Typ 2 Typ 3 Typ Die JDBC-Treibertypen Die JDBC-Treiber lassen sich in vier Typen untergliedern, siehe auch Abbildung 1: 1. Typ 1 Das ist die oben erwähnte JDBC-ODBC-Bridge, eine reine Übergangslösung und heute nicht mehr zeitgemäß. Bitte nicht verwenden! 2. Typ 2 Das ist ähnlich wie Typ 1, aber es wird nicht auf einen ODBC-Treiber, sondern auf einen für die Zieldatenbank speziellen, z. B. in C geschriebenen Treiber zurückgegriffen. Auch dies ist eine plattformabhängige Übergangslösung und heute nicht mehr zeitgemäß. Bitte nicht verwenden! 3. Typ 3 Hier wird ein einheitlicher Java-Treiber für alle Datenbanken verwendet. Er greift nicht direkt auf die Zieldatenbank zu, sondern auf eine Middleware, die nicht unbedingt in Java geschrieben sein muss. Diese befindet sich nicht im plattformunabhängigen Client, sondern entweder auf dem Datenbankserver oder einem dritten Rechner. Die Middleware setzt die Anfragen vom JDBC-Treiber für die Zieldatenbank passend um. Dies ist clientseitig eine 100 %-Java-Lösung und daher plattformunabhängig. Ein 5

6 3 PROGRAMMIERUNG MIT JDBC Beispiel für die Middleware ist OpenLink 1. Man spricht hier von einem Dreischicht- Modell (3-Tier-Model). 4. Typ 4 Diese Treiber sind wie die von Typ 3 zu 100 % in Java geschrieben und daher plattformunabhängig. Sie benötigen allerdings keine Middleware, sondern greifen direkt auf die Zieldatenbank zu. Das bedeutet, dass die gesamte Funktionalität der Middleware hier im Treiber auf Clientseite integriert ist. Das macht den Treiber zwar etwas größer, aber man benötigt keine dritte Schicht, weshalb man hier von einem Zweischicht-Modell spricht (2-Tier-Model). Die Treiber stammen meist direkt von den Datenbank-Herstellern. 3 Programmierung mit JDBC Hinweis: Komplette Beispielquelltexte stehen im Datenbank-Portal unter Quelltexte 2 zur Verfügung. 3.1 Bestandteile eines JDBC-Programms Ein JDBC-Programm ist natürlich in erster Linie ein gewöhnliches Java-Programm sei es ein Applet oder eine Application. Hier sollen nur die Besonderheiten erläutert werden, die JDBC betreffen. Als Beispiele dienen hier kleine, kommandozeilenorientierte Applications, so dass der Code übersichtlich bleibt und den Blick auf das für JDBC Wesentliche nicht versperrt wird Exceptions Die Klasse, die JDBC verwendet, kann folgende Exceptions werfen: ClassNotFoundException, IOException, SQLException. Diese sind daher bei der Deklaration zusätzlich zu den übrigen evtl. Notwendigen anzugeben Datenbanktreiber laden Der Datenbanktreiber muss geladen werden. Der Name des Treibers hängt von der Datenbank (Typ 4) bzw. von der Middleware (Typ 3) ab. Bei PostgreSQL heißt er org.postgresql.driver und muss daher bei Oracle mit der Anweisung Class.forName("oracle. jdbc.driver.oracledriver") und bei PostgreSQL mit Class.forName("org.postgresql.Driver") geladen werden. Damit das klappt, muss sichergestellt sein, dass die Java-Archive mit dem Treiber (nicht das Verzeichnis, in dem es liegt!), bei Oracle classes12.jar und nls_charset12.jar, bei PostgreSQL postgresql.jar, im CLASSPATH enthalten sind. 1) 2) 6

7 3 PROGRAMMIERUNG MIT JDBC 3.1 Bestandteile eines JDBC-Programms Eigentlich liefert die Methode nur die Klasse zu einem Namen, aber bei bislang nicht geladenen Klassen versucht der Classloader, diese Klasse im CLASSPATH zu finden und sie zu laden. Dieser Nebeneffekt wird hier ausgenutzt, während das eigentliche Ergebnis der (statischen) Methode gar nicht verwendet wird. Der dynamische Ladevorgang wird erst zur Laufzeit ausgeführt, d. h. man kann den zu ladenden Namen auch vom Anwender erfragen oder aus einer Datei oder anderswo her laden, so dass man zum Zeitpunkt der Programmerstellung noch gar nicht wissen muss, wie der Name lautet. Auf diese Weise können auch nachträglich bislang unbekannte Datenbanken verwendet werden Datenbankverbindung herstellen Wie bei den interaktiven Tools (psql, sqlplus, TOra, pgadminiii) und den Programmen mit Embedded SQL in C auch muss (mindestens) eine Verbindung zur Datenbank hergestellt werden. Die Angabe der Datenbank geschieht bei JDBC mit einem URL (Uniform Resource Locator), der außer Benutzername und Passwort alle notwendigen Angaben enthält. Letztere werden in weiteren Parametern übergeben. Der URL besteht aus jdbc: subprotocol, d. h. Name des Datenbanktyps, z. B. oracle:thin oder postgresql, gefolgt von einem weiteren Doppelpunkt weiteres ist der sogenannte subname, bei Oracle bestehend aus dem Namen des Datenbankservers, der Portnummer und dem Namen der Datenbank, bei uns bei PostgreSQL sind es zwei Slashes, der Name des Datenbankservers und der Name der Datenbank bei uns also //dbserver2/datenbankname. Achtung: Auch die Trennzeichen unterscheiden sich. Für die Verbindung wird ein Objekt vom Typ Connection benötigt. Bei Oracle sieht die Anweisung zur Herstellung der Datenbankverbindung also so aus: Connection conn = DriverManager.getConnection ("jdbc:oracle:thin:@dbserver2:1521:ora10", "username", "password"); Wenn das Passwort hier angegeben wird, dann ist es in der.class-datei vorhanden, zwar vielleicht nicht direkt im Klartext, aber auch nicht ausreichend geschützt. Bei PostgreSQL sieht die Anweisung zur Herstellung der Datenbankverbindung also so aus: Connection conn = DriverManager.getConnection ("jdbc:postgresql://dbserver2/dbname", "username", "password"); Das Passwort kann leer bleiben, falls die Datenbank den Benutzer aufgrund seines bereits erfolgen Logins beim Betriebssystem erkennt (sogenanntes Single-Sign-On). 7

8 3.1 Bestandteile eines JDBC-Programms 3 PROGRAMMIERUNG MIT JDBC Statement herstellen Die Datenbankverbindung kann während der gesamten Laufzeit aufrecht erhalten bleiben. Lediglich wenn ein Programm nur gelegentlich auf die Datenbank zugreift und nur eine begrenzte Anzahl von Verbindungen zur Verfügung steht, könnte man sie zwischendurch beenden und wieder aufbauen. Für jede einzelne Abfrage benötigt man aber noch ein Objekt vom Typ Statement. Das Erzeugen eines Statements braucht keine Parameter. Anschließend ist alles bereit, um eine Anfrage auszuführen. Statement stmt = conn.createstatement(); Anfrage ausführen Eine Anfrage liegt in Form eines String-Objekts vor und kann komplett vom Benutzer erfragt oder auch aus festen und variablen Anteilen zusammengebaut werden. Das Ergebnis der Methode executequery ist ein Objekt vom Typ ResultSet. Diese ist bei Selects anzuwenden bei allen anderen Anfragen (Insert, Update, Delete oder auch Datendefinitionskommandos) ist executeupdate zu benutzen, das statt einer Ergebnismenge die Anzahl der vom Kommando betroffenen Tupel liefert. String query = "select name, ort from kunden where knr=7"; ResultSet result = stmt.executequery (query); Mit dieser Ergebnismenge kann weiter gearbeitet werden, z. B. Größe abgefragen, Tupel des Ergebnisses lesen usw Ergebnistupel lesen Die häufigste Anwendung ist wohl das Lesen der Ergebnistupel, weshalb genau das hier gezeigt wird. Hierzu bietet das Ergebnismengenobjekt entsprechende Methoden an. Die Methode next() setzt den Lesezeiger auf das nächste Tupel und liefert true, wenn es dieses nächste Tupel gibt d. h. am Ende der Daten liefert sie false. Dies eignet sich zur Konstruktion einer while-schleife. Die Methode getstring(int) verlangt einen int-parameter, der die Nummer des Attributs angibt (gezählt wird ab 1). Es wird ein String-Objekt geliefert mit dem Inhalt des entsprechenden Attributs aus dem aktuellen Tupel. Entsprechende Methoden gibt es für die anderen Datentypen (getint(), getfloat(),...). Mit diesen Informationen können wir die Ausgabe der gefundenen Daten programmieren: while (result.next()) { String name = result.getstring(1); String ort = result.getstring(2); System.out.println (name + ", " + ort); 8

9 3 PROGRAMMIERUNG MIT JDBC 3.2 Ein komplettes JDBC-Programm } // while System.out.println(">> Ende der Daten <<"); Alternativ zum numerischen Parameter kann man auch den Namen des Attributs übergeben. Für diese Form ist die Methode overloadet. Da die Verwendung des numerischen Index performanter ist, kann man den numerischen Index eines Attributs herausfinden über die Methode findcolumn(attributname). Bei Attributen, die auch den Nullwert beinhalten können, kann man mittels der parameterlosen Methode wasnull() herausfinden, ob das letzte get...() einen Wert Null geliefert hat. Die get...()-methoden liefern zwar sowieso auch in Java ein null, aber wenn man das Ergebnis in einfachen Variablen speichert, kann man es von einer numerischen 0 nicht unterscheiden Ergebnismenge und Statement freigeben Die Ergebnismenge und das Statement bleiben auch nach dem Auslesen erhalten. Zur Ressourcenschonung und auch zur evtl. Aufhebung von Sperren auf die Datenbank ist es notwendig, sie freizugeben. Ansonsten geschieht das erst am Ende des Programms. result.close(); stmt.close(); Verbindung beenden Am Ende des Programms ggf. früher kann man die Verbindung zur Datenbank schließen. conn.close(); 3.2 Ein komplettes JDBC-Programm In diesem kleinen Beispielprogramm ExampleJDBC_pg.java bzw. in der Oracle-Variante ExampleJDBC_ora.java sind die sonst notwendigen bzw. sinnvollen Fehlerprüfungen nicht enthalten, so dass Exceptions zum Programmabbruch führen. import java.io.*; import java.sql.*; public class ExampleJDBC_pg { public ExampleJDBC_pg() throws ClassNotFoundException, FileNotFoundException, IOException, SQLException { Class.forName("org.postgresql.Driver"); 9

10 3.3 Automatische Datenbank-Verbindung 3 PROGRAMMIERUNG MIT JDBC Connection conn = DriverManager.getConnection ("jdbc:postgresql://dbserver2/kunden", "hugo", "geheim"); Statement stmt = conn.createstatement(); System.out.print ("Ort: "); System.out.flush(); BufferedReader r = new BufferedReader (new InputStreamReader (System.in)); String ort = r.readline(); String query = "select name, ort from kunden where ort = '" + ort + "'"; System.out.println (query); ResultSet res = stmt.executequery (query); while (res.next()) { String name = res.getstring(1); ort = res.getstring(2); System.out.println (name + ", " + ort); } // while System.out.println(">> Ende der Daten <<"); } res.close(); stmt.close(); conn.close(); public static void main (String args[]) { try { new ExampleJDBC_pg(); } catch (Exception exc) { System.err.println ("Exception caught.\n" + exc); exc.printstacktrace(); } } // main } // class 3.3 Automatische Datenbank-Verbindung Es gibt bei uns eine vordefinierte Klasse namens DabVerbindung die Quelltextdatei finden Sie ebenfalls im Portal mit den notwendigen Mechanismen, um eine Verbindung wahlweise mit Oracle oder mit PostgreSQL herzustellen. Hierzu werden die Zugangsdaten 10

11 3 PROGRAMMIERUNG MIT JDBC 3.4 Metadaten einer Ergebnismenge aus den Dateien $HOME/dabpw_oracle.sql bzw. $HOME/dabpw_postgresql.sql gelesen. Das bedeutet, dass Sie ein manuell geändertes Datenbank-Kennwort dort eintragen müssen, damit es funktioniert. Vorteil ist, dass Sie in Ihre Quelltexte kein Kennwort eintragen müssen, denn auch aus dem compilierten Programm könnte man es ganz leicht extrahieren. Außerdem können Sie compilierte Programme weitergeben, so dass andere Anwender sie verwenden können, dabei aber auf ihrer jeweils eigene Datenbank zugreifen. Beachten Sie hierzu auch die Dokumentation in Form von JavaDoc. Das obige Programm funktioniert unabhängig von dieser Klasse. Bauen Sie aber in alle Ihre eigenen Programm die Klasse DabVerbindung ein und vollziehen Sie die dort verwendeten Mechanismen nach. 3.4 Metadaten einer Ergebnismenge Ermitteln der Metadaten Natürlich ist es schöner, wenn man flexiblere Abfragen zulassen kann als im ersten Beispiel gezeigt, wo Tabellen- und Attributnamen fest im Programm verankert sind. Bei Abfragen mit SELECT * weiß man zum Zeitpunkt der Programmierung noch nicht, wie viele Attribute die Ergebnistabelle haben wird und wie diese heißen. Die Anzahl und auch die Namen der Attribute können erst zur Laufzeit ermittelt werden. HTML-Tabellen kann man daraus besonders leicht erstellen, weshalb die Verwendung in CGI-Programmen und Servlets besonders beliebt ist. Wenn die Abfrage der Ergebnisse nun allgemein formuliert werden soll, d. h. unabhängig vom Datentyp der Ergebnisspalte, dann fragt man sich, ob man mit der im ersten Beispiel verwendeten Methode getstring() weit kommt. Hier kommt dem Programmierer die Eigenschaft von Objekten entgegen, eine tostring()-methode zu haben. Man kann also getrost getobject() verwenden und sich darauf verlassen, dass bei der Stringverkettung oder beim print() das Objekt sinnvoll in eine Zeichenkette umgewandelt wird. Tabelle 1: Ergebnis-Metadaten-Methoden Methode getmetadata() getcolumncount() getcolumnname(i) Beschreibung liefert ein Objekt vom Typ ResultSetMetaData, das bei allen folgenden Methodenaufrufen verwendet werden muss liefert die Anzahl Attribute (Spalten) der Abfrage liefert den Namen des Attributs Nr. i, wobei die Attribute (Spalten) ab 1 gezählt werden. 11

12 3.4 Metadaten einer Ergebnismenge 3 PROGRAMMIERUNG MIT JDBC Verarbeitung einer Ergebnismenge zu einer HTML-Tabelle Um ein in seiner Struktur zum Programmierzeitpunkt unbekanntes Abfrageergebnis in einer HTML-Tabelle aufzubereiten, geht man wie folgt vor: Metadaten holen (getmetadata()) Anzahl der Spalten holen (getcolumncount()) Schleife über die Spalten, um die Spaltennamen zu holen (getcolumnname(i)) Erzeugung der Kopfzeile für die HTML-Tabelle Abrufen der Ergebnistupel und Schreiben der Datenzeilen für die HTML-Tabelle ResultSet res = stmt.executequery (query); ResultSetMetaData rsmd = res.getmetadata(); int anzspalten = rsmd.getcolumncount(); System.out.print ("<table border><tr>"); for (int i=1; i <= anzspalten; i++) { System.out.print ("<th>" + rsmd.getcolumnname (i) + "</th>"); } // for System.out.println ("</tr>"); while (res.next()) { System.out.print ("<tr>"); for (int i=1; i <= anzspalten; i++) { System.out.print ("<td>" + res.getobject(i) + "</td>"); } // for System.out.println ("</tr>"); } // while System.out.println ("</table>"); res.close(); stmt.close(); Dies kann man gut in ein CGI-Programm oder in ein Servlet einbauen. Es ist allerdings auch noch ausbaufähig, daher im Folgenden ein paar Anregungen dazu Erweiterungen der dynamischen Abfrage 1. Es könnte z. B. es sinnvoll sein, numerische Spalten rechtsbündig auszurichten. Dazu müsste man herausfinden, von welcher Klasse das gerade geholte Objekt ist (Methode getclass()) und darauf basierend eine Fallunterscheidung durchführen. Alternativ 12

13 3 PROGRAMMIERUNG MIT JDBC 3.5 Metadaten einer Datenbankverbindung kann man auch mit einer der Methoden getcolumntype() oder getcolumntype- Name() den SQL-Datentyp herausbekommen. Allerdings ist der Typname datenbankabhängig. Verwenden Sie die Java-API-Doku, um mehr herauszubekommen. 2. Obiger Programmausschnitt ist nicht in der Lage, mit NULL-Werten umzugehen, sondern bricht mit einer NullPointerException ab. Verhindern Sie dies, indem Sie das gelieferte Objekt in Java mit null vergleichen oder indem Sie die Methode wasnull() des ResultSets verwenden. Letztere können Sie ebenfalls in der Java-API-Doku finden. 3. Um Datumswerte hervorzuheben, stellen Sie diese in der HTML-Tabelle kursiv dar. Wie finden Sie heraus, ob eine Spalte Datumswerte enthält? 3.5 Metadaten einer Datenbankverbindung Auch über eine Datenbankverbindung und das verwendete Datenbanksystem gibt es Metadaten. Hierzu holt man sich zunächst ein Objekt der Klasse DatabaseMetaData zu einer bestehenden Datenbankverbindung mit conn.getmetadata() und verwendet dies bei den in Tabelle 2 auf Seite 16 aufgeführten Methoden. 3.6 SQL-Escapes SQL-Escapes dienen zur Egalisierung von Unterschieden zwischen Datenbanksystemen, um Programme portabler zu machen, auch wenn die SQL-Dialekte etwas voneinander abweichen. Sie dienen u. a. zur Darstellung von Werten, die nicht bei allen Datenbanksystemen gleich dargestellt werden, nämlich Zeit- und Datumsstrings, siehe Tabelle 3 auf Seite 16. Außerdem kann man mit ihnen Funktionen und Prozeduren aufrufen (wird hier nicht erläutert) und Outer Joins datenbankneutral formulieren. Mit der Methode nativesql(query) kann man eine Datenbankanfrage, die mit SQL- Escapes formuliert ist, in den datenbankspezifischen SQL-Dialekt übersetzen lassen, beispielsweise in die Oracle-spezifische Darstellung von Outer Joins. Die einzugebende Schreibweise orientiert sich am ANSI-Standard. 3.7 Transaktionen Ohne weitere Festlegung wird bei JDBC immer Autocommit verwendet, so dass jede einzelne Anweisung in ihrer eigenen Transaktion ausgeführt wird sofern die verwendete Datenbank überhaupt Transaktionen unterstützt (was man auch herausfinden kann, siehe Abschnitt 3.5) Beginnen und Beenden von Transaktionen Die für Transaktions-Management notwendigen Methoden werden mit dem Verbindungs- Objekt (hier: conn) aufgerufen. Um Transaktionen zu benutzen, muss man zunächst Auto- 13

14 3.8 Fehler und Warnungen 3 PROGRAMMIERUNG MIT JDBC commit ausschalten: conn.setautocommit(false). Den aktuellen Status kann man mit conn.getautocommit() abfragen. Bei jeder Anweisung wird eine neue Transaktion begonnen, wenn nicht bereits eine solche begonnen wurde. Sie kann dann mit conn.commit() abgeschlossen oder mit conn.rollback() zurückgefahren werden Isolationslevel Den aktuell vewendeten Isolationslevel kann man abfragen mit conn.gettransaction- Isolation();, dessen Ergebnis man mit den Konstanten TRANSACTION_NONE, TRANS- ACTION_READ_UNCOMMITTED, TRANSACTION_READ_COMMITTED, TRANSACTION_REPEATABLE_ READ und TRANSACTION_SERIALIZABLE vergleichen muss, um den Level festzustellen. Der Wert TRANSACTION_NONE wird bei Datenbanken geliefert, die keine Transaktionen unterstützen (und daher eigentlich gar keine Datenbanken sind). Entsprechend kann man den Isolationslevel auch setzten mit conn.gettransaction- Isolation(level);. Beim Absetzen von Datendefinitionskommandos innerhalb von Transaktionen reagieren die einzelnen Datenbanksysteme völlig unterschiedlich. Daher kann man das genaue Verhalten mit diversen Methoden abfragen, die alle nicht mit dem Verbindungsobjekt, sondern mit dem Metadaten-Objekt (siehe Abschnitt 3.5 auf der vorherigen Seite) aufgerufen werden und einen boolean-wert liefern: datadefinitionignoredintransactions(), datadefinitioncausestransactioncommit(), supportsdatadefinitionanddatamanipulationtransactions(), supportsdatamanipulationtransactionsonly(). 3.8 Fehler und Warnungen Fehler Bei Fehlern werden Java-Exceptions ausgelöst, so dass keine ständige manuelle Prüfung notwendig ist. Der Mechanismus ist vergleichbar mit den WHENEVER-Konstruktionen bei Embedded SQL in C. Die ausgelöste Exception enthält nähere Information über den Fehler. Abfragen kann man eine Fehlermeldung mittels tostring(). Den SQLSTATE gemäß ANSI kann man mit der Methode getsqlstate() des Exception-Objekts ermitteln. Der SQLSTATE ist eine fünf Zeichen lange Zeichenkette. Die ersten beiden Zeichen geben die Fehlerklasse an, die letzten drei Zeichen den genauen Fehler. In nebenstehender Tabelle sind die wichtigsten Fehlerklassen von PostgreSQL aufgeführt (nähere Information ist im Kapitel Error Handling and Diagnostics des Programmer s Guide to the Oracle Precompilers bzw. im Appendix A der PostgreSQL-Dokumention zu finden). Damit sind die Fehlerinformationen aus SQLSTATE wesentlich umfangreicher und ausführlicher als die aus dem SQLCODE. Den hier so genannten Error Code bekommt man mit 14

15 3 PROGRAMMIERUNG MIT JDBC 3.9 Prepared Statements der Methode geterrorcode(). Der Error Code ist im Gegensatz zum SQLSTATE vom jeweiligen Datenbanksystem abhängig. SQLSTATE ist dagegen in weiten Teilen standardisiert. Zu einem Zeitpunkt können je nach Datenbanksystem nicht nur eine, sondern auch mehrere Fehlermeldungen erzeugt worden sein. Zunächst wird immer der schwerwiegendste Fehler gemeldet, aber zur Bestimmung der Ursache kann es hilfreich sein, sich auch die weiteren Meldungen anzuschauen, wozu man die Methode getnextexception() verwendet Warnungen Über Warnungen informiert Java nicht automatisch, sondern sie müssen abgefragt werden. Mit Hilfe der Methode getwarnings(), die auf das Result Set angewendet werden, ermittelt man die erste Warnung. Gibt es keine, so wird null geliefert. Die jeweils nächste Warnung bekommt man, wenn man die Methode getnextwarning() auf das Warnungsobjekt Code SQLSTATE-Klasse 00 kein Fehler 01 Warnung 02 keine Daten 03 Kommando unvollständig 08 Verbindungsproblem 09 Fehler bei Triggeraktion 0B ungültiger Transaktionsbeginn 22 Datenfehler 23 Integritätsverletzung 24 ungültiger Cursorzustand 25 ungültiger Transaktionszustand 26 ungültiges SQL-Kommando 40 Transaktions-Rollback 53 unzureichende Ressourcen anwendet. Die Klasse SQLWarning ist übrigens eine Unterklasse von SQLException, so dass man die im vorigen Abschnitt erläuterten Methoden zur Abfrage von Error Code und SQLSTATE verwenden kann, tostring() gibt es natürlich auch. 3.9 Prepared Statements Prepared Statements (vorbereitete Kommandos) sollen Vorteile bei der Ausführungsgeschwindigkeit bieten, weil sie beim Vorbereiten einmal besonders gründlich optimiert werden und bei den nachfolgenden Ausführungen auf die bereits erfolgte Optimierung zurückgegriffen werden kann. Bei voll dynamischen Kommandos müssen Analyse und Optimierung bei jeder einzelnen Ausführung erneut durchgeführt werden. Man benötigt ein Statement-Objekt, d. h. ein Objekt der Klasse PreparedStatement. Diesem weist man den Rückgabewert der Methode preparestatement (Abfrage) zu, die auf das Verbindungsobjekt angewendet wird. Die genannte Abfrage kann Platzhalter in Form von Fragezeichen enthalten. Diese Platzhalter sind von 1 an durchnumeriert und müssen vor der Ausführung mit einer der Methoden setint (nr, intwert, setdouble (nr, doublewert, setstring (nr, StringWert usw. gefüllt werden. nr gibt dabei die laufende Nummer des Platzhalters an. Mittels setnull (nr kann für einen Platzhalter auch ein Nullwert eingetragen werden. Die vorbereitete Abfrage kann anschließend mit der Methode executequery() ausführen. Hier ein kleines Codebeispiel, das auf die bereits bestehende Verbindung conn zugreift. PreparedStatement pst; 15

16 3.9 Prepared Statements 3 PROGRAMMIERUNG MIT JDBC pst = conn.preparestatement ("SELECT * FROM kunden where ort =?"); pst.setstring (1, "Bonn"); ResultSet result = pst.executequery(); Die Ergebnismenge result kann genauso wie in Abschnitt auf Seite 7 beschrieben durchgeführt werden. Die Ergebnismenge muss natürlich auch freigegeben werden mittels result.close(), ebenso das vorbereitete Kommando genauso wie ein gewöhnliches Kommando mittels pst.close(). Es ist nicht garantiert, dass eine Datenbank von den möglichen Vorteilen der vorbereiteten Kommandos Gebrauch macht, d. h. es kann sein, dass es zwar die beschriebenen Methoden gibt, aber vielleicht doch keine Speicherung des Optimierungsergebnisses erfolgt. $Id: jdbc.tex,v efcb5b /03/23 14:15:07 bibjah $ 16

17 3 PROGRAMMIERUNG MIT JDBC 3.9 Prepared Statements Tabelle 2: kleine Auswahl aus den Datenbank-Metadaten-Methoden getdatabaseproductname(); liefert einen String mit dem Namen des Datenbanksystems gettables(catalog, schemamuster, tabellenmuster, tabellentyp); liefert eine Ergebnismenge (genau wie executequery()) mit 5 Attributen: Katalogname, Schemaname, Tabellenname, Tabellentyp, Bemerkungen. Als Parameter werden übergeben: Katalogname (sofern vom Datenbanksystem unterstützt, sonst null für alle); Muster (mit % und _ als Platzhalter wie bei SQL allgemein üblich) für den Schemanamen, ggf. nur %; Muster für den Tabellennamen, ggf. nur %; Tabellentyp (mögliche Werte abfragbar mit gettabletypes() oder null für alle. supportsansientrylevelsql(); supportsansiintermediatelevelsql(); supportsansifulllevelsql(); liefert einen boolean-wert, der angibt, ob der jeweilige ANSI-Level unterstützt wird oder nicht gettypeinfo(); liefert eine Ergebnismenge (genau wie executequery()) mit 18 Attributen, von denen hier nur die ersten 2 erläutert werden: SQL-Datentyp (diese stehen bei CREATE TABLE zur Verfügung), zugehöriger Java-Datentyp. Dieser wird in Form einer numerischen Konstanten angezeigt, wobei es folgende Entsprechungen gibt (Auswahl): bigint 5 binary 2 bit 7 blob 2004 boolean 16 char 1 date 91 decimal 3 double 8 float 6 integer 4 numeric 2 other 1111 real 7 smallint 5 struct 2002 time 92 timestamp 93 varbinary 3 varchar 12 Tabelle 3: SQL-Escapes Escape-Notation Darstellung von: {d yyyy-mm-dd } Datum {t hh:mm:ss } Zeit {ts yyyy-mm-dd hh:mm:ss.ffffff } Zeitstempel (timestamp) {oj tabelle1 NATURAL LEFT JOIN tabelle2} Natural Left Outer Join 17

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

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

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

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

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

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

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

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

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

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

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

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

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole Lavid-F.I.S. Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der Lavid Software GmbH Dauner Straße 12, D-41236 Mönchengladbach http://www.lavid-software.net Support:

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

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

Betriebshandbuch. MyInTouch Import Tool

Betriebshandbuch. MyInTouch Import Tool Betriebshandbuch MyInTouch Import Tool Version 2.0.5, 17.08.2004 2 MyInTouch Installationshandbuch Inhaltsverzeichnis Inhaltsverzeichnis... 2 Bevor Sie beginnen... 3 Einleitung...3 Benötigte Daten...3

Mehr

WLAN und VPN im b.i.b. mit Windows (Vista Home Premium SP1) oder Windows 7

WLAN und VPN im b.i.b. mit Windows (Vista Home Premium SP1) oder Windows 7 WLAN Bei Windows Vista Home Premium mit Service Pack 1 wrd unten rechts im Tray angezeigt, wenn Drahtlosnetzwerke verfügbar sind, ebenso bei Windows 7. Solange keine Verbindung mit diesen Drahtlosnetzwerken

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

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

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn

Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken SS 2010 Kapitel 8: Datenbank-Einbettung in Programmiersprachen Prof. Dr. Stefan Böttcher Universität Paderborn Grundlagen von Datenbanken - SS 2010 - Prof. Dr. Stefan Böttcher

Mehr

Nutzung von GiS BasePac 8 im Netzwerk

Nutzung von GiS BasePac 8 im Netzwerk Allgemeines Grundsätzlich kann das GiS BasePac Programm in allen Netzwerken eingesetzt werden, die Verbindungen als Laufwerk zu lassen (alle WINDOWS Versionen). Die GiS Software unterstützt nur den Zugriff

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

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

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2

Drei-Schichten-Architektur. Informatik B - Objektorientierte Programmierung in Java. Vorlesung 17: 3-Schichten-Architektur 2 Universität Osnabrück 1 3 - Objektorientierte Programmierung in Java Zur Erinnerung: Aufteilung der Schichten GUI Vorlesung 17: 3-Schichten-Architektur 2 Fachkonzept Fachkonzept - Datenhaltung Datenhaltung

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

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

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

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

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

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

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

DB2 Kurzeinführung (Windows)

DB2 Kurzeinführung (Windows) DB2 Kurzeinführung (Windows) Michaelsen c 25. Mai 2010 1 1 Komponenten von DB2 DB2 bietet zahlreiche graphische Oberflächen für die Verwaltung der verschiedenen Komponenten und Anwendungen. Die wichtigsten

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

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

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

4D Server v12 64-bit Version BETA VERSION

4D Server v12 64-bit Version BETA VERSION 4D Server v12 64-bit Version BETA VERSION 4D Server v12 unterstützt jetzt das Windows 64-bit Betriebssystem. Hauptvorteil der 64-bit Technologie ist die rundum verbesserte Performance der Anwendungen und

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

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

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

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

icloud nicht neu, aber doch irgendwie anders

icloud nicht neu, aber doch irgendwie anders Kapitel 6 In diesem Kapitel zeigen wir Ihnen, welche Dienste die icloud beim Abgleich von Dateien und Informationen anbietet. Sie lernen icloud Drive kennen, den Fotostream, den icloud-schlüsselbund und

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

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu

5 DATEN. 5.1. Variablen. Variablen können beliebige Werte zugewiesen und im Gegensatz zu Daten Makro + VBA effektiv 5 DATEN 5.1. Variablen Variablen können beliebige Werte zugewiesen und im Gegensatz zu Konstanten jederzeit im Programm verändert werden. Als Variablen können beliebige Zeichenketten

Mehr

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch

Einfache und effiziente Zusammenarbeit in der Cloud. EASY-PM Office Add-Ins Handbuch Einfache und effiziente Zusammenarbeit in der Cloud EASY-PM Office Add-Ins Handbuch Inhaltsverzeichnis 1. Einführung... 3 2. Ribbonmenü... 4 3. Dokument... 5 3.1 Öffnen... 5 3.2 Speichern... 6 3.3 Speichern

Mehr

Kurzanleitung zu. von Daniel Jettka 18.11.2008

Kurzanleitung zu. von Daniel Jettka 18.11.2008 Kurzanleitung zu Tigris.org Open Source Software Engineering Tools von Daniel Jettka 18.11.2008 Inhaltsverzeichnis 1.Einführung...1 2.Das Projektarchivs...3 2.1.Anlegen des Projektarchivs...3 2.2.Organisation

Mehr

25 Import der Beispiele

25 Import der Beispiele 25 Import der Beispiele Versuch es nicht mit Gewalt. Nimm einfach einen größeren Hammer (Murphy s Law) 25.1 Einleitung Alle Beispielprogramme dieses Buchs funktionieren mit jeder Java-konformen Entwicklungsumgebung.

Mehr

Javakurs zu Informatik I. Henning Heitkötter

Javakurs zu Informatik I. Henning Heitkötter Javakurs zu Informatik I Arrays vergleichen Implementieren Sie folgende Methode, die prüft, ob die Elemente der beiden Arrays an jeder Position übereinstimmen: public static boolean identisch(int[] a,

Mehr

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC.

Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC. Anleitung Konverter Letzte Aktualisierung dieses Dokumentes: 14.11.2013 Der vorliegende Konverter unterstützt Sie bei der Konvertierung der Datensätze zu IBAN und BIC. Wichtiger Hinweis: Der Konverter

Mehr

ecaros2 - Accountmanager

ecaros2 - Accountmanager ecaros2 - Accountmanager procar informatik AG 1 Stand: FS 09/2012 Inhaltsverzeichnis 1 Aufruf des ecaros2-accountmanager...3 2 Bedienung Accountmanager...4 procar informatik AG 2 Stand: FS 09/2012 1 Aufruf

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

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012)

Information zum SQL Server: Installieren und deinstallieren. (Stand: September 2012) Information zum SQL Server: Installieren und deinstallieren (Stand: September 2012) Um pulsmagic nutzen zu können, wird eine SQL-Server-Datenbank benötigt. Im Rahmen der Installation von pulsmagic wird

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

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO

Mehr

.NET Code schützen. Projekt.NET. Version 1.0

.NET Code schützen. Projekt.NET. Version 1.0 .NET Code schützen Projekt.NET Informationsmaterial zum Schützen des.net Codes Version 1.0 Autor: Status: Ablage: Empfänger: Seiten: D. Hoyer 1 / 6 Verteiler : Dokument1 Seite 1 von 1 Änderungsprotokoll

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

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

ODBC-Treiber 1. 1.1 Programmübersicht

ODBC-Treiber 1. 1.1 Programmübersicht 1 O D B C - Treiber ODBC-Treiber 1 1.1 Programmübersicht Nach einer ausgiebigen Testphase wurde kürzlich der neue ODBC-Treiber freigegeben. Dieser ist somit ab der 2000-er-Version lizenzpflichtig und kann

Mehr

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12

Folge 19 - Bäume. 19.1 Binärbäume - Allgemeines. Grundlagen: Ulrich Helmich: Informatik 2 mit BlueJ - Ein Kurs für die Stufe 12 Grundlagen: Folge 19 - Bäume 19.1 Binärbäume - Allgemeines Unter Bäumen versteht man in der Informatik Datenstrukturen, bei denen jedes Element mindestens zwei Nachfolger hat. Bereits in der Folge 17 haben

Mehr

Handbuch zum Excel Formular Editor

Handbuch zum Excel Formular Editor Handbuch zum Excel Formular Editor Mit diesem Programm können Sie die Zellen von ihrer Excel Datei automatisch befüllen lassen. Die Daten können aus der Coffee Datenbank, oder einer weiteren Excel Datendatei

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

Datenmanagement in Android-Apps. 16. Mai 2013

Datenmanagement in Android-Apps. 16. Mai 2013 Datenmanagement in Android-Apps 16. Mai 2013 Überblick Strukturierung von datenorientierten Android-Apps Schichtenarchitektur Möglichkeiten der Datenhaltung: in Dateien, die auf der SDCard liegen in einer

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

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

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

Datenaustausch mit Datenbanken

Datenaustausch mit Datenbanken Datenaustausch mit Datenbanken Datenbanken Einführung Mit dem optionalen Erweiterungspaket "Datenbank" können Sie einen Datenaustausch mit einer beliebigen Datenbank vornehmen. Der Datenaustausch wird

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

Live Update (Auto Update)

Live Update (Auto Update) Live Update (Auto Update) Mit der Version 44.20.00 wurde moveit@iss+ um die Funktion des Live Updates (in anderen Programmen auch als Auto Update bekannt) für Programm Updates erweitert. Damit Sie auch

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

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

SSH Authentifizierung über Public Key

SSH Authentifizierung über Public Key SSH Authentifizierung über Public Key Diese Dokumentation beschreibt die Vorgehensweise, wie man den Zugang zu einem SSH Server mit der Authentifizierung über öffentliche Schlüssel realisiert. Wer einen

Mehr

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken

Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken Gemeinsamer Bibliotheksverbund: Übertragung von Datenexporten für den Verbundkatalog Öffentlicher Bibliotheken Mit Anleitung zur Erstellung einer FTP Verbindung unter Windows 7 Matthias Lange

Mehr

Klausur zur Vorlesung Datenbanksysteme I

Klausur zur Vorlesung Datenbanksysteme I Prof. Dr. W. Kießling 30.01.2002 Lehrstuhl für Datenbanken und Informationssysteme Universität Augsburg Klausur zur Vorlesung Datenbanksysteme I Wintersemester 2001/2002 Name Vorname Matrikelnummer Aufgabe

Mehr

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv

schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Roboter programmieren mit NXC für Lego Mindstorms NXT 1. Auflage Roboter programmieren mit NXC für Lego Mindstorms NXT schnell und portofrei erhältlich bei beck-shop.de DIE FACHBUCHHANDLUNG mitp/bhv Verlag

Mehr

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten

Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Ordner Berechtigung vergeben Zugriffsrechte unter Windows einrichten Was sind Berechtigungen? Unter Berechtigungen werden ganz allgemein die Zugriffsrechte auf Dateien und Verzeichnisse (Ordner) verstanden.

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

Microsoft Update Windows Update

Microsoft Update Windows Update Microsoft bietet mehrere Möglichkeit, Updates durchzuführen, dies reicht von vollkommen automatisch bis zu gar nicht. Auf Rechnern unserer Kunden stellen wir seit September 2006 grundsätzlich die Option

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

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG

Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Einstellungen im Internet-Explorer (IE) (Stand 11/2013) für die Arbeit mit IOS2000 und DIALOG Um mit IOS2000/DIALOG arbeiten zu können, benötigen Sie einen Webbrowser. Zurzeit unterstützen wir ausschließlich

Mehr

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein Einrichtung von orgamax-mobil Um die App orgamax Heute auf Ihrem Smartphone nutzen zu können, ist eine einmalige Einrichtung auf Ihrem orgamax Rechner (bei Einzelplatz) oder Ihrem orgamax Server (Mehrplatz)

Mehr

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote

Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Anleitung zum erfassen von Last Minute Angeboten und Stellenangebote Zweck dieser Anleitung ist es einen kleinen Überblick über die Funktion Last Minute auf Swisshotelportal zu erhalten. Für das erstellen

Mehr

Prozessbeschreibung. Qualitätsberichte erstellen und vorbefüllen

Prozessbeschreibung. Qualitätsberichte erstellen und vorbefüllen Prozessbeschreibung Name des Prozesses Verantwortlich Ziele des Prozesses Prozessbeschreibung Qualitätsberichte erstellen und vorbefüllen Prorektor für Lehre Automatische Generierung der Formulare für

Mehr

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright

COSA. Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16. Copyright Portal Client Installation JAVA J2SE / JRE Version 1.4.2_09, Stand 01.08.2005-08-16 Änderungen in Dokumentation und Software sind vorbehalten! Copyright Copyright 2005 COSA GmbH Alle Rechte vorbehalten.

Mehr

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook (2002-2007) Zentrum für Datenverarbeitung der Universität Tübingen Inhalt 1. Die Funambol Software... 3 2. Download und Installation... 3 3.

Mehr

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert:

Folgende Einstellungen sind notwendig, damit die Kommunikation zwischen Server und Client funktioniert: Firewall für Lexware professional konfigurieren Inhaltsverzeichnis: 1. Allgemein... 1 2. Einstellungen... 1 3. Windows XP SP2 und Windows 2003 Server SP1 Firewall...1 4. Bitdefender 9... 5 5. Norton Personal

Mehr

Ein Ausflug zu ACCESS

Ein Ausflug zu ACCESS Ein Ausflug zu ACCESS Die folgenden Folien zeigen beispielhaft, wie man sein DB- Wissen auf ACCESS übertragen kann betrachtet wird ACCESS 2002, da gerade im Bereich der Nutzung von SQL hier einiges nachgearbeitet

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

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb

Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb Installationsanleitung für CashPro im Mehrbenutzerzugriff/Netzwerkbetrieb CashPro basiert auf Accesstechnologie 2003 und ist auch unter den aktuellen Accessversionen 2007 bis 2013 einsetzbar und Mehrbenutzerfähig.

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

Herzlich Willkommen bei der BITel!

Herzlich Willkommen bei der BITel! Herzlich Willkommen bei der BITel! Damit Sie auch unterwegs mit dem iphone Ihre E-Mails abrufen können, zeigen wir Ihnen Schritt für Schritt wie Sie Ihr BITel-Postfach im iphone einrichten. Los geht's:

Mehr

Views in SQL. 2 Anlegen und Verwenden von Views 2

Views in SQL. 2 Anlegen und Verwenden von Views 2 Views in SQL Holger Jakobs bibjah@bg.bib.de, holger@jakobs.com 2010-07-15 Inhaltsverzeichnis 1 Wozu dienen Views? 1 2 Anlegen und Verwenden von Views 2 3 Schreibfähigkeit von Views 3 3.1 Views schreibfähig

Mehr

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY

GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY GEORG.NET Anbindung an Ihr ACTIVE-DIRECTORY Vorteile der Verwendung eines ACTIVE-DIRECTORY Automatische GEORG Anmeldung über bereits erfolgte Anmeldung am Betriebssystem o Sie können sich jederzeit als

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC

In 15 einfachen Schritten zum mobilen PC mit Paragon Drive Copy 10 und Microsoft Windows Virtual PC PARAGON Technologie GmbH, Systemprogrammierung Heinrich-von-Stephan-Str. 5c 79100 Freiburg, Germany Tel. +49 (0) 761 59018201 Fax +49 (0) 761 59018130 Internet www.paragon-software.com Email sales@paragon-software.com

Mehr

Dokumentation von Ük Modul 302

Dokumentation von Ük Modul 302 Dokumentation von Ük Modul 302 Von Nicolas Kull Seite 1/ Inhaltsverzeichnis Dokumentation von Ük Modul 302... 1 Inhaltsverzeichnis... 2 Abbildungsverzeichnis... 3 Typographie (Layout)... 4 Schrift... 4

Mehr

Wir basteln einen Jahreskalender mit MS Excel.

Wir basteln einen Jahreskalender mit MS Excel. Wir basteln einen Jahreskalender mit MS Excel. In meinen Seminaren werde ich hin und wieder nach einem Excel-Jahreskalender gefragt. Im Internet findet man natürlich eine ganze Reihe mehr oder weniger

Mehr