Tutorial: Anbindung einer SQL-Datenquelle. Version: 1.1 Autoren: David Haasler, Stefan Suermann

Ähnliche Dokumente
Tutorial: Module erstellen und verteilen. Version: 2 Autoren: Daniel Neumann, Stefan Suermann

Tutorial: Lesbare URLs - Literales URI-Format anpassen. Version: 2.0 Autoren: Anja Beuth, Stefan Suermann

Funktionen. Überblick über Stored Functions. Syntax zum Schreiben einer Funktion. Schreiben einer Funktion

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen

Datenbanken SQL Einführung Datenbank in MySQL einrichten mit PhpMyAdmin

Projektseminar "Texttechnologische Informationsmodellierung"

Eine Schnelleinführung in XSL

XSLT XSL Transformations

Whitepaper. Produkt: combit Relationship Manager. Datensatzhistorie mit dem SQL Server 2000 und combit GmbH Untere Laube Konstanz

XSLT XSL Transformations

CADSTAR MRP-Link. MRP-Link ist erstellt von:

Datenbank und Tabelle mit SQL erstellen

Übersicht der wichtigsten MySQL-Befehle

PHP- Umgang mit Datenbanken (1)

Tutorial: Systemportierung per Datenbank-Sicherung. version: 0.1 Author: Anja Beuth

Prüfungsnummer: deutsch. Prüfungsname: Querying. Version: Demo. SQL Server

Tutorial: Ein Benutzerprofil erstellen. Version: 2.0 Autoren: Anja Beuth, Stefan Suermann

Seminar Dokumentenverarbeitung

Transformation von XML-Dokumenten mit XSLT

Start des Programms mit zwei Parametern: 1. XML-Datei mit den zu verarbeitenden Eingabedaten, 2. XML-Datei mit der Programmkonfiguration

MySQL-Befehle. In diesem Tutorial möchte ich eine kurze Übersicht der wichtigsten Befehle von MySQL geben.

5.8 Bibliotheken für PostgreSQL

Erstellen und Verwalten von Tabellen

Whitepaper. Produkt: combit Relationship Manager / address manager. Integration der Ansicht "Adressen" in eigene Solution

MySQL Queries on "Nmap Results"

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

Entwicklungsumgebung für die Laborübung

desk.modul : WaWi- Export

Wie greifen Sie mit WinCC Runtime Advanced über ein Skript auf eine SQL- Datenbank zu?

TimeMachine. Installation und Konfiguration. Version 1.4. Stand Dokument: install.odt. Berger EDV Service Tulbeckstr.

A Datenbanken. A.1 Firebird. A.1.1 Installation des Servers. A.1.2 Installation der Beispieldatenbanken. Datenbanken 1

DATENBANKEN SQL UND SQLITE VON MELANIE SCHLIEBENER

Abbildung 6-8: Abfolge beim doppelten Abschicken von Formularen

Transformation von XML-Dokumenten. IDE SummerSchool 2013, Chemnitz

ODBC Was ist das? ODBC Treiber installieren ODBC-Zugriff einrichten ODBC Zugriff mit Excel ODBC Zugriff mit Word...

Multimedia im Netz. Übung zur Vorlesung. Ludwig-Maximilians-Universität Wintersemester 2010/2011

ids-system GmbH Tipp #3 Leer-Strings in SQL oder die Frage nach CHAR oder VARCHAR

Eigene Funktionen innerhalb von pgsql

PHP MySQL - myphpadmin Formulardaten in eine Datenbank speichern

Kapitel 9. Embedded SQL. Prof. Dr. Wolfgang Weber Vorlesung Datenbanken 1

CLIQ Manager als Standard Benutzer starten

Installation von Microsoft SQL Server 2014 Express in Verbindung mit Postbuch

Mit dem MySQL Migration Toolkit aus ACCESS Datenbank SQL-Skripte generieren

Extensible Stylesheet Language Transformations XSLT

MySQL, phpmyadmin & SQL. Kurzübersicht

SQL-Befehlsliste. Vereinbarung über die Schreibweise

Installationsanleitung MS SQL Server für Sage 50 Ablage & Auftragsbearbeitung. Sage Schweiz AG D4 Platz 10 CH-6039 Root Längenbold

XML-Praxis. Mit XSLT arbeiten. Jörn Clausen.

