Bagikan melalui


Gambaran Umum Penyedia Sederhana Microsoft OLE DB

Penyedia Sederhana (OSP) Microsoft OLE DB memungkinkan ADO mengakses data apa pun yang telah ditulis penyedia menggunakan Toolkit Penyedia Sederhana (OSP) OLE DB. Penyedia sederhana dimaksudkan untuk mengakses sumber data yang hanya memerlukan dukungan OLE DB mendasar, seperti array dalam memori atau dokumen XML.

Parameter String Koneksi

Untuk menyambungkan ke DLL Penyedia Sederhana OLE DB, atur argumen Penyedia ke properti ConnectionString ke:

MSDAOSP

Nilai ini juga dapat diatur atau dibaca menggunakan properti Penyedia .

Anda dapat terhubung ke penyedia sederhana yang telah terdaftar sebagai penyedia OLE DB penuh dengan menggunakan nama penyedia terdaftar, yang ditentukan oleh penulis penyedia.

String Koneksi Umum

String koneksi umum untuk penyedia ini adalah:

"Provider=MSDAOSP;Data Source=serverName"

String terdiri dari kata kunci ini:

Kata kunci Deskripsi
Penyedia Menentukan penyedia OLE DB untuk SQL Server.
Sumber Data Menentukan nama server.

Contoh Dokumen XML

Penyedia Sederhana (OSP) OLE DB di MDAC 2.7 atau yang lebih baru dan Windows Data Access Components (Windows DAC) telah ditingkatkan untuk mendukung pembukaan hierarkis ADO Recordsets melalui file XML arbitrer. File XML ini mungkin berisi skema persistensi XML ADO, tetapi tidak diperlukan. Ini telah diimplementasikan dengan menghubungkan OSP ke MSXML2.DLL; oleh karena itu MSXML2.DLL atau yang lebih baru diperlukan.

File portfolio.xml yang digunakan dalam contoh berikut berisi pohon berikut:

Portfolio
   Stock
      Shares
      Symbol
      Price
      Info
         Company Name
         WebSite

DSO XML menggunakan heuristik bawaan untuk mengonversi simpul di pohon XML menjadi bab dalam Recordset hierarkis.

Dengan menggunakan heuristik bawaan ini, pohon XML dikonversi menjadi Recordset hierarkis dua tingkat dari formulir berikut:

Parent Recordset
Shares, Symbol, Price, $Text
   Child Recordset
      Company Name, WebSite, $Text

Perhatikan bahwa tag Portofolio dan Info tidak diwakili dalam Recordset hierarkis. Untuk penjelasan tentang bagaimana DSO XML mengonversi pohon XML menjadi Recordset hierarkis, lihat aturan berikut ini. Kolom $Text dibahas di bagian berikut.

Aturan untuk Menetapkan Elemen xml dan Atribut ke Kolom dan Baris

DSO XML mengikuti prosedur untuk menetapkan elemen dan atribut ke kolom dan baris dalam aplikasi yang terikat data. XML dimodelkan sebagai pohon dengan satu tag yang berisi seluruh hierarki. Misalnya, deskripsi XML buku dapat berisi tag bab, tag gambar, dan tag bagian. Pada tingkat tertinggi adalah tag buku, yang berisi bab, gambar, dan bagian sublemen. Saat DSO XML memetakan elemen XML ke baris dan kolom, sublemen, bukan elemen tingkat atas, dikonversi.

DSO XML menggunakan prosedur ini untuk mengonversi sublemen:

  • Setiap subelemen dan atribut sesuai dengan kolom di beberapa Recordset dalam hierarki.

  • Nama kolom sama dengan nama subelemen atau atribut, kecuali elemen induk memiliki atribut dan sublemen dengan nama yang sama, dalam hal ini "!" telah ditambahkan ke nama kolom subelemen.

  • Setiap kolom adalah kolom sederhana yang berisi nilai skalar (biasanya string) atau kolom Recordset yang berisi Recordset anak.

  • Kolom yang sesuai dengan atribut selalu sederhana.

  • Kolom yang terkait dengan subelemen adalah kolom Recordset jika subelemen memiliki subelemen atau atributnya sendiri (atau keduanya), atau induk sublemen memiliki lebih dari satu instans subelemen sebagai anak. Jika tidak, kolomnya sederhana.

  • Ketika ada beberapa contoh sublemen (di bawah orang tua yang berbeda), kolomnya adalah kolom Recordset jika salah satu instans menyiratkan kolom Recordset ; kolomnya sederhana hanya jika semua instans menyiratkan kolom sederhana.

  • Semua Recordset memiliki kolom tambahan bernama $Text.

Kode yang diperlukan untuk membuat Recordset adalah sebagai berikut:

Dim adoConn as ADODB.Connection
Dim adoRS as ADODB.Recordset

