2 y yy0 y_yy0 于 2015.07.14 12:14 提问

vc++6.0使用的oracle 9i 如何转换成access2007?
10

vc++6.0使用的oracle 9i 如何转换成access2007?

4个回答

oyljerry
oyljerry   Ds   Rxr 2015.07.14 12:49
已采纳

使用ADO连接数据库,因为要使用COM,需要初始化(CoInitialize).然后就可以生成接口的对象操作,代码如下:

#import "C:Program Files\Common Files\System\ado\msado15.dll" rename("EOF", "adoEOF")    //生成C++类,改变EOF函数的名称
using namespace ADODB;

BOOL ADOConnect(CString strDBFile)
{
    _ConnectionPtr pConnection;
    if(pConnection.CreateInstance(__uuidof(Connection)) != S_OK)
    {
        return FALSE;
    }

    CString strConnect;
    strConnect.Format(_T("Provider=Microsoft.Jet.OLEDB.4.0;Data   Source=%s"), strDBFile);
    if(pConnection->Open(_bstr_t(strConnect), "", "", adModeUnknown) == S_OK)
    {
        //连接数据库成功
        _RecordsetPtr pRecordset;
        if(pRecordset.CreateInstance(__uuidof(Recordset)) != S_OK)
        {
            pConnection->Close();
            return FALSE;
        }

        CString strSql;
        strSql = _T("select * from info");
        HRESULT hr = pRecordset->Open(_bstr_t(strSql), _variant_t((IDispatch*)pConnection, TRUE), adOpenUnspecified, adLockUnspecified, adCmdUnknown);
        if(hr != S_OK)
        {
            pConnection->Close();
            return FALSE;
        }
        _variant_t vt;

        pRecordset->MoveFirst();
        while(!pRecordset->adoEOF)
        {
            vt = pRecordset->Fields->GetItem("姓名")->Value;

            pRecordset->MoveNext();
        }

        pConnection->Close();
        return TRUE;
    }

    return FALSE;
}

myliuhailun
myliuhailun   2015.07.14 12:14

适应ado编程,或者odbc、进行连接,

frank_20080215
frank_20080215   2015.07.14 13:14

oyljerry的建议为何不采纳呢?

u012216727
u012216727   Ds   Rxr 2015.07.14 13:32

我也认为第一个是很好的建议

Csdn user default icon
上传中...
上传图片
插入图片