Aracılığıyla paylaş


XML Verilerine Erişme

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

İşlev CStreamRowset CXMLAccessor
Aktarılan veri miktarı Tüm sütunlardan ve satırlardan aynı anda veri alır. Bir kerede yalnızca bir satır dışında tüm sütunlardan veri alır. gibi MoveNextyöntemleri kullanarak satırlarda gezinmeniz gerekir.
Dizeyi biçimlendirme SQL Server, XML dizesini biçimlendirip tüketiciye gönderir. Satır kümesi verilerini yerel biçiminde alır (sağlayıcının Unicode dizeleri olarak göndermesini ister) ve ardından verileri XML biçiminde tutan dizeyi oluşturur.
Biçimlendirme üzerinde denetim SQL Server 2000'e özgü bazı özellikleri ayarlayarak XML dizesinin nasıl biçimlendirileceğini denetleyebilirsiniz. Oluşturulan XML dizesinin biçimi üzerinde hiçbir denetiminiz yoktur.

VERILERI XML biçiminde almanın genel olarak daha verimli bir yolunu sağlar ancak CStreamRowset yalnızca SQL Server 2000 tarafından desteklenir.

CStreamRowset Kullanarak XML Verilerini Alma

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

CCommand<CAccessor<CMyAccessor>, CStreamRowset> myCmd;

-veya-

CCommand<CNoAccessor, CStreamRowset> myCmd;

Normalde çağırdığınızda CCommand::Open (örneğin, CRowset sınıf olarak TRowset belirterek), bir IRowset işaretçi alır. ICommand::Executenesnesinin üyesinde m_spRowset CRowset depolanan bir IRowset işaretçi döndürür. , MoveNextve GetData gibi MoveFirstyöntemler verileri almak için bu işaretçiyi kullanır.

Buna karşılık, çağırdığınızda CCommand::Open (ancak sınıf olarak belirttiğinizde TRowset CStreamRowset), ICommand::Execute CStreamRowset'in veri üyesinde m_spStream depolanan bir ISequentialStream işaretçi döndürür. Ardından yöntemini kullanarak Read (Unicode dizesi) verilerini XML biçiminde alırsınız. Örneğin:

myCmd.m_spStream->Read()

SQL Server 2000, XML biçimlendirmesini yapar ve satır kümesinin tüm sütunlarını ve tüm satırlarını tek bir XML dizesi olarak döndürür.

yöntemini kullanan Read bir örnek için bkz. Basit Tüketici Uygulama bölümünde Tüketiciye XML Desteği Ekleme.

Not

KULLANARAK CStreamRowset XML desteği yalnızca SQL Server 2000 ile çalışır ve SQL Server 2000 için OLE DB Sağlayıcısına (MDAC ile yüklenmiş) sahip olmanız gerekir.

CXMLAccessor Kullanarak XML Verilerini Alma

CXMLAccessor , veri deposu şeması hakkında hiçbir bilginiz olmadığında veri kaynağındaki verilere dize verileri olarak erişmenizi sağlar. CXMLAccessor gibi CDynamicStringAccessorW çalışır ancak ilk veri deposundan erişilen tüm verileri XML biçimli (etiketli) veri olarak dönüştürür. XML etiketi adları, veri deposunun sütun adlarında mümkün olduğunca yakından eşleşmektedir.

Veya'ya CCommand CTableşablon parametresi olarak geçirerek diğer tüm erişimci sınıflarında olduğu gibi kullanınCXMLAccessor:

CTable<CXMLAccessor, CRowset> rs;

GetXMLRowData kullanarak tablodan her seferinde bir satır veri alın ve gibi MoveNextyö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ü) bilgilerini XML biçimli dize verileri olarak almak için GetXMLColumnData kullanabilirsiniz.

Ayrıca bkz.

Erişimcileri Kullanma