CRowset::Insert
Создает и инициализирует новую строку с использованием данных из метода доступа.
HRESULT Insert(
int nAccessor = 0,
bool bGetHRow = false
) throw( );
Параметры
nAccessor
[in] число метода доступа, используемый для вставки данных.bGetHRow
[in] показывает, является ли извлечь дескриптор для вставляемой строки.
Возвращаемое значение
Стандартное HRESULT.
Заметки
Этот метод требует дополнительного интерфейса IRowsetChange, который может не являться поддерживается во всех поставщиках. если это так, то метод возвращает E_NOINTERFACE.Также необходимо задать DBPROP_IRowsetChange к VARIANT_TRUE перед вызовом Открыть в таблице или команде, содержащий набор строк.
Вставка " может вылтить работу с ошибкой, если один или несколько столбцов не для записи.Чтобы устранить эти ошибки, измените таблицу курсоров.
Пример
В следующем примере показано, как получить доступ к источнику данных через набор строк, а затем вставить строку в таблицу в этом наборе строк.
Сначала создайте класс таблицы путем вставки нового объекта библиотеки ATL в проект.Например, щелкните правой кнопкой мыши проект на панели рабочей области и выберите Новый объект библиотеки ATL.Из категории Data Access выберите объект-получатель.Создайте объект типа Таблица объекта-получателя.(Выбор Таблица создает набор строк непосредственно из таблицы; выбор Команда создает набор строк для команды SQL). Выберите источник данных, указав таблицу через, чтобы получить доступ к этому источнику данных.Если вызвать объект CCustomerTable объекта-получателя, после чего реализации бы код insert следующим образом:
// Access the rowset using the wizard-generated class, CCustomerTable
CCustomerTable rs; // Your CTable-derived class
// Insert a customer
// Note that for fixed-length fields such as billing ID it isn't necessary
// to set the length
rs.m_BillingID = 5002;
rs.m_dwBillingIDStatus = DBSTATUS_S_OK;
_tcscpy_s(rs.m_ContactFirstName, sizeof(rs.m_ContactFirstName) / sizeof(TCHAR),
_T("Malcolm"));
rs.m_dwContactFirstNameLength = 7;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;
_tcscpy_s(rs.m_L_Name, sizeof(rs.m_L_Name) / sizeof(TCHAR), _T("Reynolds"));
rs.m_dwL_NameLength = 8;
rs.m_dwContactFirstNameStatus = DBSTATUS_S_OK;
rs.m_CustomerID = 2005;
rs.m_dwCustomerIDStatus = DBSTATUS_S_OK;
_tcscpy_s(rs.m_PostalCode, sizeof(rs.m_PostalCode) / sizeof(TCHAR),
_T("34213-4444"));
rs.m_dwPostalCodeLength = 10;
rs.m_dwPostalCodeStatus = DBSTATUS_S_OK;
HRESULT hr = rs.Insert();
if (FAILED(hr))
{
ATLTRACE(_T("Insert failed: 0x%X\n"), hr);
}
Требования
Header: atldbcli.h