我最近参与了一个三层应用系统的开发,现在系统开发快结束了,
系统的数据库采用SQL Server 2000,
开发时,数据库连接本地某个机器上的SQL Server,客户端连接应用服务器时
连接本地局域网的某台机器,
现遇到的问题是:
发布给用户的时候,用户机器上的SQL Server实例名不同于开发时的,所以我必须
在发布时在用户机器上先装Delphi,使应用服务器重新连接SQL Server,
而客户端同样必须将DCOM重新连接到应用服务器所在的机器,
这样做太笨了,
我想让系统能在安装后有一个设置连接的操作,怎么做呢?

解决方案 »

  1.   

    数据库连接是在应用服务器中给出的,
    客户端与应用服务器是通过DCOM连接的,
    问题是:
    应用服务器解决的是数据库连接问题,
    而客户端解决的是与应用服务器的连接问题。
      

  2.   

    在中间层设置一个输入数据库所在机器的对话框,连通后保存在注册表或者文件中。客户端也就是前台程序,设置一个登陆对话框,输入中间层的机器名。DCOM.HOST=机器名,然后CONNECT。OK!
    三个点通过两条线就连接起来了。
      

  3.   

    用注册表或者ini配置文件,在客户程序和服务器程序初始化的时候读取配置信息,修改相应的host 或者 connectstring
      

  4.   

    对呀,程序不能做成死的,应该灵活一些。象服务器端数据库连接,客户端服务器连接,都应该通过注册表、ini文件或者其他形式进行配置。
      

  5.   

    我是用读取注册表方式,由AppServer处理,有设置项及默认项.
    我是用oracle8.
      

  6.   

    说起来容易,做起来难啊!!!!数据库连接如果使用bde的话,更加麻烦!!使用dao,ado的话就比较简单了!!!!好好努力!!!这种问题,没有定论,只要你解决了,就是好的,别管你用的什么方法!!
      

  7.   

    同意楼上.能解决就行了......我有时就用SOCKET连接一下,省得配置COM.
      

  8.   

    我现在就用Socket 了,通过internet 访问也方便。
    但是他的安全性不如DComConnection
      

  9.   

    我个人在开发中应用服务器连接SQL Server的配置是写在一个ini文件中的,
    包括SQL Server实例名,连接的库名,这样方便得很,要更改也很容易。
    一些配置类的东东最好是不要写死在程序中。
    三层的程序,一般使用socket连接为好,不然的话你把程序给客户以后,
    如果他们重新系统后,会烦到你要死....
      

  10.   

    1.在中间层,有一个与SQL SEVER打交道的Connection控件,它的连接属性字符串可以动态指定,这样你就可以在界面上或某个参数设置窗口中让用户或技术人员指定。
    2.同时,该控件可以采用机器名访问SQL SEVER,也可以采用IP地址访问,这些都是可以搞定的。
    3.同样在用户端与中间件的通讯也是类似的,只是采用的方法不同,它需要在ActiveForm中定义属性,在ASP网页中为这些属性赋值即可。
    我们采用这种方法已经搞定很多项目了,非常可靠!
      

  11.   

    你把计算机名字给写死了//这样就只有名字正确才能连接//
    应该在程序中 动态指定//
    dcom的配置很麻烦//
    主  题:  DCOMCNFG怎样配置才能发布利用DCOMConnection连接的分布式应用程序? 
    作  者:  lining_cumt985 (小白)  
    等  级:    
    信 誉 值:  100 
    所属论坛:  Delphi 基础类 
    问题点数:  100 
    回复次数:  5 
    发表时间:  2002-5-19 20:43:41 
       
     
       我把所有的用户都作为完全控制了,可是在客户端总是不能调用应用程序服务器。
    出现错误:服务器运行失败。
    不知道该怎样配置DCOM?
      
     
     
     回复人: robbot(曾记否) ( ) 信誉:100  2002-5-19 21:21:33  得分:10 
     
     
      
    客户端发布了midas.dll了吗,  
     
    Top 
     
     回复人: delphi0302(好好学习,天天向上!) ( ) 信誉:100  2002-5-19 21:38:15  得分:10 
     
     
      
    客户端发布了midas.dll  
     
    Top 
     
     回复人: lining_cumt985(小白) ( ) 信誉:100  2002-5-19 21:43:51  得分:0 
     
     
      
    客户端已经安装Delphi5了。难道要拷贝一个midas.dll过去?  
     
    Top 
     
     回复人: make11111(可可(清舞飞扬的男友)) ( ) 信誉:100  2002-5-20 9:23:07  得分:80 
     
     
      
    DCOM配置  如果在Windows NT环境下正常运行应用服务器,必须进行DCOM配置。配置方法如下:  1.运行NT服务器上的dcomcnfg程序,进行DCOM配置。  2.进入DCOM的总体默认属性页面,将“在这台计算机上启用分布式COM”打上勾,将默认身份级别改为“无”。  3.进入DCOM的总体默认安全机制页面,确认默认访问权限和默认启动权限中的默认值无EveryOne,如果不去掉EveryOne,应用服务器不能正常启动。  4.在常规页面中,双击你的应用服务器,打开你的应用服务器DCOM属性设置。  5.将常规页面中的身份验证级别改为“无”。  6.位置页面中选上“在这台计算机上运行应用程序”。  7.将安全性页面设置中,均选择“使用自定义访问权限”,编辑每一个权限,将EveryOne加入用户列表中。  8.身份标识页面中,选择“交互式用户”。  9.NT的GUEST用户不能禁用。同样,你要把你服务器上的的midas.dll考到客户机器的system目录下才行
    同时运行一下regsvr32 midas.dl
      
      

  12.   

    三层的问题:
    在写中间件是用ADOConnection
    在远程模块的Create事件中:
    try
      adoconnect.connected:=false;
      adoconnect.connectionstring:=adostr;//(adostr是连接数据库的连接字符串,可以通过
      //做一个小软件把这个连接字符串写入注册表中,然后进行读入就可以了)
      adoconnect.connected:=true;
    except
      adoconnect.connected:=false;
    end;
    做完中间件后在属性面里把connected设置为False ,连接字符串设为空,然后进行编译。
    在发布时只要和Midas.dll一起发布,并注册就可以使用。
      

  13.   

    http://expert.csdn.net/Expert/topic/1052/1052799.xml?temp=.7250177
      

  14.   

    写注册表、ini、txt都可以,很简单的。