DB-Anwendungsprogrammierung



Ähnliche Dokumente
Teil VIII. Datenbanken

Transaktionsverwaltung

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

Java Database Connectivity (JDBC) Walther Rathenau Gewerbeschule 1

8a. Exkurs.NET. 8a.1.NET Architektur

Kommunikationsübersicht XIMA FORMCYCLE Inhaltsverzeichnis

Anleitung zur Einrichtung einer ODBC Verbindung zu den Übungsdatenbanken

P.A. Bernstein, V. Hadzilacos, N. Goodman

3. Stored Procedures und PL/SQL

Transaktionsverwaltung

Klausur in Programmieren

Datenbank-Verschlüsselung mit DbDefence und Webanwendungen.

Übungen zu C++ Kapitel 1

Prozedurale Datenbank- Anwendungsprogrammierung

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

Architekturen. Von der DB basierten zur Multi-Tier Anwendung. DB/CRM (C) J.M.Joller

Installation und Inbetriebnahme von Microsoft Visual C Express

Kapitel 2 Transaktionsverwaltung

Teil VI. Datenbanken

JDBC. Allgemeines ODBC. java.sql. Beispiele

4D Server v12 64-bit Version BETA VERSION

How to do? Projekte - Zeiterfassung

7. Übung - Datenbanken

Eigenen WSUS Server mit dem UNI WSUS Server Synchronisieren

ecaros2 Installer procar informatik AG 1 Stand: FS 09/2012 Eschenweg Weiterstadt

Von ODBC zu OLE DB. Neue Möglichkeiten der Datenintegration. Harald Gladytz, Team Vertrieb ESRI Niederlassung Leipzig

Verwendung des Terminalservers der MUG

Übungen zur Vorlesung. Datenbanken I

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

Datenbanken & Informationssysteme Übungen Teil 1

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

Angewandte Mathematik und Programmierung

WS 2002/03. Prof. Dr. Rainer Manthey. Institut für Informatik III Universität Bonn. Informationssysteme. Kapitel 1. Informationssysteme

Tipps und Tricks zu Netop Vision und Vision Pro

Step by Step Webserver unter Windows Server von Christian Bartl

1 Transaktionen in SQL. 2 Was ist eine Transaktion. 3 Eigenschaften einer Transaktion. PostgreSQL

WINDOWS 10 Upgrade. Beispiel: Desktop-Ausschnitt von vorhandenem WIN 8.1 (rechte Ecke der Taskleiste)

Update und Konfiguraton mit dem ANTLOG Konfigurations-Assistenten

Informatik für Ökonomen II Übung 0

SQL Server 2008 Standard und Workgroup Edition

Wo finde ich die Software? - Jedem ProLiant Server liegt eine Management CD bei. - Über die Internetseite

SQL Server 2005 Standard Edition SQL Server 2005 Enterprise Edition SQL Server 2005 Workgroup Edition

AS/point, Ihr Partner die nächsten 10 und mehr Jahre -

Lehrveranstaltung Grundlagen von Datenbanken

GEZIELT MEHR SICHERHEIT MIT 4I ACCESS SERVER & 4I CONNECT CLIENT

Informatik 12 Datenbanken SQL-Einführung

Verwendung des IDS Backup Systems unter Windows 2000

Übungen zur Softwaretechnik

2 Die Terminaldienste Prüfungsanforderungen von Microsoft: Lernziele:

Python SVN-Revision 12

ISA Einrichtung einer DFUE VErbindung - von Marc Grote

Lokale Installation von DotNetNuke 4 ohne IIS

Betriebshandbuch. MyInTouch Import Tool

System-Update Addendum

INSTALLATIONSANLEITUNG der Version 2.1 (Jänner 2014)

Benutzer und Rechte Teil 1

Echtzeitanomalieerkennung für Internetdienste (Abschlussvortrag)

Einführung in die Informatik für Naturwissenschaftler und Ingenieure (alias Einführung in die Programmierung)

Administrator-Anleitung

Lizenzierung von System Center 2012