Java Application 1 Java Application 2. JDBC DriverManager. JDBC-ODBC Br idge. ODBC Driver Manager. Dr iver C. Dr iver D.

MySQL Installation. AnPr

Datenbankimplementierung

Multimedia im Netz Wintersemester 2013/14. Übung 03 (Nebenfach)

Datenbank - Teil 3. Ziele: Eine Datenbank anlegen mit SQL. Daten eingeben mit SQL. Abfragen stellen mit SQL und PHP.

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

SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";

ids-system GmbH Tipp #5 STRING_UNITS ab DB FP 4

Fakultät für Informatik & Wirtschaftsinformatik DB & IS II - SS Metadaten

NoSQL mit Postgres 15. Juni 2015

Inhalt. Ein Einführung in die Nutzung von SQL-Datenbanken am Beispiel Oracle. Daten und Tabellen - ein Beispiel. Daten und Tabellen - Normalisierung

Oracle & Java HOW TO

Entwicklungsumgebung für die Laborübung

PostgreSQL unter Debian Linux

Dokumentation zur Anlage eines JDBC Senders

Datenbank auf neuen Server kopieren

KlassifikationsBrowser

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

TimeMachine. Time CGI. Version 1.5. Stand Dokument: time.odt. Berger EDV Service Tulbeckstr München

ERSTELLUNG EINES DATENEXPORTS MIT ORGAMAX

Einführung in PHP und MySQL

Die Datenquelle anlegen

PostgreSQL auf Debian System

3 Query Language (QL) Einfachste Abfrage Ordnen Gruppieren... 7

PHP und Datenbanken. Verbindung zum Datenbankserver

Oracle native json Support. Erste Schritte

Garten - Daten Bank. - survival pack -

Datenmanagement I SoSe 2006 Aufgabenblatt 4

Dokumentation QuickHMI Datenbanken Datenquelle

WEKA Honorarabrechnung leicht gemacht manuelle Installation vom MS-SQL Server 2014 SP2 Express Stand 10/2016

Einführung. Hallo-Welt in XSLT

XML in Oracle 12c. Wolfgang Nast

Installation von MS SQL-Server 2014 Express

Handbuch organice SQL-Reportgenerator

ODBC-Verbindungen in Oracle-Datenbanken nutzen

4. Objektrelationales Typsystem Kollektionstypen. Nested Table

Willkommen. Datenbanken und Anbindung

XSL. extended Stylesheet Language. Die Stylesheet Sprache für XML

Datenbanken erstellen Liste von Datenbanken anzeigen Datenbanken löschen. MySQL 4, 5. Kapitel 06: Datenbanken. Marcel Noe

Neuerungen in Marco Patzwahl MuniQSoft GmbH Unterhaching

Wie lege ich Benutzerdefinierte Datenfelder auf einem Asta Enterprise 12 Server (für PowerConnect) an?

Anwendungsentwicklung Datenbanken SQL. Stefan Goebel

Prozedurale Datenbank- Anwendungsprogrammierung

Seminar 2. SQL - DML(Data Manipulation Language) und. DDL(Data Definition Language) Befehle.

Duale Zustellung. Standardprofile. Version 1.0.0, DI Arne Tauber

SMARTtill Server mit Manager

Schritt 1: Verwenden von Excel zum Erstellen von Verbindungen mit SQL Server-Daten

sm-client Projekt Aktualisierungsinstruktionen von R2.x auf R3.0 Finale Version SSK / BSV eahv/iv

Verteilte Anwendungen. Teil 8: XSL II (XSLT)

Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen.

Transkript:

Tutorial: Anbindung einer SQL-Datenquelle Version: 1.1 Autoren: David Haasler, Stefan Suermann

Inhaltsverzeichnis 1 1.1 2 3 Erstellen der Datenbank... Fehlerbehebung bei Falsche Syntax in der Nähe von 'HOLDLOCK'... Konfigurieren der onion.net Render Engine... Erstellen von XSL-Templates... 2 3 4 6

Voraussetzungen Der Entwickler benötigt für dieses Tutorial den Zugriff auf die web.config der onion.net Render Engine, sowie einen Zugriff auf einen SQL-Server. Beschreibung Dieses Tutorial beschreibt die Anbindung einer Datenbank als SQL-Datenquelle an die onion.net Render Engine. Zeichenerklärung Text, der grün umrandet und mit dem Pfeil-Symbol gekennzeichnet ist, enthält konkrete Anweisungen, was als nächstes zu tun ist. Texte in solchen Kästchen enthalten Tipps und Tricks. Quellcode wird in solch blauen Boxen dargestellt. 1

