DB als Datenquellen
In diesem Abschnitt:
•Informationen zu DB-Datenquellen
•Informationen zu OriginalRowSet (Originalzeilengruppe)
•Primärschlüssel in MobileTogether Designer
Informationen zu DB-Datenquellen
Sie können zu einem Seitendesign beliebig viele DB-Datenquellen als Seitenquellen hinzufügen und darin verwenden. Ob eine DB-Seitenquelle editierbar oder nicht editierbar ist, wird zu dem Zeitpunkt definiert, zu dem die Seitenquelle hinzugefügt wird. Definieren Sie eine DB-Seitenquelle als nicht editierbar, wenn ihre Daten nur für Darstellungszwecke benötigt werden. Machen Sie die Seitenquelle editierbar, wenn ein Client die DB-Daten bearbeiten können soll.
Wenn eine DB-Quelle hinzugefügt wird, wird eine Datenstruktur generiert (siehe Abbildung unten und Abschnitt Struktur der Seitenquelle weiter unten). Jede DB-Tabellenzeile entspricht einem Row-Element; die Spalten der Tabelle werden als Attribute des Row-Elements hinzugefügt. Wenn die Seitenquelle auf mehreren Seiten verwendet wird, so kann eine einzige Struktur von allen Instanzen der Seitenquelle gemeinsam verwendet werden. Die Option, eine Struktur gemeinsam zu verwenden, steht jedes Mal, wenn eine auch auf einer anderen Seite verwendete Seitenquelle hinzugefügt wird, zur Verfügung. Wenn eine gemeinsam verwendete Struktur geändert wird, haben Sie die Option, die gemeinsam verwendete Seitenquelle in ihren auf mehreren Seiten verwendeten Instanzen zu ändern; alternativ dazu wird die Seitenquelle nur in der Instanz geändert, in der sie geändert wurde.
Anmerkung: | Wenn SQL-Anweisungen in einer Seitenquelle gespeichert sind, können diese Firewall-Regeln auslösen, während das Design auf einem Client-Gerät ausgeführt wird. Um dies zu verhindern, wird empfohlen, eine der folgenden Optionen zu verwenden: (i) Definieren Sie als Seitenquelleneigenschaft Daten aufbewahren auf Nur Server; (ii) Verwenden Sie für Client-Verbindungen eine SSL-Verschlüsselung; (iii) setzen Sie die SQL-Anweisung bei Bedarf auf dem Server zusammen. |
Wechseln von Seitenquellen
Nachdem Sie ein Design erstellt haben, in dem eine Datenbank als Seitenquelle verwendet wird, können Sie zu einer anderen Datenbank mit derselben Struktur wechseln und weiterhin das ursprüngliche Design verwenden. Um die Datenbanken einer Seitenquelle zu wechseln, klicken Sie mit der rechten Maustaste auf den $DB-Root-Node der Struktur, wählen Sie den Befehl DB-Datenquelle auswählen und stellen Sie die DB-Verbindung her.
Die Struktur von zwei Datenbanken wird als identisch betrachtet, wenn sie dieselben Tabellennamen, dieselben Spaltennamen und dieselben Spaltendefinitionen haben. Wenn sich die neue Struktur auf irgendeine Weise von der alten unterscheidet, wird die Seitenquelle nicht mit den Daten aus der neuen Datenbank aktualisiert, obwohl die Verbindung zur Datenbank hergestellt wird. Wenn der DB-Wechsel abgebrochen wird, so wird als Seitenquelle weiterhin die ursprüngliche Datenbank verwendet.
Anmerkung: | Wenn die Groß- und Kleinschreibung in den vom Wechsel betroffenen Datenbanken nicht auf die gleiche Weise behandelt wird, müssen Sie SQL-Anweisungen, XPath-Ausdrücke und andere Konstrukte, in denen Namen verwendet werden, die nicht mehr mit den tatsächlichen übereinstimmen, anpassen. |
Struktur der DB-Seitenquelle
Jede DB-Seitenquelle hat die folgenden Struktur:
$DBX (der Root-Node)
|
|--DB (das Root-Element)
| |
| |--RowSet (ein Container-Element für die Zeilen der Datenbanktabelle)
| | |
| | |--Row (die Zeilen der DB-Tabelle)
| | | |
| | | |--<Attributes> (die Spalten der DB-Tabelle)
Wenn Sie eine DB-Seitenquelle hinzufügen, können Sie auswählen, ob damit in Zusammenhang stehenden Tabellen hinzugefügt werden sollen. Wenn eine DB-Seitenquelle damit in Zusammenhang stehende Tabellen hat, werden diese als Child-Nodes der Haupttabelle angezeigt. Diese Child-Nodes können wie üblich Steuerelementen des Designs zugewiesen werden. Wenn die Daten in der DB gespeichert werden, werden die Child Nodes als zur Hierarchie der Seitenquelle gehörend betrachtet und entsprechend gespeichert.
Die Nodes in der Struktur können über XPath-Ausdrücke aufgerufen werden. Wenn ein Node (über das Kontextmenü des Node) als XPath-Kontext-Node für die Seite definiert wurde, können XPath-Ausdrücke relativ zu diesem Kontext-Node erstellt werden. Andernfalls werden Nodes über absolute Pfade, die am Root-Node beginnen, aufgerufen: $DBX/DB/RowSet/Row/MyAttribute.
Sie können Daten in der DB-Struktur auch mittels XQuery-Ausdrücken aufrufen. Ein Beispiel dazu finden Sie im Abschnitt unten zu Primärschlüsseln.
Informationen zu OriginalRowSet (Originalzeilengruppe)
Damit Daten bearbeitet und gespeichert werden können, muss die Struktur der Seitenquelle auch ein OriginalRowSet-Element enthalten, das eine Kopie des Elements RowSet ist. Die Originaldaten werden im Element OriginalRowSet gespeichert, während bearbeitete Daten im Element RowSet gespeichert werden. Wenn die Seitenquelle gespeichert wird, wird der Unterschied zwischen der OriginalRowSet- und der RowSet-Struktur berechnet und die Seitenquelle wird anhand dieser Unterschiede aktualisiert. Wenn die Änderung erfolgreich durchgeführt werden konnte, so werden die geänderten Daten in OriginalRowSet kopiert, sodass OriginalRowSet die neu gespeicherten DB-Daten enthält und der Vorgang kann wiederholt werden.
Beachten Sie die folgenden Punkte:
•Das Element OriginalRowSet wird in der Struktur der Datenbank-Seitenquelle standardmäßig nicht erstellt. Um es zu erstellen, klicken Sie mit der rechten Maustaste auf den Root Node der Seitenquelle und schalten Sie den Befehl Originalzeilengruppe erstellen ein.
•Der Befehl Originalzeilengruppe erstellen ist für Root Nodes vom Typ "Datenbank" (DB) aktiv. Es handelt sich um einen Ein/Aus-Befehl, der eine OriginalRowSet-Datenstruktur, die die Originaldaten der Seitenquelle enthält, erstellt bzw. entfernt.
•Bis zu dem Zeitpunkt, zu dem die geänderten Daten in der DB gespeichert werden, werden die Originaldaten der DB in der OriginalRowSet-Struktur beibehalten. Auf diese Art wird sichergestellt, dass die Original-Datenbankdaten in der Struktur weiterhin verfügbar sind.
•Um die Originaldaten einer geänderten, aber noch nicht gespeicherten DB-Zeile abzurufen, verwenden Sie die XPath-Funktion mt-db-original-row.
XPath-Funktionen zum Abrufen von Datenbankdaten oder Datenbankinformationen
Es steht eine Reihe von MobileTogether-XPath-Erweiterungsfunktionen zum Abrufen von Datenbankdaten und Informationen über die Datenbank zur Verfügung. Diese Funktionen haben Namen, die mit mt-db beginnen und sind im Kapitel MobileTogether-Erweiterungsfunktionen beschrieben.
Primärschlüssel in MobileTogether Designer
Primärschlüssel in Datenbanken werden normalerweise automatisch inkrementiert. Wenn das der Fall ist und eine neue Spalte zur Tabelle hinzugefügt wird, wird die Primärschlüsselspalte der hinzugefügten Zeile automatisch inkrementiert. Wenn in MobileTogether Designer eine Tabelle abgerufen wird, werden die Primärschlüssel- und Autoinkrementierungsinformationen automatisch abgerufen und im Fenster "Seitenquellen" angezeigt (siehe Abbildung unten).
Wenn diese Informationen nicht automatisch abgerufen werden konnten, enthält das Kontextmenü von Struktur-Nodes Ein/Aus-Befehle, mit denen Sie Nodes korrekt entsprechend kennzeichnen können (siehe Abbildung unten).
Wenn die Primärschlüsselspalte nicht automatisch inkrementiert wird, müssen neue Primärschlüsselwerte für angehängte Zeilen automatisch mit Hilfe eines XQuery-Ausdrucks generiert werden, da Primärschlüsselspalten nicht bearbeitet werden können. Der XQuery-Ausdruck wird über den Kontextmenübefehl Beim Laden auf Vorhandensein überprüfen (XPath-Wert) des Primärschlüssel-Node eingefügt. Im Beispiel unten wird mit dem folgenden XQuery-Ausdruck ein neuer Wert für den Primärschlüssel @id generiert:
let $all := $DB1/DB/RowSet/Row/@id
let $ids := remove($all, index-of($all, ""))
let $id := if (empty($ids)) then 1 else max($ids) + 1
return $id