Grundlagen von Python

Einführung in die Programmierung (EPR)

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

SharePoint Demonstration

Hochschule Karlsruhe Technik und Wirtschaft

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

SEMINAR Modifikation für die Nutzung des Community Builders

Arrays von Objekten. Annabelle Klarl. Einführung in die Informatik Programmierung und Softwareentwicklung

P CALC Die Präferenzkalkulation

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

Datenbank und Informationssysteme

Windows Server 2008 (R2): Anwendungsplattform

Datenmanagement in Android-Apps. 16. Mai 2013

Einführung in die Programmierung

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

1 Voraussetzungen für Einsatz des FRITZ! LAN Assistenten

Grundlagen. Kapitel 1

Tag 4 Inhaltsverzeichnis

Computeria Solothurn

Gesicherte Prozeduren

Anleitung zur Nutzung des SharePort Utility

Proseminar Datenbanken

Programmierkurs Java

How-to: Webserver NAT. Securepoint Security System Version 2007nx

Kurzanleitung zum Einrichten des fmail Outlook Addin

Einsatzbearbeitung im Sanitätsdienst

Parallels Mac Management 3.5

HOWTO Update von MRG1 auf MRG2 bei gleichzeitigem Update auf Magento CE 1.4 / Magento EE 1.8

Installation und Inbetriebnahme von SolidWorks

DB2 Kurzeinführung (Windows)


Systemanforderungen für MuseumPlus und emuseumplus

HINWEISE ZUR ARBEIT IM LABOR

OP-LOG

Benutzerkonto unter Windows 2000

CDRServer 2011 / Installationsanleitung Step-by-Step. elcom

Transkript:

Hauptaufgabe: Abbildung der unterschiedlichen Datenmodelle und Zugriffsparadigmen zwischen Programmiersprache und dem DBMS, z.b. C++ Basisdatentypen und flexible Typkonstruktoren wie Strukturen und Klassen Basisdatentypen entsprechend C++ Standard Imperative Programmiersprache (wie wird das Ergebnis berechnet) SQL Tabellen (Multimengen/Listen) von Zeilen mit Attributwerten von Basisdatentypen Plattform- und Programmiersprachen unabhängige Basisdatentypen Deklarative Anfragesprache (was soll das Ergebnis sein) Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 80

Aufgaben von Programmierschnittstellen Kapselung der Datenbankfunktionalität durch geeignete Funktionen/Strukturen/Klassen für Verbindung zum DBMS Zugriff auf Konkrete Datenbank Absetzen von Anfragen Zugriff auf Ergebnisse Geeignete Datenstrukturen für mengenwertige Anfrageergebnisse Zugriff über imperative Programmiersprache Cursor- oder Iterator-Konzept zum zeilenweisen Auslesen der Ergebnisse Zugriff auf Metadaten (Beschreibung von Tabellen und Anfrageergebnissen, z.b. welche Spalten hat das gerade übertragene Ergebnis) Umgesetzt als Bibliotheken, die auf Treiber (optional) und Protokoll zur Kommunikation mit DBMS Server abbilden Anwendung Schnittstelle Treiber DBMS DB Client Server Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 81

Programmierschnittstellen engl. Application Programming Interface (API) Zahlreiche verschiedene Schnittstellen existieren Unterscheidung nach verschiedenen Kriterien möglich Abstraktionsstufe: Low-level (Absetzen von Anfragen, generische Ergebnistypen) bis High-level (z.b. definierte/definierbare Abbildung auf Anwendungsobjekte) Abhängigkeit oder Unabhängigkeit von Programmiersprache Hardware-/Betriebssystemplattform konkretem DBMS Im folgenden 2 Beispiele: ODBC und proprietäre MySQL Anbindung Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 82