1 Erstellen der Datenbank 1 Erstellen der Datenbank Im ersten Schritt erstellen wir eine Datenbank mit Testdaten, welche wir später als Datenquelle in unserer onion.net Render Engine konfigurieren und Daten abrufen wollen. Das folgende Skript erstellt eine Test-Datenbank, legt eine Tabelle mit Testdaten an und erzeugt zwei gespeicherte Prozeduren. CREATE DATABASE SQLTest USE SQLTest CREATE TABLE [Contacts]( [id] [int] IDENTITY(1,1) NOT NULL, [firstname] [nvarchar](50) NOT NULL, [lastname] [nvarchar](50) NOT NULL, [age] [int] NOT NULL, [male] [bit] NOT NULL ) ON [PRIMARY] INSERT INTO [Contacts] (firstname, lastname, age, male) VALUES ('Walter', 'Webb', 20, 'True') INSERT INTO [Contacts] (firstname, lastname, age, male) VALUES ('Kristina', 'Kreativ', 25, 'False') INSERT INTO [Contacts] (firstname, lastname, age, male) VALUES ('Max', 'Mustermann', 30, 'True') INSERT INTO [Contacts] (firstname, lastname, age, male) VALUES ('Erika', 'Mustermann', 35, 'False') CREATE PROCEDURE [getcontacts] AS BEGIN SELECT id, firstname, lastname FROM Contacts END CREATE PROCEDURE [getcontact] (@id int) AS BEGIN DECLARE @count int SELECT @count = COUNT(1) FROM Contacts WHERE id = @id IF @count > 0 SELECT id, firstname, lastname, age, male FROM Contacts WHERE id = @id 2

1 Erstellen der Datenbank ELSE RAISERROR ('no data found', 16, 1) END Nach dem Ausführen des SQL-Scripts muss die Render Engine neu gestartet werden. Dies kann manuell erfolgen oder, indem man Änderungen in der web.config-datei vornimmt (Setzen eines Leerzeichens reicht). Wird die Render Engine nicht neu gestartet, wird folgende Fehlermeldung angezeigt: Die gespeicherte Prozedur 'table_validation' wurde nicht gefunden. 1.1 Fehlerbehebung bei Falsche Syntax in der Nähe von 'HOLDLOCK' Sollte eine Fehlerseite mit folgender Fehlermeldung kommen Falsche Syntax in der Nähe von 'HOLDLOCK'... muss wie folgt vorgegangen werden: Öffnen Sie dazu ein Programm zur Interaktion des DBMS (Database Management System) (z.b. Microsoft SQL Server Management Studio) und melden Sie sich am Datenbankserver an. Navigieren Sie zur neu erstellten Datenbank SQLTest. Rechtsklicken Sie auf die Dantnbank und wählen Sie Eigeschaften. Wählen Sie im Strukturbum links den Punkt Optionen. Ändern Sie nun den Kompatibitätsgrad auf SQL Server 2000 (80). 3

2 Konfigurieren der onion.net Render Engine Klicken Sie nun auf den Button OK, damit sich der Dialog schließt. Laden Sie nun die Seite erneut. 2 Konfigurieren der onion.net Render Engine Nachdem die Testdaten im SQL-Server erstellt worden sind, können wir nun diese Datenbank als Datenquelle in der web.config unserer onion.net Render Engine konfigurieren. Der folgende Konfigurationsabschnitt wird innerhalb des Elements datasources eingefügt. 4

