Redigera

Dela via


Storing Strings in the OLE DB Provider

Note

The ATL OLE DB Provider wizard is not available in Visual Studio 2019 and later.

In CustomRS.h, the ATL OLE DB Provider Wizard creates a default user record called CWindowsFile. To handle the two strings, modify CWindowsFile as shown in the following code:

////////////////////////////////////////////////////////////////////////
class CCustomWindowsFile:
   public WIN32_FIND_DATA
{
public:
DWORD dwBookmark;
static const int iSize = 256;    // Add this
TCHAR szCommand[iSize];          // Add this
TCHAR szText[iSize];             // Add this
TCHAR szCommand2[iSize];         // Add this
TCHAR szText2[iSize];            // Add this

BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile)
   PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes)
   PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh)
   PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow)
   PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName)
   PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName)

   PROVIDER_COLUMN_ENTRY_STR("Command", 6, szCommand)    // Add this
   PROVIDER_COLUMN_ENTRY_STR("Text", 7, szText)          // Add this
   PROVIDER_COLUMN_ENTRY_STR("Command2", 8, szCommand2)  // Add this
   PROVIDER_COLUMN_ENTRY_STR("Text2", 9, szText2)        // Add this
END_PROVIDER_COLUMN_MAP()

   bool operator==(const CCustomWindowsFile& am) // This is optional
   {
      return (lstrcmpi(cFileName, am.cFileName) == 0);
   }
};

The data members szCommand and szText represent the two strings, with szCommand2 and szText2 with additional columns if needed. The data member dwBookmark isn't needed for this simple read-only provider but is used later to add an IRowsetLocate interface; see Enhancing the Simple Read Only Provider. The == operator compares instances (implementing this operator is optional).

When this is done, you can add the functionality of Reading Strings into the OLE DB Provider.

See also

Implementing the Simple Read-Only Provider