在client端设置数据源的时候进行client配置
把原来的pipe改为tcp/ip,然后填写服务器名和服务器的ip地址
然后在程序重链接数据源就可以了

解决方案 »

  1.   

    Good talk!
    你帮我道出了我的想法!
    I See!
      

  2.   

    建议用如下结构
                |--------------|
                |    DBMS      |
                |      |       |----->SERVER
                |COM/DCOM/COM+ |  
                |--------------|
                    /    \          
                   /      \
                 B         C
      

  3.   

    to free_free(free_free):能不能具体说说这个结构,就是在com/dcom/com+着一层应该具体实现一些什么操作和功能?
      

  4.   

    free_free的意思应该是说:将相关的访问逻辑集中在服务器端,以COM/DCOM/COM+ 的形势来实现,只要是访问逻辑实现了,不管是B/S还是C/S都可以轻而易举的完成,B/S、C/S只不过是体现的形势不同罢了。
      

  5.   

    也就是说,你们所谓的中间那层的逻辑究竟是些什么?我缺的是实践经验,不是理论,理论我都知道一点。你们说了,就等于没说。我需要的回答要明确,就像tianlinyi(笨蛋) 的第2次回答,就符合我的要求
      

  6.   

    其实中间层只是一种逻辑的概念
    client-中间层-server
    客户端程序发送你想进行处理的数据和方法,通过中间层发送到server,进行后台的数据处理,然后server进行处理后经过中间层转化成client可以识别的消息,发送到client端
    所以你编程序一般做server和client,中间层有用户代理完成
    比如通过web浏览器(asp)提交对数据库的处理请求,---中间层(请求)---server(数据处理)---中间层(应答)----浏览器显示
      

  7.   

    B/S的三层结构:MIS =ASP+MTS+DATABASE
      

  8.   

    举个简单的例子:
      如果想要实现一个数据检索操作,C/B端输入查询的条件给COM,COM传回记录集,C/B端 在把记录集在显示出来:例:
    interface IDBManager : IDispatch
    {
    [id(1), helpstring("method Query")] 
     HRESULT Query([out,retval] IDispatch **pRs);
    };
    STDMETHODIMP CDBManager::Query(IDispatch **pRs)
    {
    // TODO: Add your implementation code here
              HRESULT hr;
    _ConnectionPtr con;
    _CommandPtr command;
    con.CreateInstance(__uuidof(Connection));
    con->CursorLocation = adUseClient;
    _bstr_t ConStr("DSN=mydate;UID=;PWD=");
    hr = con->Open(ConStr,L"",L"",-1);
    command.CreateInstance(__uuidof(Command));
    command->ActiveConnection = con;
    command->CommandText = "select * from student";
    command->CommandType=adCmdText;
    _RecordsetPtr  rsTemp (__uuidof(Recordset));
        rsTemp = command->Execute(NULL,NULL,adCmdUnknown);
              *pRs = (IDispatch *) rsTemp;
    return S_OK;