Изучение Amazon Web Services


Реализация exchange полей массовой записи


Download 1.13 Mb.
bet9/32
Sana30.01.2024
Hajmi1.13 Mb.
#1817072
TuriСамостоятельная работа
1   ...   5   6   7   8   9   10   11   12   ...   32
Bog'liq
самостоятелная работа

Реализация 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:
1   ...   5   6   7   8   9   10   11   12   ...   32




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling