我使用了一个
static变量(ConnectionSting)来保存。当ConnectionString为空
时去执行取的操作。这样,就可以执行一次IO操作。
 但是当第二个用户需要数据连接的时候他也要初始
ConnectionString。也就是说ConnectionString只能对单个用户来
说是全局的。有没有方法使ConnectionString可以被所有的用户访
问?
但是好多人建议在Web Application中不要使用Static,我也不知道为什么。

解决方案 »

  1.   

    放在config文件中,然后由一个static量读取
      

  2.   

    做web Application 放在web.Config 中,再用Static读取
      

  3.   

    我使用了一个
    static变量(ConnectionSting)来保存。当ConnectionString为空
    时去执行取的操作。这样,就可以执行一次IO操作。
     但是当第二个用户需要数据连接的时候他也要初始
    ConnectionString。也就是说ConnectionString只能对单个用户来
    说是全局的。有没有方法使ConnectionString可以被所有的用户访
    问?
    但是好多人建议在Web Application中不要使用Static,我也不知道为什么
      

  4.   

    我的解决方案:
    1.数据库连接字符串及应用程序需要的其它全局配置存放在web.config的一个自定义配置节中;
    2.在公共服务层管理应用程序配置。其中实现一个应用程序配置类(class ApplicationConfiguration),让ApplicationConfiguration继承并实现IConfigurationSectionHandler接口;
    3.在Gloabl.asax中Application_Start时间中初始化ApplicationConfiguration,如:
    system.Configuration.ConfigurationSettings.GetConfig("ApplicationConfiguration");
    4.这样的话,系统配置数据只在Web应用启动时读一次文件,不会对每个用户都程序初始化,同时避免了直接使用用Application变量。以上是主体思路,具体实现还可以有很多灵活处理和细节。
    另用Application变量保存一个配置管理类的实例其实也很好。再:原贴“实际上取数据连接的操作封装在这里。”==》
    我觉得获取连接字符串之类的操作不应在数据层实现,因为这样的话,数据层就不是一个封装很好的层次,应该从调用者传入,保证数据层良好的封装。
      

  5.   

    我放在web.config
    的appsetting节中
    并且可以做个类来修改
      

  6.   

    注明:上面说是从Duwamish项目中学习来的。vs.net自带的duwamish真的很规范还经典(个人看法)
      

  7.   

    我是把链接串放在 Global 的私有字段里面的,允许别的类通过一个公有的方法去获取。我认为数据库链接字符串是与应用紧紧相连的,所以这种东西放在 Global里面也没什么不好。至于是否应该加上 静态标识,我没有仔细研究过。但是我观察到在一个程序被执行的过程中 Global类的构造方法被不止一次的调用到,因此如果从性能上说,设置为静态的,应该可以避免在Global再次被构造的时候重新设定私有字段,可以稍微提高一点点性能。
      

  8.   

    放在web.Config 中,再用Static读取
      

  9.   

    jjcccc 你好,
         你的意思是直接将连接对象也就是用SqlConnection对象用Application保存?这样在内存中就要一直驻留Conenction对象的,这样会系统的性能及安全。
         我不理解你的
         4.这样的话,系统配置数据只在Web应用启动时读一次文件,不会对每个用户都程序初始化,同时避免了直接使用用Application变量。
         能否详细一下或举个例子?
        
      /*再:原贴“实际上取数据连接的操作封装在这里。”==》
    我觉得获取连接字符串之类的操作不应在数据层实现,因为这样的话,数据层就不是一个封装很好的层次,应该从调用者传入,保证数据层良好的封装。*/
         我可能没有叙述清楚,打开数据连接的操作是在数据层操作,但是我是将打开数据连接的方法是在一个公共的模块,他负责去查找数据连接信息。其实这样做的目的是想让程序员回避数据库,根本不用考虑低层数据库的操作。
      

  10.   

    你的意思是直接将连接对象也就是用SqlConnection对象用Application保存?这样在内存中就要一直驻留Conenction对象的,这样会系统的性能及安全。==》不是啊!不需要在Application中保存任何东西啊!     我不理解你的
         4.这样的话,系统配置数据只在Web应用启动时读一次文件,不会对每个用户都程序初始化,同时避免了直接使用用Application变量。
        ==》主要是配置类要实现IConfigurationSectionHandler接口,这个类本身就象Application对象一样,或者说就是一个自定义的Application对象,是由ASP.Net在WEB应用程序第一次启动时创建(在该类中保存所需要的应用程序级配置,如数据库连接字符串)。具体你可以看一下vs.net的help。
      

  11.   

    可以这样啊web.config中<add key="ConnStr" value="连接字符串" />调用
    Dim cn As OleDbConnection = New OleDbConnection(ConfigurationSettings.AppSettings("ConnStr"))