Anfordern von URL-Verweisen auf BLOB-Daten mit 'sql:encode' (SQLXML 4.0)
Wenn in einem XSD-Schema mit Anmerkungen ein Attribut (oder Element) einer BLOB-Spalte in Microsoft SQL Server zugeordnet ist, werden die Daten im codierten Base-64-Format innerhalb von XML zurückgegeben.
Wenn ein Verweis auf die Daten (ein URI) zurückgegeben werden soll, der später zum Abrufen der BLOB-Daten in einem binären Format verwendet werden kann, geben Sie die sql:encode-Anmerkung an. Sie können sql:encode für ein Attribut oder Element des einfachen Typs angeben.
Legen Sie die sql:encode-Anmerkung fest, um anzugeben, dass statt des Werts im Feld eine URL zum Feld zurückgegeben werden soll. sql:encode ist auf den Primärschlüssel angewiesen, um eine SINGLETON-Auswahl in der URL zu generieren. Der Primärschlüssel kann mit der sql:key-fields-Anmerkung angegeben werden.
Der sql:encode-Anmerkung kann der Wert "url" oder "default" zugewiesen werden. Mit dem Wert "default" werden die Daten im codierten Base-64-Format zurückgegeben.
Die sql:encode-Anmerkung kann nicht mit sql:use-cdata oder für die Attributtypen ID, IDREF, IDREFS, NMTOKEN und NMTOKENS verwendet werden. Außerdem kann sie nicht mit dem fixedat-XSD-Attribut verwendet werden.
Hinweis |
---|
BLOB-Spalten können nicht als Teil eines Schlüssels oder Fremdschlüssels verwendet werden. |
Beispiele
Bestimmte Anforderungen müssen erfüllt werden, um aus den folgenden Beispielen funktionierende Codebeispiele zu erstellen. Weitere Informationen finden Sie unter Anforderungen zum Ausführen von SQLXML-Beispielen.
A. Angeben von 'sql:encode', um einen URL-Verweis auf BLOB-Daten zu erhalten
In diesem Beispiel gibt das Zuordnungsschema sql:encode für das LargePhoto-Attribut an, um den URI-Verweis auf ein bestimmtes Produktfoto (statt der binären Daten im codierten Base-64-Format) abzurufen.
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:sql="urn:schemas-microsoft-com:mapping-schema">
<xsd:element name="ProductPhoto" sql:relation="Production.ProductPhoto"
sql:key-fields="ProductPhotoID" >
<xsd:complexType>
<xsd:attribute name="ProductPhotoID" type="xsd:int" />
<xsd:attribute name="LargePhoto" type="xsd:string" sql:encode="url" />
</xsd:complexType>
</xsd:element>
</xsd:schema>
So testen Sie eine XPath-Beispielabfrage mit dem Schema
Kopieren Sie den oben stehenden Schemacode, und fügen Sie ihn in eine Textdatei ein. Speichern Sie die Datei unter dem Dateinamen sqlEncode.xml.
Kopieren Sie die folgende Vorlage, und fügen Sie sie in eine Textdatei ein. Speichern Sie die Datei unter dem Namen sqlEncodeT.xml im gleichen Verzeichnis, in dem Sie sqlEncode.xml gespeichert haben.
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql"> <sql:xpath-query mapping-schema="sqlEncode.xml"> /ProductPhoto[@ProductPhotoID=100] </sql:xpath-query> </ROOT>
Der für das Zuordnungschema (sqlEncode.xml) angegebene Verzeichnispfad bezieht sich auf das Verzeichnis, in dem die Vorlage gespeichert wird. Es kann auch ein absoluter Pfad angegeben werden. Beispiel:
mapping-schema="C:\SqlXmlTest\sqlEncode.xml"
Erstellen und verwenden Sie das SQLXML 4.0-Testskript (Sqlxml4test.vbs), um die Vorlage auszuführen.
Weitere Informationen finden Sie unter Verwenden von ADO zum Ausführen von SQLXML 4.0-Abfragen.
Dies ist das Ergebnis:
<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">
<ProductPhoto ProductPhotoID="100"
LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto" />
</ROOT>