ODBC Open Database Connectivity Low-level: Aufbau von Verbindungen, Absetzen von Anfragen, Lesen generischer Ergebnisse) Unabhängig von Programmiersprache: Schnittstelle bestehend aus Funktionen mit Handles (Strukturen) zur Verwaltung der Zustandsinformationen Unabhängig von Hardware und Betriebssystem: ursprünglich Umsetzung des CLI-Standards (Call Level Interface) für Microsoft Windows, mittlerweile aber auf vielen Plattformen Unabhängig vom verwendeten DBMS: Treiber für fast alle kommerziellen DBMS verfügbar Extrem flexibel, dafür aber nicht sehr einfach in der Handhabung siehe folgendes Beispielprogramm zum Auslesen der Tabelle Studenten Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 83

ODBC Beispiel Aufbau einer Datenbankverbindung und komplettes Lesen der Student-Tabelle Code auf der Web-Seite zur Vorlesung Übersetzung und Ausführung des Beispiels erfordern Installiertes MySQL DBMS Beispieldatenbank entsprechend Script auf Web-Seite zur Vorlesung Installierten MySQL ODBC Treiber Konfiguration der MySQL Datenbank als ODBC-Quelle Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 84

ODBC Beispiel /1 #include <windows.h> #include <sql.h> #include <sqlext.h> #include <sqltypes.h> #include <iostream> using namespace std; int main() { SQLHENV sql_henv = 0; SQLHDBC sql_hdbc = 0; SQLHSTMT sql_hstmt = 0; SQLSMALLINT nsize = 0; SQLRETURN sqlret; Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 85

ODBC Beispiel /2 SQLAllocHandle( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &sql_henv ); SQLSetEnvAttr( sql_henv, SQL_ATTR_ODBC_VERSION, (void*) SQL_OV_ODBC3, 0 ); SQLAllocHandle(SQL_HANDLE_DBC, sql_henv, &sql_hdbc ); sqlret = SQLConnect( sql_hdbc, (SQLCHAR*) gif, SQL_NTS, (SQLCHAR*), SQL_NTS, (SQLCHAR*), SQL_NTS ); Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 86

ODBC Beispiel /3 if (SQL_SUCCEEDED(sqlRet)) { sqlret = SQLAllocHandle( SQL_HANDLE_STMT, sql_hdbc, &sql_hstmt ); sqlret = SQLExecDirect( sql_hstmt, (SQLCHAR*) SELECT * FROM gif.student;, SQL_NTS ); SQLSMALLINT ncols = 0; SQLINTEGER nrows = 0; SQLINTEGER nidicator = 0; SQLCHAR buf[1024] = {0}; SQLNumResultCols( sql_hstmt, &ncols ); SQLRowCount( sql_hstmt, &nrows ); Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 87

ODBC Beispiel /4 while(sql_succeeded(sqlret = SQLFetch(sql_hStmt))) { cout << Student: ; for (int i=1; i <= ncols; ++i ) { sqlret = SQLGetData( sql_hstmt, i, SQL_C_CHAR, buf, 1024, &nidicator ); if (SQL_SUCCEEDED( sqlret )) { cout << buf; } if (i==ncols) cout << endl; else cout <<, ; } } Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 88

ODBC Beispiel /5 } SQLFreeHandle( SQL_HANDLE_STMT, sql_hstmt ); SQLDisconnect( sql_hdbc ); } else { cout << Fehler bei der Verbindung zur Datenbank! << endl; } SQLFreeHandle( SQL_HANDLE_DBC, sql_hdbc ); SQLFreeHandle( SQL_HANDLE_ENV, sql_henv ); return 0; Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 89

MySQL Connector/C++ Proprietäre Schnittstelle für MySQL DBMS Low-level Nur für C++: objektorientierte Schnittstelle mit Klassen und Methoden, aber angelehnt an JDBC (Industriestandard für Datenbankzugriffe in Programmiersprache Java) und ähnliche zu MySQL Connector-Implementierungen für andere Programmiersprachen Unabhängig von Hardware und Betriebssystem: Bibliothek für zahlreiche Plattformen verfügbar Abhängig vom verwendeten DBMS: funktioniert nur mit MySQL Vergleichsweise einfache und intuitive Nutzung Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 90

