Основы проектирования приложений баз данных


         

Добавление строк


Метод CRowset::Insert создает новую строку, используя данные из аксессора, и вставляет ее после текущей строки.

Метод Insert имеет следующее формальное описание:

HRESULT Insert(int nAccessor = 0, bool bGetRow = false)

Параметр bGetRow определяет, какая строка станет текущей: значение false (по умолчанию) указывает, что текущей будет новая вставленная строка; значение true указывает, что текущая строка не изменится.

В следующем примере иллюстрируется добавление новой строки после 10-й строки результирующего набора:

CTable<CAccessor<CTBL1Accessor> > tbl1; CSession session;

// Открываем результирующий набор tbl1.Open(session, "Product", &ps, 1); // ps - набор // свойств tbl1.MoveToBookmark(&bookmark, 0); // Переход // на 10-ю строку // Устанавливаем значение столбцов tbl1.m_F1 = 2020; _tcscpy( tbl1.m_F2, _T( "ABCD" ) ); tbl1.m_F3 = 137137; tbl1.m_F4 = 456; _tcscpy( tbl1.m_F5, _T( "123456789" ) ); tbl1.m_F6 = 3; tbl1.m_F7 = false;

// До добавления строки следует инициализировать поля // состояния и длины // Состояние столбцов m_dwF1Status = DBSTATUS_S_ISNULL; m_dwF2Status = DBSTATUS_S_ISNULL; m_dwF3Status = DBSTATUS_S_ISNULL; m_dwF4Status = DBSTATUS_S_ISNULL; m_dwF5Status = DBSTATUS_S_ISNULL; m_dwF6Status = DBSTATUS_S_ISNULL; m_dwF7Status = DBSTATUS_S_ISNULL; // Длина строк m_dwF2Length = 4; // "ABCD" - это 6 символов m_dwF5Length = 10; // "123456789" - это 9 символов // Добавление строки HRESULT hr = tbl1.Insert( );

Поля статуса и длины для каждого поля записываются в таблице столбцов, указываемой после BEGIN_COLUMN_MAP (при использовании мастера ATL OLE DB Consumer эта таблица формируется автоматически).

Например:

[db_source("insert connection string")] [db_command(" SELECT \ Au_ID, \ Author, \ ` Year Born`, \ FROM TblAuthors")]

class CAuthors { public: DWORD m_dwAuIDStatus; // Поля статуса DWORD m_dwAuthorStatus; DWORD m_dwYearBornStatus;

DWORD m_dwAuIDLength; // Поля длины DWORD m_dwAuthorLength; DWORD m_dwYearBornLength;




Содержание  Назад  Вперед