Microsoft Azure Tabellen API
Nach oben zu Azure- und Cloud-Computing mit DataSnap
Warnung: Die DSAzure-API ist veraltet und wurde durch die Data.Cloud.AzureAPI ersetzt. Es wird empfohlen, die neue API für die Entwicklung von Cloud-Computing-Anwendungen zu verwenden. Weitere Informationen finden Sie unter Cloud-Computing mit DataSnap.
Die Microsoft Azure Tabellen API befindet sich in der Unit DSAzure in der Klasse TAzureTableService. Ein Beispiel dazu, wie die API verwendet wird, finden Sie im Abschnitt "implementation" der Units DSAzureTable und DSAzureTableDialog. Diese visuelle Komponente verwendet die API.
Inhaltsverzeichnis
Zu den verfügbaren Funktionen zählen: Erstellen einer Tabelle, Löschen einer Tabelle, Ermitteln der verfügbaren Tabellen, Ermitteln der Zeilen (Entitäten) einer Tabelle, Hinzufügen einer Zeile zu einer Tabelle und Löschen von Zeilen einer Tabelle. Bitte beachten Sie, dass Zeilen keinem Schema entsprechen und dass jede Zeile unterschiedliche Spalten (Eigenschaften) haben kann. Beachten Sie darüber hinaus, dass alle Zeilen mindestens zwei Spalten haben, die gemeinsam einen eindeutigen Schlüssel für diese Zeile bilden: PartitionKey und RowKey. Alle Zeilen verfügen auch über einen Zeitstempel, der aber nicht für Benutzer bereitgestellt oder von diesen bearbeitet werden sollte.
Die folgenden Anweisungen setzten voraus, dass Sie bereits eine Instanz von TAzureTableService erstellt haben. In den Codefragmenten wird diese Instanz mit FTableService bezeichnet. Darüber hinaus wird vorausgesetzt, dass Sie über einen XML-Parser verfügen und dass dieser bereits entsprechend konfiguriert ist. Die API gibt in einigen Fällen XML-Code zurück. Sie müssen in der Lage sein, XML-Code zu analysieren.
Ermitteln einer Tabellenliste
Rufen Sie zum Ermitteln der verfügbaren Tabellen Folgendes auf:
xml := FTableService.QueryTables();
Der zurückgegebene XML-String sieht etwa folgendermaßen aus:
<feed ...> ... <entry> <id>http://myaccount.tables.core.windows.net/Tables('mytable')</id> ... <content type="application/xml"> <m:properties> <d:TableName>mytable</d:TableName> </m:properties> </content> </entry> </feed>
Ein vollständiges Beispiel mit dem zurückgegebenen XML-Code und weiteren Informationen finden Sie über den unten angegebenen MSDN-Link.
Der XML-Code enthält Einträge, wobei jeder Eintrag für eine Tabelle steht. Die Tabelle verfügt über eine ID und eine Liste mit Eigenschaften, die auch den Tabellennamen enthält.
Erstellen einer Tabelle
Rufen Sie zum Erstellen einer Tabelle einfach Folgendes auf:
Success := FTableService.CreateTable('tablename');
CreateTable gibt bei Erfolg True zurück, ansonsten False. Für den Namen, den Sie für die Tabelle auswählen, gelten die folgenden Namenskonventionen:
- Es sind nur Kleinbuchstaben zulässig.
- Es dürfen nur alphanumerische Zeichen verwendet werden.
- Der Name darf nicht mit einem numerischen Zeichen beginnen.
- Der Name muss zwischen 3 und 63 Zeichen lang sein.
Löschen einer Tabelle
Verwenden Sie zum Löschen einer Tabelle den folgenden Code:
Success := FTableService.DeleteTable(FTableName);
Beachten Sie bitte, dass das Löschen auf dem Server einige Zeit in Anspruch nehmen kann. Obwohl es so aussieht, als ob die Tabelle gelöscht ist, könnte das Erstellen einer neuen Tabelle mit demselben Namen fehlschlagen. Wählen Sie in diesem Fall einen anderen Namen, oder warten Sie etwas, und versuchen Sie es erneut.
Auflisten der Zeilen einer Tabelle
Rufen Sie zum Ermitteln der Zeilen (Entitäten) einer Tabelle Folgendes auf:
xml := FTableService.QueryEntities(FTableName, BuildFilterString);
Der zurückgegebene XML-Code sieht folgendermaßen aus:
<feed ...> ... <entry ...> <id>http://myaccount.tables.core.windows.net/Customers(PartitionKey='SomePKey',RowKey='SomeRKey')</id> ... <content type="application/xml"> <m:properties> <d:PartitionKey>SomePKey</d:PartitionKey> <d:RowKey>SomeRKey</d:RowKey> <d:Timestamp m:type="Edm.DateTime">2008-10-01T15:26:04.6812774Z</d:Timestamp> <d:Address>221 Avenue Road, Hollywood CA 90027</d:Address> <d:SomeNumber m:type="Edm.Int32">27</d:SomeNumber> </m:properties> </content> </entry> </feed>
Ein vollständiges Beispiel mit dem zurückgegebenen XML-Code und allen enthaltenen Informationen finden Sie über den unten angegebenen MSDN-Link.
Jede Zeile wird im XML-Code als entry dargestellt und verfügt über eine eigene eindeutige ID. Der Knoten content enthält Eigenschaften, die die Tabellenspalten repräsentieren. Jede Spalte hat einen Namen (das Tag) und einen Wert und kann auch einen Typ (type) aufweisen. Dieser Typ ist einer der unterstützten Datentypen (die unterstützten Datentypen finden Sie über den Link zur MSDN-Dokumentation am Ende dieses Themas).
Hinzufügen einer Zeile zu einer Tabelle
Um in einer vorhandenen Tabelle eine Zeile zu erstellen, müssen Sie zunächst ein TJSONObject-Objekt (mit der Unit DBXJSON), das die Zeile repräsentiert, mit allen Spalten (außer Timestamp) anlegen. Wenn Sie die JSON-Notation verwenden, könnte das Objekt etwa folgendermaßen aussehen:
{"RowKey":"row1","PartitionKey":"Imported","AnyKeyName":"Hello World!"} {"RowKey":"row2","PartitionKey":"Imported","OtherValue":["true","Edm.Boolean"]}
Das Objekt muss die Spalten RowKey und PartitionKey und dann beliebige andere Spalten-/Wertepaare enthalten. Wenn Sie für eine Spalte keinen Datentyp angeben, wird der Typ String verwendet. Wenn Sie einen Datentyp für den Wert einer Spalte angeben möchten, legen Sie die Spalte als TJSONArray fest. Das erste Element des Arrays ist dabei die String-Repräsentation des Wertes der Spalte (Zelle) und das zweite der Datentyp für die Spalte. Beachten Sie bitte, dass Sie den Wert von PartitionKey und RowKey nach dem Erstellen der Zeile nicht mehr ändern können.
Wenn Sie das TJSONObject-Objekt erstellt haben, rufen Sie diesen Code auf (wobei RowObj die erstellte TJSONObject-Instanz ist):
xml := FTableService.InsertEntity('tablename', RowObj);
Sie erhalten die XML-Repräsentation der Zeile, die Sie soeben hinzugefügt haben, im selben Format wie bei der Abfrage aller Tabellenzeilen; nur das Element der obersten Ebene ist entry, weil der XML-Code nur diese eine Zeile repräsentiert.
Ändern einer vorhandenen Zeile
Wenn Sie eine vorhandene Zeile ändern möchten, erstellen Sie das TJSONObject-Objekt auf dieselbe Weise wie für das Hinzufügen einer neuen Zeile, füllen die Spalten RowKey und PartitionKey aber entsprechend. Anstelle des Aufrufs von InsertEntry rufen Sie hier UpdateEntry (mit denselben Parametern) auf. Sie erhalten dann True oder False, je nachdem ob die Aktualisierung erfolgreich war oder nicht. Eine Aktualisierung würde beispielsweise fehlschlagen, wenn ein für eine Spalte ausgewählter Datentyp nicht für den in der Spalte gespeicherten Wert gültig ist.
Löschen einer Zeile
Rufen Sie zum Löschen einer Zeile aus einer vorhandenen Tabelle Folgendes auf:
Success := FTableService.DeleteEntity('tablename', PartitionKey, RowKey);
Sie müssen dazu nur den Partitionsschlüssel (PartitionKey) und den Zeilenschlüssel (RowKey) der zu löschenden Zeile und den Namen der Tabelle kennen, die die Zeile enthält.
Wenn das Löschen erfolgreich war, wird True zurückgegeben.