Aracılığıyla paylaş


XML Verilerine Erişme

XML verilerini bir veri kaynağından almanın iki ayrı yöntemi var: biri CStreamRowset öğesini, diğeri de CXMLAccessor öğesini kullanır.

İşlevsellik

CStreamRowset

CXMLAccessor

Aktarılan veri miktarı

Bütün sütun ve satırlardan tek seferde verileri alır.

Verileri bütün sütunlardan ancak bir seferde bir satırdan alır. Satırlarda MoveNext gibi yöntemleri kullanarak gezinmelisiniz.

Dizgiyi biçimlendirme

SQL Sunucusu XML dizgisini biçimlendirir ve tüketiciye yollar.

Satır kümesi verisini yerel biçiminde alır (sağlayıcının Unicode dizgisi olarak yollamasını ister) ve veriyi içeren dizgiyi XML biçiminde oluşturur.

Biçimlendirme denetimi

SQL Sunucusu 2000'e özel bazı özellikleri ayarlayarak XML dizgilerinin nasıl biçimlendirileceği üzerinde bir miktar denetiminiz vardır.

Oluşturulan XML dizgisinin biçimlendirilmesi üzerinde bir denetiminiz yoktur.

CStreamRowset genel olarak XML biçimindeki veriyi daha verimli alma yolu sağlarken, sadece SQL Sunucu 2000 tarafından desteklenir.

CStreamRowset Kullanarak XML Verisi Alma

CCommand veya CTable bildiriminizde satır kümesi türü olarak CStreamRowset belirtirsiniz. Bunu kendi erişimcinizle veya erişimci olmadan kullanabilirsiniz, örneğin:

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

- veya -

CCommand<CNoAccessor, CStreamRowset> myCmd;

Normalde CCommand::Open'ı çağırdığınızda (örneğin, TRowset sınıfı olarak CRowset belirterek), IRowset işaretçisi alır. ICommand::Execute, CRowset sınıfının m_spRowset üyesinde saklanan bir IRowset işaretçisi döner. MoveFirst, MoveNext ve GetData gibi yöntemler bu işaretçiyi veri almak için kullanır.

Bunun tersine, CCommand::Open'ı çağırdığınızda (ama TRowset sınıfı olarak CStreamRowset'i belirtiniz), ICommand::Execute CStreamRowset'in m_spStream veri üyesinde saklanan ISequentialStream işaretçisi döner. Daha sonra (Unicode dizgi) veriyi XML biçiminde almak için Read yöntemini kullanın. Örne?in:

myCmd.m_spStream->Read()

SQL Sunucu 2000 XML biçimlendirmesini gerçekleştirir ve satır kümesinin bütün sütunlarını ve satırlarını tek XML dizgisi olarak döner.

Read yöntemini kullanmaya bir örnek için, Basit Tüketici Uygulama'daki "Tüketiciye XML Desteği Ekleme"ye bakınız.

Not

CStreamRowset kullanan XML desteği sadece SQL Sunucu 2000 ile çalışır ve SQL Sunucu 2000 için OLE DB Sağlayıcısı'na sahip olmanızı gerektirir (MDAC ile yüklenmiş).

CXMLAccessor Kullanarak XML Verisi Alma

CXMLAccessor, veri deposunun şeması hakkında bilginiz olmadığında veri kaynağına dizgi verisi olarak erişmenize izin verir. CXMLAccessor veri deposundan erişilen bütün veriyi XML biçimli (etiketli) veriye dönüştürmesi dışında CDynamicStringAccessorW gibi çalışır. XML etiket isimleri veri deposunun sütun isimleriyle mümkün olduğunca benzer şekilde eşleşir.

CXMLAccessor'ı diğer bir erişimci sınıfı kullandığınız gibi kullanın, şablon parametresi olarak CCommand'e veya CTable'a geçirin:

CTable<CXMLAccessor, CRowset> rs;

Tablodan her seferde bir satır şeklinde veri almak için GetXMLRowData'yı kullanın ve MoveNext gibi yöntemleri kullanarak satırlarda gezinin, örneğin:

// 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();
}

Sütun (veri türü) bilgisini XML biçimli dizgi verisi olarak almak için GetXMLColumnData kullanabilirsiniz.

Ayrıca bkz.

Kavramlar

Erişimcileri Kullanma