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