2 Konfigurieren der onion.net Render Engine <source xlinkprefix="sql" type="onion.renderengine.commondatasources.mssqlserverrepository, Onion.RenderEngine.CommonDataSources"> <server connectionstring="user id=username;password=password;server=localhost;initial catalog=sqltest" typeidentifier="sql"> <commands> <command name="getcontacts" contenttype="contactlist"> <dataviews> <list query="exec getcontacts" fields="id firstname lastname" resulttype="sql" dependencies="contacts" </dataviews> </command> <command name="getcontact" contenttype="contact"> <dataviews> <detail query="exec getcontact @id" fields="id firstname lastname age male" resulttype="sql" dependencies="contacts" </dataviews> <queryparameters> <parameter name="id" type="int" </queryparameters> </command> </commands> </server> </source> Wie Sie im Konfigurationsabschnitt evtl. erkennen, wird eine weitere Datenquelle definiert. Als Prefix wurde nun sql konfiguriert. Innerhalb des sources-elements wurde die Verbindung zum SQL-Server konfiguriert. In diesem Fall läuft der SQL-Server auf dem lokalen System. Für diesen Server werden nun zwei Kommandos erzeugt. Das erste Kommando "getcontacts" gibt die Ergebnisse als Datentyp ContactList zurück. Hier wird die gespeicherte Methode "getcontacts" aufgerufen, welche die Spalten id, firstname und lastname zurück geben soll. Das zweite Kommando "getcontact" soll nur einen Kontakt zurückgeben, daher ist der Rückgabetyp Contact. Als gespeicherte Prozedur wird getcontact aufgerufen, welche den Parameter @id übergeben bekommt. Dieser Parameter wird unter dem Abschnitt queryparameter auf einen Datentyp (im Beispiel die @id auf int) gemappt. Die gespeicherte Prozedur soll neben id, firstname und lastname auch age und male zurück geben. 5

3 Erstellen von XSL-Templates 3 Erstellen von XSL-Templates Nun möchten wir die Testdaten in der Datenbank mittels der onion.net Render Engine darstellen. Das Ziel ist es eine Übersicht und eine Detailseite für die Kontakte in der Datenbank zu erstellen. Am Ende des Tutorials sollte der Strukturbaum wie in der Abbildung aussehen. Dafür wird für das root-dokument das folgende Template erstellt: 6

3 Erstellen von XSL-Templates <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:sql="http://onionworks.net/2006/datasources/mssql" xmlns:onion="http://onionworks.net/2004/data" version="1.0" > <xsl:param name="id" c.optional="true" c.type="number" <xsl:output method="xml" omit-xml-declaration="yes" indent="no" <xsl:template match="/"> <xsl:choose> <xsl:when test="$id"> <c.literalcall id="{sql:createcommandxlink('sql', 'getcontact', $id)}" method="detail" </xsl:when> <xsl:otherwise> <c.literalcall id="{sql:createcommandxlink('sql', 'getcontacts')}" method="list" delegate="{c.xlink('default')}" </xsl:otherwise> </xsl:choose> </xsl:template> </xsl:stylesheet> default Template Die folgenden Templates werden nicht mehr unter der Datenquelle onion.net erstellt, sondern unter der Datenquelle SQL. In der web.config wurden contenttypes definiert, welche in der Datenquelle als Datentypen erstellt werden. Das wären die Datentypen ContactList und Contact. Für die Übersichtsseite wird die Methode "list" für den Datentyp ContactList aufgerufen. Das Template listet die Ergebnisse der Abfrage auf. 7

3 Erstellen von XSL-Templates <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:onion="http://onionworks.net/2004/data" version="1.0" > <xsl:param name="delegate" <xsl:output method="xml" omit-xml-declaration="yes" indent="no" <xsl:template match="/"> <table> <tr> <th>id</th> <th>firstname</th> <th>lastname</th> </tr> <xsl:for-each select="result/row"> <tr> <td> <xsl:value-of select="@id" </td> <td> <a href="{c.literaluri($delegate, 'id', @id)}"> <xsl:value-of select="@firstname" </a> </td> <td> <a href="{c.literaluri($delegate, 'id', @id)}"> <xsl:value-of select="@lastname" </a> </td> </tr> </xsl:for-each> </table> </xsl:template> </xsl:stylesheet> Zum Schluss erstellen wir noch das Template für die Detailansicht. Die Methode "detail" wird nun für den Datentyp Contact aufgerufen. 8

3 Erstellen von XSL-Templates <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:onion="http://onionworks.net/2004/data" version="1.0" > <xsl:output method="xml" omit-xml-declaration="yes" indent="no" <xsl:template match="/result"> <xsl:for-each select="row"> <h1> <xsl:value-of select="concat(@firstname, ' ', @lastname)" </h1> <ul> <li>age: <xsl:value-of select="@age" </li> <li>male: <xsl:value-of select="@male" </li> </ul> </xsl:for-each> </xsl:template> </xsl:stylesheet> 9