我想用OLE DB数据库(SQL SERVER、ORACLE)但HRESULT Open( const CLSID& clsid, LPCTSTR pName = NULL, LPCTSTR pUserName = NULL, LPCTSTR pPassword = NULL, long nInitMode = 0 );中的clsid不知如何得到,请各位指点,谢谢!
我是初学者,有代码最好。

解决方案 »

  1.   


    使用 OLEDB 建立统一的数据访问平台http://www.vckbase.com/code/listcode.asp?mclsid=11&sclsid=1103
      

  2.   

    以下是我的代码,OPEN后hr的值是一负数,请问是哪里错了?谢谢!
    HRESULT hr;
    CLSID clsid;
    hr=CoInitialize(NULL);
    if(FAILED(hr))
    MessageBox("f1");
    if(CLSIDFromProgID(L"SQLOLEDB.1",&clsid)==S_OK)
    {
    hr=m_source.Open(clsid,"DatabaseName","sa","password",0);
    if(FAILED(hr))
    MessageBox("f2");
    }
    else
    {
    MessageBox("dfd");
    }
      

  3.   

    给你几个例子:
    代码3:使用CDaoDatabase(基于DSN)CDaoDatabase MyDb = new CDaoDatabase();MyDb.Open(NULL,FALSE,FALSE,"ODBC;DSN=samp;UID=admin;PWD=admin");
    代码4:使用CDaoDatabase(基于非DSN)CDaoDatabase MyDb = new CDaoDatabase();MyDb.Open(NULL,FALSE,FALSE,"ODBC;DRIVER={SQL Server};SERVER=server;DATABASE=samp;UID=admin;PWD=admin"); 代码5:使用_ConnectionPtr(基于DSN)_ConnectionPtr MyDb;MyDb.CreateInstance(__uuidof(Connection));MyDb->Open("DSN=samp;UID=admin;PWD=admin","","",-1);  代码6:使用_ConnectionPtr (基于非DSN)_ConnectionPtr MyDb;MyDb.CreateInstance(__uuidof(Connection));MyDb->Open("Provider=SQLOLEDB;SERVER=server;DATABASE=samp;UID=admin;PWD=admin","","",-1);同时,还要在之前初始化OLE:
    BOOL CADOApp::InitInstance()
    {
       if(!AfxOleInit())
       {
             AfxMessageBox(“OLE初始化出错!”);
              return FALSE;
        } ……    return TRUE;
    }