Изучение Amazon Web Services
Реализация exchange полей массовой записи
Download 1.13 Mb.
|
самостоятелная работа
Реализация exchange полей массовой записи
Обмен полем массовой записи передает набор данных из источника данных в объект набора записей. Функции BULK RFX используют массивы для хранения этих данных, а также массивы для хранения длины каждого элемента данных в наборе строк. В определении класса необходимо определить элементы данных поля в качестве указателей для доступа к массивам данных. Кроме того, необходимо определить набор указателей для доступа к массивам длин. Любые члены данных параметров не должны объявляться в качестве указателей; Объявление элементов данных параметров при использовании обмена полями массовой записи совпадает с объявлением их при использовании обмена полями записей. В следующем примере кода показан простой пример: C++Копировать class MultiRowSet : public CRecordset { public: // Field/Param Data // field data members long* m_rgID; LPSTR m_rgName; // pointers for the lengths // of the field data long* m_rgIDLengths; long* m_rgNameLengths; // input parameter data member CString m_strNameParam; . . . } Эти буферы хранилища можно выделить вручную или использовать платформу для выделения. Чтобы выделить буферы самостоятельно, необходимо указать CRecordset::userAllocMultiRowBuffers параметр dwOptions в функции-члене Open . Не забудьте задать размеры массивов по крайней мере равным размеру набора строк. Если вы хотите использовать платформу для выделения, следует инициализировать указатели на NULL. Обычно это делается в конструкторе объекта набора записей: C++Копировать MultiRowSet::MultiRowSet( CDatabase* pDB ) : CRecordset( pDB ) { m_rgID = NULL; m_rgName = NULL; m_rgIDLengths = NULL; m_rgNameLengths = NULL; m_strNameParam = ""; m_nFields = 2; m_nParams = 1; . . . } Наконец, необходимо переопределить функцию-член DoBulkFieldExchange . Для элементов данных поля вызовите функции BULK RFX; для всех элементов данных параметров вызовите функции RFX. При открытии набора записей путем передачи инструкции SQL или хранимой процедуры в порядок Openвызовов Bulk RFX должен соответствовать порядку столбцов в наборе записей. Аналогичным образом порядок вызовов RFX для параметров должен соответствовать порядку параметров в инструкции SQL или хранимой процедуре. C++Копировать void MultiRowSet::DoBulkFieldExchange( CFieldExchange* pFX ) { // call the Bulk RFX functions // for field data members pFX->SetFieldType( CFieldExchange::outputColumn ); RFX_Long_Bulk( pFX, _T( "[colRecID]" ), &m_rgID, &m_rgIDLengths ); RFX_Text_Bulk( pFX, _T( "[colName]" ), &m_rgName, &m_rgNameLengths, 30 ); // call the RFX functions for // for parameter data members pFX->SetFieldType( CFieldExchange::inputParam ); RFX_Text( pFX, "NameParam", m_strNameParam ); } Download 1.13 Mb. Do'stlaringiz bilan baham: |
Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling
ma'muriyatiga murojaat qiling