dataobjectrowset.cpp

来自「The ATL OLE DB Provider templates only s」· C++ 代码 · 共 95 行

CPP
95
字号
#include "stdafx.h"
#include "DataObjectRowset.h"
#include "MyDataObject.h"


void CDataObjectRowset::GetColumnInformation(
   size_t column, 
   DBTYPE &dbType, 
   ULONG &size, 
   std::string &columnName, 
   DWORD &flags)
{
   ATLASSERT(m_pDataObject);
   
   dbType = DBTYPE_STR;
   size = m_pDataObject->m_columnSize;

   columnName = m_pDataObject->m_columnNames[column];
/*
   if (column == 0)
   {
      flags |= DBCOLUMNFLAGS_ISROWID;
   }
*/
}

void CDataObjectRowset::GetColumnData(
   size_t row,
   size_t column,
   DBTYPE &dbType, 
   ULONG &size, 
   void *&pData,
   bool &bIsUpdatable)
{
   ATLASSERT(m_pDataObject);

   dbType = DBTYPE_STR;
   size = m_pDataObject->m_columnSize;
   pData = m_pDataObject->GetAt(row+1, column+1);

   bIsUpdatable = false;
}

void CDataObjectRowset::UpdateColumn(size_t row, size_t column, void *pData)
{
   ATLASSERT(m_pDataObject);

   size_t length = 0;

   if (pData)
   {
      length = strlen((const char*)pData);
   }

   m_pDataObject->SetAt(row+1, column+1, (const char*)pData, length);
}

size_t CDataObjectRowset::GetNumColumns()
{
   ATLASSERT(m_pDataObject);

   return m_pDataObject->m_numCols;
}

size_t CDataObjectRowset::GetNumRows() const
{
   ATLASSERT(m_pDataObject);

   return m_pDataObject->m_numRows;
}

HRESULT CDataObjectRowset::AddRow()
{
   ATLASSERT(m_pDataObject);

   if (SUCCEEDED(m_pDataObject->AddRow()))
   {
      return S_OK;
   }

   return E_FAIL;
}

HRESULT CDataObjectRowset::RemoveRow(int nIndex)
{
   ATLASSERT(m_pDataObject);

   if (SUCCEEDED(m_pDataObject->RemoveRow(nIndex)))
   {
      return DBROWSTATUS_S_OK;
   }

   return E_FAIL;
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?