MySQL Beispiel Aufbau einer Datenbankverbindung und Lesen von 2 Spalten der Student-Tabelle Code auf der Web-Seite zur Vorlesung Übersetzung und Ausführung des Beispiels erfordern Installiertes MySQL DBMS Beispieldatenbank entsprechend Script auf Web-Seite zur Vorlesung Installierten MySQL Connector/C++ Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 91

MySQL Beispiel /1 #include <stdlib.h> #include <iostream> #include mysql_connection.h #include <cppconn/driver.h> #include <cppconn/exception.h> #include <cppconn/resultset.h> #include <cppconn/statement.h> using namespace std; int main() { try { sql::driver *driver; sql::connection *con; sql::statement *stmt; sql::resultset *res; Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 92

MySQL Beispiel /2 driver = get_driver_instance(); con = driver->connect(,, ); con->setschema( gif ); stmt = con->createstatement(); res = stmt->executequery( SELECT * FROM student ); while (res->next()) { cout << res->getstring( name ) <<, ; cout << res->getstring( vorname ) << endl; } Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 93

MySQL Beispiel /3 delete res; delete stmt; delete con; } catch (sql::sqlexception &e) { cout << ERROR: << e.what(); cout << MySQL error code: << e.geterrorcode() << endl; } } cout << endl; return 0; Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 94

Transaktionen Transaktion: Folgen von Datenbankoperationen, die für die Ausführung als logische Einheit betrachtet werden Transaktion: Überweisung(X, Y, Betrag) Checke Konto X: SELECT X = X - Betrag: UPDATE Checke Konto Y: SELECT Y = Y + Betrag: UPDATE Erfolgreich beendet: Commit Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 95

ACID-Eigenschaften Transaktion müssen dem ACID-Prinzip entsprechend vom DBMS ausgegeführt werden: Atomicity (Atomarität): eine Transaktion muss als Einheit ausgeführt werden, d.h. entweder ganz oder gar nicht Consistency (Konsistenz): eine Transaktion muss die Datenbank immer von einem konsistenten Zustand in einen konsistenten Zustand überführen (auch wenn Zwischenzustände ggf. inkonsistent sein können) Isolation (Schutz bei Nebenläufigkeit): bei der zeitgleichen Ausführung von Transaktionen (z.b. durch mehrere Nutzer) dürfen in einer Transaktion keine Effekte paralleler, noch nicht abgeschlossener Transaktionen sichtbar sein Durability (Dauerhaftigkeit): wird eine Transaktion erfolgreich beendet, so kann der von ihr erzielte Effekt nicht nachträglich rückgängig gemacht werden Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 96

Beispiel: Problem Atomarität TXN: Überweisung Checke Konto X X = X - Betrag Checke Konto Y: Fehler: Konto gesperrt ABBRUCH Beenden der Transaktion Zurücksetzen aller zuvor gemachten Änderungen Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 97

Beispiel: Problem Isolation Parallele Ausführung zweier Transaktionen: TXN: Überweisung Checke Konto X X = X - Betrag TXN: Zinsen Lies Konto X Zinsen = X * Zinssatz X = X + Zinsen Inkonsistenter Zustand, der die Überweisung des Betrages überschreibt, muss durch DBMS vermieden werden Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 98

Umsetzung in SQL oder Programmiersprachen Möglichkeiten zum Start einer Transaktion SQL:START TRANSACTION Impliziter Transaktionsbeginn: spezieller Modus in vielen DBMS, der bei erstem Datenzugriff eine Transaktion beginnt, wleche bis zu explizitem Beenden (s.u.) läuft Transaktion pro Statement: spezieller Modus in vielen DBMS, der für jedes Statement (Anfrage, Update, etc.) eine einzelne Transaktion startet Erfolgreiches Beenden einer Transaktion SQL:COMMIT Abbruch einer Transaktion (mit Rücksetzen aller bisherigen Ergebnisse: SQL:ROLLBACK Programmierschnittstellen bieten oft eigene Schnittstellen (Funktionen, Transaktionsklassen) zur Steuerung von Transaktionen Eike Schallehn Grundlagen der Informatik für Ingenieure 2008/2009 6 99