Как мы можем массово обновлять записи, используя CRecordset - PullRequest
1 голос
/ 02 февраля 2012

У меня есть приложение MFC, которое использует CRecordsets для извлечения и обновления / вставки данных.

Мне удалось реализовать массовое извлечение строк, но сейчас я хочу реализовать массовое обновление / вставку / удаление строк с использованием производного CRecordset.

Кто-нибудь делал это? Можете ли вы привести примеры кода?

Ответы [ 2 ]

2 голосов
/ 08 апреля 2013

Я наткнулся на старый пост, описывающий, как реализовать массовое обновление строк в CRecordset.Во-первых, вам нужно реализовать массовую выборку строк в вашем наборе записей (вы также можете увидеть этот пост в качестве примера)

Как только ваш набор записей работает для извлечения данных, этодовольно просто.

//Declare your recordset
CMyRecordsetBulk regSetBulk(&myDatabase);

//Open it
regSetBulk.Open(NULL, NULL, CRecordset::useMultiRowFetch);

//Select the row you want to change
regSetBulk.SetRowsetCursorPosition(nRow);

//Update the value(s) you need to change.
regSetBulk.m_pnPrecision = 21;

//Set the length of the data in the field you modified (the "Precision" field is a byte)
regSetBulk.m_plnPrecision = 1;


//Do the same thing for a couple of other rows

regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 32;
regSetBulk.m_plnPrecision = 1;

regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 21;
regSetBulk.m_plnPrecision = 1;

regSetBulk.SetRowsetCursorPosition(++nRow);
regSetBulk.m_pnPrecision = 12;
regSetBulk.m_plnPrecision = 1;

//Update the rows and check for errors
int nRetCode;
AFX_ODBC_CALL(::SQLSetPos(regSetBulk.m_hstmt, NULL, SQL_UPDATE, SQL_LOCK_NO_CHANGE)); 
regSetBulk.CheckRowsetError(nRetCode);
1 голос
/ 05 февраля 2012

Просто используйте CDatabase::ExecuteSQL.Выполнение обновлений путем циклического прохождения, поскольку CRecordset не может быть чем-то, что вы действительно хотите сделать.CRecordSet полезен, только если вы работаете с отдельными записями, но не с целыми наборами данных.

...