Aracılığıyla paylaş


sql:encode (SQLXML 4.0) kullanarak BLOB verilerine URL referansları talep edilmesi

Şunlar için geçerlidir:SQL ServerAzure SQL Veritabanı

Açıklamalı bir XSD şemasında, bir öznitelik (veya eleman) Microsoft SQL Server'da bir BLOB sütununa eşlendiğinde, veri XML içinde Base 64 kodlanmış formatta döner.

Veriye bir referans (URI) iade edilmesini ve daha sonra BLOB verilerini ikili formatta almak için kullanılmasını istiyorsanız, sql:encode annotasyonunu belirtin. sql:encode'u basit tipte bir öznitelik veya eleman üzerinde belirtebilirsiniz.

Alanın değeri yerine alana bir URL gönderilmesi gerektiğini belirtmek için sql:encode annotasyonunu belirtin. sql:encode , URL'de tek bir seçim oluşturmak için birincil anahtara bağlıdır. Birincil anahtar, sql:key-fields açıklaması kullanılarak belirtilebilir.

sql:encode annotasyonuna "url" veya "default" değeri atanabilir. "Default" değeri, Base 64 kodlu formatta veri döndürür.

sql:encode annotasyonu sql:use-cdata ile veya ID, IDREF, IDREFS, NMTOKEN veya NMTOKEN özellik tiplerinde kullanılamaz. Ayrıca XSD sabit öznitelikle de kullanılamaz.

Uyarı

BLOB tipi sütunlar, bir anahtarın veya yabancı anahtarın parçası olarak kullanılamaz.

Örnekler

Aşağıdaki örneklerle çalışma örnekleri oluşturmak için belirli gereksinimleri karşılamanız gerekir. Daha fazla bilgi için Gereksinimler için SQLXML Örnekleri Çalışması için Gereksinimlere bakınız.

A. BLOB verilerine URL referansı elde etmek için sql:encode belirtilmesi

Bu örnekte, eşleme şeması LargePhoto özniteliğinde sql:encode'u belirli bir ürün fotoğrafına URI referansını almak için belirtir (Base 64 kodlu formatta ikili veri almak yerine).

<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>  
Örnek XPath sorgusunu şema karşısında test etmek için
  1. Yukarıdaki şema kodunu kopyalayıp metin dosyasına yapıştırın. Dosyayı sqlEncode.xmlolarak kaydet.

  2. Aşağıdaki şablonu kopyalayın ve bir metin dosyasına yapıştırın. Dosyayı aynı dizinde sqlEncodeT.xml olarak kaydet sqlEncode.xml.

    <ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
        <sql:xpath-query mapping-schema="sqlEncode.xml">  
            /ProductPhoto[@ProductPhotoID=100]  
        </sql:xpath-query>  
    </ROOT>  
    

    Eşleme şeması (sqlEncode.xml) için belirtilen dizin yolu, şablonun kaydedildiği dizine görecelidir. Mutlak bir yol da belirtilebilir, örneğin:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Şablonu çalıştırmak için SQLXML 4.0 Test Script'i (Sqlxml4test.vbs) oluşturun ve kullanın.

    Daha fazla bilgi için bkz. SQLXML 4.0 Sorguları Yürütmek için ADO Kullanma.

Sonuç şu şekildedir:

<ROOT xmlns:sql="urn:schemas-microsoft-com:xml-sql">  
   <ProductPhoto ProductPhotoID="100"  
                 LargePhoto="dbobject/Production.ProductPhoto[@ProductPhotoID="100"]/@LargePhoto" />   
</ROOT>