在我的"解决方案", 共有三个项目一个DAL类库(数据层),一个BLL类库(业务逻辑层)和一个asp.net程序(UI层)我在在数据层中创建一个强类型的DataSet , 然后在BLL层或是UI层调用, 我在DAL层中创建强类型数据集时, 我的连接字符串为:Data Source=server9;Initial Catalog=HATest;Persist Security Info=True;User ID=sa;Password=sapwd  (这是测试数据库的连接)但我系统发布时, 每次都得先将DAL层的数据连接改成Data Source=server9;Initial Catalog=HA;Persist Security Info=True;User ID=sa;Password=sapwd (正式数据库的连接), 然后重新编辑dal.dll才能发布.
我现在想问题是, 能不能让dal层的强类型数据库中的数据连接也读取UI层中web.config里面配置的连接字符串?

解决方案 »

  1.   

    你可以在UI层的时候再给DAL层赋数据库连接字符串
      

  2.   


    using System.Configuration;
    string strConn=ConfigurationManager.AppSettings["strConn"].ToString();web.config<appSettings>
        <add key="strConn" value="Data Source=server9;Initial Catalog=HA;Persist Security Info=True;User ID=sa;Password=sapwd"/>
    </appSettings>
      

  3.   

    protected static string SERVER_CONNECTION = ConfigurationSettings.AppSettings["SQLServer"].ToString();
      

  4.   


    这个是没问题, 不过我是在DAL层创建强类型DataSet中, 它会要求提供数据库连接的, 这个时候我如何去读取Web.Config里面的连接字符串呢?
      

  5.   


    在创建强类型DataSet时, 如何传递参数, 好戏像都是用向导完成的.
      

  6.   


    问题的关键是, 我在DAL层中创建强类型DataSet, 这个过程一般都是向导完成的, 并没有办法自己让其去读取web.Config中的配置.
      

  7.   

    那你自己写一个方法来返回dataset没用过向导来生成
      

  8.   

    向导生成dataset。这是什么东西?
      

  9.   

    强类型的dataset,没用过,不会
      

  10.   

    添加引用,然后读取config 配置
      

  11.   

    你用的什么向导创建工具,是vs自带的数据集生成工具吗?
    如果是,那打开数据集设计器选表下部对应的TableAdapter的属性,在connection项中就能设定
      

  12.   


    是的, 如果是在同一个项目中, 这样是没有问题的,关键的是, 我的DAL是单独的一个dll项目.
      

  13.   

    两个办法
    1.直接修改设计器自动生成的xxx.designer.cs文件,找到xxxTableAdapter的InitConnection()方法,修改连接串,当然这样每次dataset修改后,都要再手工改下自动生成的文件。2. 在对应的数据集源码文件(DataSetxxx.cs)文件中,修改对应的partial类。
    在xxxTableAdapter对应的parital类中,另加上一个带参数的构造函数, 这个参数就是从web.config中读出来的连接串。以后调用的时候,不要直接用缺省的构造,而用这个带参数的构造就可以了。
    示例代码:namespace ClassLibrary1.DataSet1TableAdapters
    {
    public partial class CustomerTableAdapter
    {
    public CustomerTableAdapter(string connStr)
    {
    this._connection = new SqlConnection(connStr);
    }
    }
    }
      

  14.   

    可以的。只要在声明引用using System.Configuration;
    string strConn=ConfigurationManager.AppSettings["名称"].ToString();
      

  15.   

    你可以定义一个list[]用来保存连接数据库字符串,用key区分使用时候使用list[0],list[1]....
      

  16.   

    using System.Configuration;
    string chinese wholesalers
    ugg=ConfigurationManager.AppSettings["strConn"].ToString();
      

  17.   

    <appSettings>
        <add key="strConn1" value="Data Source=server9;Initial Catalog=HA;Persist Security Info=True;User ID=sa;Password=sapwd"/>
        <add key="strConn2" value="Data Source=server9;Initial Catalog=HA;Persist Security Info=True;User ID=sa;Password=sapwd"/>
    </appSettings>使用时:
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[0].ConnectionString);
    相当于:
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["strConn1"].ConnectionString);SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings[1].ConnectionString);
    相当于:
    SqlConnection conn = new SqlConnection(System.Configuration.ConfigurationManager.ConnectionStrings["strConn2"].ConnectionString);
      

  18.   

    强类型的DataSet可以读取web.config文件中的连接字符!!
      

  19.   

    将连接字符放在web.config
    <connectionStrings>
    ......
    </connectionStrings>事实上默认的强类型的DataSet就是读取web.config中的连接字符串!!
      

  20.   

    找到方法了, 是在DataSetxxxx.Designer.cs中修改其"InitConnection()"方法即可.
    private void InitConnection() {
                this._connection = new global::System.Data.SqlClient.SqlConnection();
                this._connection.ConnectionString = CommonFun.ConnectionString;
            }
      

  21.   

    请问这个DataSet.Designer.cs是什么文件