OLE DB Templates - A light and simple Data Access Method | CodeGuru

OLE DB Templates – A light and simple Data Access Method

I was amazed and delighted to see how simple database access has become thanks to OLE DB. I’ve been reading the hype and so I went out and found the Microsoft Book on OLE DB. It’s a great idea as it’s explained there but still rather complex to code. I noticed that Visual C++ 6 […]

Written By
CodeGuru Staff
CodeGuru Staff
Jul 3, 1999
1 minute read
CodeGuru content and product recommendations are editorially independent. We may make money when you click on links to our partners. Learn More

I was amazed and delighted to see how simple database access has become
thanks to OLE DB. I’ve been reading the hype and so I went out and found
the Microsoft Book on OLE DB. It’s a great idea as it’s explained there
but still rather complex to code. I noticed that Visual C++ 6 has some new
templates for Data Consumers so I
started looking at the documentation. Wow! Is this simple stuff or what??

Here’s a sample, a CONSOLE application at that, using the NWind database
that comes with the DASDK. It’s only 99 lines of code including comments and
it compiles into a 60K executable.



//file: olsamp.cpp
//auth: dick warg
//date: 6/25/99
//func: minimal oledb program
#include <atldbcli.h>
#include <iostream>
using namespace std;
// define a class to hold the data from the table
class myNwCust
{
public:
    // data elements
    TCHAR m_CustomerID[6];
    TCHAR m_CompanyName[41];
    TCHAR m_ContactName[31];
    TCHAR m_Phone[25];
    // column binding  — I only want these 4 fields
    BEGIN_COLUMN_MAP(myNwCust)
        COLUMN_ENTRY(1, m_CustomerID)
        COLUMN_ENTRY(2, m_CompanyName)
        COLUMN_ENTRY(3, m_ContactName)
        COLUMN_ENTRY(4, m_Phone)
    END_COLUMN_MAP()
};
// declare the OLEDB objects
CDataSource ds;
CSession    session;
CCommand &ltCAccessor&ltmyNwCust&gt &gt cust;
int main()
{
try{
    // fire up COM
    HRESULT hr = CoInitialize(0);
    if(FAILED(hr))
    {
        cout << “Can’t start COM!? ” << endl;
        return -1;
    }
    // connect to the database
    hr = ds.Open(_T(“MSDASQL”), “OLE_DB_NWind_Jet”, “sa”, “”);
    if(FAILED(hr))
    {
        cout << “Can’t open Nwind” << endl;
        return -1;
    }
    // start the session
    hr = session.Open(ds);
    if(FAILED(hr))
    {
        cout << “Can’t open Nwind SESSION” << endl;
        ds.Close();
        return -1;
    }
    // construct the query string
    TCHAR mySQL[] = “SELECT CustomerID, CompanyName, ContactName,
    Phone FROM Customers”;
    // open the dataset
    hr = cust.Open(session, mySQL);
    if(FAILED(hr))
    {
        cout << “Can’t open Nwind TABLE” << endl;
        session.Close();
        ds.Close();
        return -1;
    }
    // read all the data
    while(cust.MoveNext() == S_OK)
    {
        cout << cust.m_CustomerID << “, ” << cust.m_CompanyName << “, “;
        cout << cust.m_ContactName << “, ” << cust.m_Phone << endl;
    }
    cust.Close();
    session.Close();
    ds.Close();
    cout &lt&lt “That’s All Folks” &lt&lt endl;
    return 1;
}
catch(…)
{
    cout &lt&lt “Unknown failure” &lt&lt endl;
    return -1;
}
}

The Microsoft documentation and samples are in the MSDN pages “Visual C++
Documentation References Microsoft Foundation Class Library and
TemplatesOLE DB Templates”

CodeGuru Logo

CodeGuru covers topics related to Microsoft-related software development, mobile development, database management, and web application programming. In addition to tutorials and how-tos that teach programmers how to code in Microsoft-related languages and frameworks like C# and .Net, we also publish articles on software development tools, the latest in developer news, and advice for project managers. Cloud services such as Microsoft Azure and database options including SQL Server and MSSQL are also frequently covered.

Property of TechnologyAdvice. © 2026 TechnologyAdvice. All Rights Reserved

Advertiser Disclosure: Some of the products that appear on this site are from companies from which TechnologyAdvice receives compensation. This compensation may impact how and where products appear on this site including, for example, the order in which they appear. TechnologyAdvice does not include all companies or all types of products available in the marketplace.