_ConnectionPtr Connection;
HRESULT hr=Connection.CreateInstance("ADODB.Connection");
Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Path\\db.mdb","",adModeUnknown);
c:\Path\db.mdb文件是存在的,Connection.CreateInstance("ADODB.Connection");
返回hr==S_OK。
Win2K连接数据库完全成功,
98下就不行。查注册表存在Microsoft.Jet.OLEDB.4.0注册项。
为什么?
另外,急请教有关DCOM安全问题,如何才能使任何人都可以创建/访问DCOM?
我按照一些资料上说的CoInitializeSecurity(NULL,-1,....)
但是98下客户端不能与2K下的DCOM通讯,不能挂接ConnectionPoint回调接口
2K下客户端也不能保证挂接ConnectionPoint回调接口。
客户端也做了CoInitializeSecurity(NULL,-1,....)。
急盼回复,谢谢!

解决方案 »

  1.   

    你的ado在98下不能用应该是ado版本的问题,你的access是否为2000版的,98下好象不支持,你可以更换那个关于ado的动态连接库文件。
       DCOM下要用CoCreateInstanceEx()来创建远程对象。
      

  2.   

    see the link below :http://www.codeproject.com/isapi/isapioledb.asp
      

  3.   

    你可能是这样的问题:代码没有错。Win98下msado15.dll是2.10版本,WIN2K下的msado15.dll是2.50版本的.
    在2k下编译的程序是不能再98下运行的,因为ado不想下兼容,你在98下编译,在2k下可以运行的,建议你在win98下编译。
      

  4.   

    在Win98下安装了ADO2.6也不行。
    在Win98下编译
    调试到Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Path\\db.mdb","",adModeUnknown);
    就立即抛出异常,甚至Open不能返回错误码。
      

  5.   

    我试下将MDB文件版本降到Asscess97先
      

  6.   

    98下在安装ADO2.6前,Connection.CreateInstance("ADBDB.Connection")失败
    但是ADBDB.Connection类在注册表中已注册。Connection.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\\Path\\db.mdb","",adModeUnknown);
    中Microsoft.Jet.OLEDB.4.0改为Microsoft.Jet.OLEDB在2K下会连接失败。
    继续请教!
      

  7.   

    http://www.csdn.net/develop/read_article.asp?id=14662
    我的这篇文章也许有用?
      

  8.   

    to: horris(僧推月下门) 
    谢谢!好文章。
      

  9.   

    _GUID IID_AdoConnection = {0x00000515,0x0000,0x0010,{0x80,0x00,0x00,0xaa,0x00,0x6d,0x2e,0xa4}};
    _GUID IID_AdoRecordset = {0x0000050e,0x0000,0x0010,{0x80,0x00,0x00,0xaa,0x00,0x6d,0x2e,0xa4}};CComPtr<Connection15> m_pConnection;
    CComPtr<RecordSet15> m_pRecordset;
    hr=m_pConnection.CoCreateInstance(IID_AdoConnection);//返回hr=0x80040154
    m_pRecordset.CoCreateInstance(IID_AdoRecordset);继续试验
      

  10.   

    98下也是
    hr=m_pConnection.CoCreateInstance(IID_AdoConnection);//返回hr=0x80040154_ConnectionPtr Connection;
    hr=m_pConnection.CreateInstance("ADODB.Connection");
    98下Rebuild All,同样返回hr=0x80040154
      

  11.   

    我的连接:98,2k全ok!
    if (!AfxOleInit())
    {
    AfxMessageBox("ole 初始化错误");
    return FALSE;
    } CString strOpen,strDB;
    strDB.Format("%sDB\\balance.mdb",gszAppPath);
    strOpen.Format("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s;"
    "Persist Security Info=False",strDB); try
    {
    lpADOCnn.CreateInstance(__uuidof(Connection));
    lpADOCnn->Open((const char *)strOpen,"","",-1);
    } catch(...)
    {
    AfxMessageBox("数据源初始化错误:找不到文件"+strDB+",程序将关闭!",MB_ICONERROR);
    if(lpADOCnn != NULL)
    lpADOCnn.Release();
    return FALSE;
    }
      

  12.   

    to:awayso(ABCD) 
    直接用智能指针_ConnectionPtr定义的吗?问题是为什么在98下Rebuild All(将msado15.tlh和msado15.tli文件
    都删除重新生成了),还是发生0x80040154错误。
      

  13.   

    hr=m_pConnection.CoCreateInstance(__uuidof(Connection15));//返回hr=0x80040154
      

  14.   

    Win2k下:
    CComPtr<Connection15> m_pConnection;
    hr=m_pConnection.CoCreateInstance(__uuidof(Connection15));//返回hr=0x80040154