Bagikan melalui


Mengakses Data XML

Ada dua metode terpisah untuk mengambil data XML dari sumber data: satu menggunakan CStreamRowset dan yang lain menggunakan CXMLAccessor.

Fungsi CStreamRowset CXMLAccessor
Jumlah data yang ditransfer Mengambil data dari semua kolom dan baris sekaligus. Mengambil data dari semua kolom tetapi hanya satu baris pada satu waktu. Anda harus menavigasi baris menggunakan metode seperti MoveNext.
Memformat string SQL Server memformat string XML dan mengirimkannya ke konsumen. Mengambil data himpunan baris dalam format aslinya (permintaan yang dikirim penyedia sebagai string Unicode) lalu membangun string yang menyimpan data dalam format XML.
Kontrol atas pemformatan Anda memiliki beberapa tingkat kontrol atas bagaimana string XML diformat dengan mengatur beberapa properti khusus SQL Server 2000. Anda tidak memiliki kontrol atas format string XML yang dihasilkan.

Meskipun CStreamRowset menyediakan cara yang lebih efisien secara keseluruhan untuk mengambil data dalam format XML, itu hanya didukung oleh SQL Server 2000.

Mengambil data XML menggunakan CStreamRowset

Anda menentukan CStreamRowset sebagai jenis set baris dalam deklarasi atau CTable AndaCCommand. Anda dapat menggunakannya dengan aksesor Anda sendiri atau tanpa aksesor, misalnya:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

-atau-

CCommand<CNoAccessor, CStreamRowset> myCmd;

Biasanya ketika Anda memanggil CCommand::Open (menentukan, misalnya, CRowset sebagai TRowset kelas), ia mendapatkan pointer IRowset . ICommand::Execute mengembalikan pointer IRowset , yang disimpan dalam m_spRowset anggota CRowset objek. Metode seperti MoveFirst, MoveNext, dan GetData gunakan penunjuk tersebut untuk mengambil data.

Sebaliknya, saat Anda memanggil CCommand::Open (tetapi menentukan CStreamRowset sebagai TRowset kelas), ICommand::Execute mengembalikan ISequentialStream pointer, yang disimpan dalam m_spStream anggota data CStreamRowset. Anda kemudian menggunakan Read metode untuk mengambil data (untai Unicode) dalam format XML. Contohnya:

myCmd.m_spStream->Read()

SQL Server 2000 melakukan pemformatan XML dan mengembalikan semua kolom dan semua baris kumpulan baris sebagai satu string XML.

Untuk contoh menggunakan metode ini Read , lihat Menambahkan Dukungan XML ke Konsumen dalam Menerapkan Konsumen Sederhana.

Catatan

Dukungan XML menggunakan CStreamRowset hanya berfungsi dengan SQL Server 2000 dan mengharuskan Anda memiliki Penyedia OLE DB untuk SQL Server 2000 (diinstal dengan MDAC).

Mengambil Data XML Menggunakan CXMLAccessor

CXMLAccessor memungkinkan Anda mengakses data dari sumber data sebagai data string ketika Anda tidak memiliki pengetahuan tentang skema penyimpanan data. CXMLAccessor berfungsi seperti CDynamicStringAccessorW kecuali bahwa yang pertama mengonversi semua data yang diakses dari penyimpanan data sebagai data berformat XML (ditandai). Nama tag XML cocok dengan nama kolom penyimpanan data sedekat mungkin.

Gunakan CXMLAccessor seperti yang Anda lakukan pada kelas aksesor lainnya, meneruskannya sebagai parameter templat ke CCommand atau CTable:

CTable<CXMLAccessor, CRowset> rs;

Gunakan GetXMLRowData untuk mengambil data dari tabel satu baris sekaligus, dan navigasikan baris menggunakan metode seperti MoveNext, misalnya:

// Open data source, session, and rowset
hr = rs.MoveFirst();

while(SUCCEEDED(hr) && hr != DB_S_ENDOFROWSET )
{
    CStringW strRowData;
    myCmd.GetXMLRowData(strRowData);

    printf_s( "%S\n", strRowData );

    hr = rs.MoveNext();
}

Anda dapat menggunakan GetXMLColumnData untuk mengambil informasi kolom (jenis data) sebagai data string berformat XML.

Lihat juga

Menggunakan Accessors