Set adoRS = New ADODB.Connection
Set adoRS = New ADODB.Recordset

adoConn.Open "Provider=MSDAOSP; Data Source=MSXML2.DSOControl.2.6;"
adoRS.Open "https://WebServer/VRoot/portfolio.xml, adoConn

Catatan

Jalur file data dapat ditentukan dengan menggunakan empat konvensi penamaan yang berbeda.

'HTTP://
adoRS.Open "https://WebServer/VRoot/portfolio.xml", adoConn
'FILE://
adoRS.Open "file:/// C:\\Directory\\portfolio.xml", adoConn
'UNC Path
adoRS.Open "\\ComputerName\ShareName\portfolio.xml", adoConn
'Full DOS Path
adoRS.Open "C:\Directory\portfolio.xml", adoConn

Segera setelah Recordset dibuka, perintah navigasi ADO Recordset yang biasa dapat digunakan.

Recordset yang dihasilkan oleh OSP memiliki beberapa batasan:

  • Kursor klien (adUseClient) tidak didukung.

  • Recordset Hierarkis yang dibuat melalui XML arbitrer tidak dapat dipertahankan menggunakan Recordset.Save.

  • Recordset yang dibuat dengan OSP bersifat baca-saja.

  • XMLDSO menambahkan kolom data tambahan ($Text) ke setiap Recordset dalam Hierarki.

Untuk informasi selengkapnya tentang Penyedia Sederhana OLE DB, lihat Membangun Penyedia Sederhana.

Contoh Kode

Kode Visual Basic berikut menunjukkan pembukaan file XML arbitrer, membuat Recordset hierarkis, dan menulis setiap rekaman setiap Recordset secara rekursif ke jendela debug.

Berikut adalah file XML sederhana yang berisi kuotasi stok. Kode berikut menggunakan file ini untuk membuat Recordset hierarkis dua tingkat.

<portfolio>
   <stock>
      <shares>100</shares>
      <symbol>MSFT</symbol>
      <price>$70.00</price>
      <info>
         <companyname>Microsoft Corporation</companyname>
         <website>https://www.microsoft.com</website>
      </info>
   </stock>
   <stock>
      <shares>100</shares>
      <symbol>AAPL</symbol>
      <price>$107.00</price>
      <info>
         <companyname>Apple Computer, Inc.</companyname>
         <website>https://www.apple.com</website>
      </info>
   </stock>
   <stock>
      <shares>100</shares>
      <symbol>DELL</symbol>
      <price>$50.00</price>
      <info>
         <companyname>Dell Corporation</companyname>
         <website>https://www.dell.com</website>
      </info>
    </stock>
    <stock>
       <shares>100</shares>
       <symbol>INTC</symbol>
       <price>$115.00</price>
       <info>
          <companyname>Intel Corporation</companyname>
          <website>https://www.intel.com</website>
       </info>
   </stock>
</portfolio>

Berikut ini adalah dua sub prosedur Visual Basic. Yang pertama membuat Recordset dan meneruskannya ke sub prosedur WalkHier , yang secara rekursif berjalan menyusuri hierarki, menulis setiap Bidang di setiap rekaman di setiap Recordset ke jendela debug.

Private Sub BrowseHierRecordset()
' Add ADO 2.7 or later to Project/References
' No need to add MSXML2, ADO just passes the ProgID through to the OSP.

    Dim adoConn As ADODB.Connection
    Dim adoRS As ADODB.Recordset
    Dim adoChildRS As ADODB.Recordset

    Set adoConn = New ADODB.Connection
    Set adoRS = New ADODB.Recordset
    Set adoChildRS = ADODB.Recordset

    adoConn.Open "Provider=MSDAOSP; Data Source=MSXML2.DSOControl.2.6;"
    adoRS.Open "https://bwillett3/Kowalski/portfolio.xml", adoConn

    Dim iLevel As Integer
    iLevel = 0
    WalkHier iLevel, adoRS

End Sub

Sub WalkHier(ByVal iLevel As Integer, ByVal adoRS As ADODB.Recordset)
    iLevel = iLevel + 1
    PriorLevel = iLevel
    While Not adoRS.EOF
        For ndx = 0 To adoRS.Fields.Count - 1
            If adoRS.Fields(ndx).Name <> "$Text" Then
                If adoRS.Fields(ndx).Type = adChapter Then
                    Set adoChildRS = adoRS.Fields(ndx).Value
                    WalkHier iLevel, adoChildRS
                Else
                    Debug.Print iLevel & ": adoRS.Fields(" & ndx & _
                       ") = " & adoRS.Fields(ndx).Name & " = " & _
                       adoRS.Fields(ndx).Value
                End If
            End If
        Next ndx
        adoRS.MoveNext
    Wend
    iLevel = PriorLevel
End Sub