Bagikan melalui


Meminta Referensi URL ke Data BLOB Menggunakan sql:encode (SQLXML 4.0)

Berlaku untuk: SQL ServerAzure SQL Database

Dalam skema XSD yang dianotasikan, ketika atribut (atau elemen) dipetakan ke kolom BLOB di Microsoft SQL Server, data dikembalikan dalam format yang dikodekan Base 64 dalam XML.

Jika Anda ingin referensi ke data (URI) dikembalikan yang dapat digunakan nanti untuk mengambil data BLOB dalam format biner, tentukan anotasi sql:encode . Anda dapat menentukan sql:encode pada atribut atau elemen jenis sederhana.

Tentukan anotasi sql:encode untuk menunjukkan bahwa URL ke bidang harus dikembalikan alih-alih nilai bidang . sql:encode tergantung pada kunci primer untuk menghasilkan satuton pilih di URL. Kunci primer dapat ditentukan menggunakan anotasi sql:key-fields .

Anotasi sql:encode dapat diberi nilai "url" atau "default". Nilai "default" mengembalikan data dalam format berkode Base 64.

Anotasi sql:encode tidak dapat digunakan dengan jenis atribut sql:use-cdata atau pada ID, IDREF, IDREFS, NMTOKEN, atau NMTOKENS. Ini juga tidak dapat digunakan dengan atribut tetap XSD.

Catatan

Kolom jenis BLOB tidak dapat digunakan sebagai bagian dari kunci atau kunci asing.

Contoh

Untuk membuat sampel kerja menggunakan contoh berikut, Anda harus memenuhi persyaratan tertentu. Untuk informasi selengkapnya, lihat Persyaratan untuk Menjalankan Contoh SQLXML.

J. Menentukan sql:encode untuk mendapatkan referensi URL ke data BLOB

Dalam contoh ini, skema pemetaan menentukan sql:encode pada atribut LargePhoto untuk mengambil referensi URI ke foto produk tertentu (alih-alih mengambil data biner dalam format yang dikodekan Base 64).

<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>  
Untuk menguji sampel kueri XPath terhadap skema
  1. Salin kode skema di atas dan tempelkan ke dalam file teks. Simpan file sebagai sqlEncode.xml.

  2. Salin templat berikut dan tempelkan ke dalam file teks. Simpan file sebagai sqlEncodeT.xml di direktori yang sama tempat Anda menyimpan 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>  
    

    Jalur direktori yang ditentukan untuk skema pemetaan (sqlEncode.xml) relatif terhadap direktori tempat templat disimpan. Jalur absolut juga dapat ditentukan, misalnya:

    mapping-schema="C:\SqlXmlTest\sqlEncode.xml"  
    
  3. Buat dan gunakan Skrip Pengujian SQLXML 4.0 (Sqlxml4test.vbs) untuk menjalankan templat.

    Untuk informasi selengkapnya, lihat Menggunakan ADO untuk Menjalankan Kueri SQLXML 4.0.

Ini adalah hasilnya:

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