1。首先,我们必须建立一个VC的工程。建立VC工程很简单,只要如下操作即可。
   1. 运行VC,菜单->File->New->Projects,然后选择MFC AppWizard(exe),然后填好工程名称,点击OK。
   2. 选择应用程序类型为Dialog based。
   3. 点击Finish,完成。
2。导入ADO。在VC环境下,一般来说,我们都是用的ADO来连接数据库的。
   在StdAfx.h(这是一个VC的全局头文件,默认每个CPP文件都要引用它),添加如下代码:
   #import "c:program filescommon filessystemadomsado15.dll" no_namespace
         rename ("EOF", "adoEOF")
         rename ("BOF", "adoBOF") 
   请确认在你的系统中存在msado15.dll这个DLL,它的位置应该与上面的路径一直,它是ADO的库文件。
   如果编译不过,而且提示是一些如error C2011: 'LockTypeEnum' : 'enum' type redefinition的重定义,那么请删除以下的代码:
   #ifndef _AFX_NO_DAO_SUPPORT
   #include <afxdao.h>    // MFC DAO database classes
   #endif // _AFX_NO_DAO_SUPPORT
3。初始化ADO。
   ::CoInitialize(NULL); // 初始化COM,ADO是一个COM组件。
   _ConnectionPtr opConn; // 连接
   opConn.CreateInstance(__uuidof(Connection)); // 初始化一个连接
   CString strConnect; // 格式化连接
   strConnect.Format("Provider=MSDASQL.1;Driver={%s};Server=%s;DataBase=%s;UID=%s;PWD=%s;", 
      strDriver, 
      strServerPath, 
      strDb, 
      strUid, 
      strPwd); 
    opConn->Open(_bstr_t(lpczConn), "", "", adConnectUnspecified); // 打开连接

    // 干活,现在可以使用ADO中的其他对象了,比如_RecordsetPtr等
    _RecordsetPtr opSet;
    CString strSQL;
    // tb_idealsoft
    //    +---------------+---------------+
    //     Numb(int)   | Name(varchar) |
    //    +---------------+---------------+
    strSQL.Format("SELECT * FROM tb_idealsoft");
    _variant_t vtConn = _variant_t(opConn, true);
    opSet->PutCursorLocation(adUseClient); // 设定游标
    opSet->Open(_variant_t((LPCTSTR)strSQL), vtConn, adOpenStatic, adLockOptimistic, adCmdText); // 执行SQL语句,打开记录集
    long lCount = opSet->GetRecordCount(); // 表中记录的数目
    opSet->MoveFirst(); // 到记录集的第一行
    for(int i = 0; i < lCount; i++)
    {
        _variant_t vt = _m_opSet->GetCollect(_variant_t(_T("Name")));
        // 由于Name这个域是字符串,所以需要将vt转化成字符串
        // 在此,我们有必要解释一下_variant_t这个怪物,它的确是个怪物。微软,就是一个恐龙园,
        // 经常会放出一些莫名其妙的数据结构。
        // 其实_variant_t与其说是一个class,还不如说它是一个union,其实在它的基类tagVARIANT中,的确
        // 存储了一个union,用来存放数据,而_variant_t其实就是对这个union的进一步封装。
        // 之前,微软似乎试图用它来统一所有变量的存储与访问,但始终不很成功,主要是这个东西实在是
        // 太抽象了,但是ADO的成功推广却意外的使这个畜生逐渐成名。当然,主要还是令人厌恶。
        // 在_variant_t中有一个变量叫做vt,它是用来记录变量类型的,根据变量的类型,我们可以把_variant_t
        // 转化成不同的数据类型。
        // _variant_t v;
        // 比如当前vt = VT_I1(说明此时_variant_t代表了一个char型数据,具体的定义可以参看oaidl.h),我们可以
        // 这样来转换:char ch = v.cVal;
        // 如果当前的vt = VT_LPSTR,表明当前的_variant_t代表了一个char*型数据。
        // 从而我们可以这样转换:char* psz = v.pcVal;
        // ……
        // 好了,现在可以将这个vt转换为char*然后将它保存起来了
        // ……
        opSet->MoveNext();
    }
    // 完事了,打扫战场
    opSet->Close();

    // 现在插入一条数据,我们使用_ConnectionPtr的Execute接口
    // int nNumb = 12;
    // CString strName("南京");
    strSQL.Format("INSERT INTO tb_idealsoft(Numb, Name) VALUES(%d, '%s')", nNumb, strName); // 注意字符串型变量要用单引号括起来
    // _variant_t vtEffe
    opConn->Execute(_bstr_t(strSQL), &vtEffe, adCmdText);
    long nEffe = vtEffe.lVal; // 被影响的行数
    // ……

    // 关闭,释放资源 
    opConn->Close(); 
    ::CoUninitialize();

-------- Access数据库的连接字符串格式 --------------------------------------
CString strConnect = _T("Provider=Microsoft.Jet.OLEDB.4.0;User ID=Admin; Data Source=") + strDbPath + _T(";");
if( BARE != strPsw )
{
    strConnect += _T("Jet OLEDB:Database Password=") + strPsw;
}

转自:

http://hi.baidu.com/idealsoft/blog/item/d8152d03ba5773703812bb0d.html