在运行时更改Web配置中的数据集连接字符串

时间:2013-07-13 12:11:55

标签: asp.net

我有 c#生成的数据集。

如何更改连接字符串,以便将数据集与另一个(结构相同但填充程度不同的数据库)一起使用?

这必须在运行时发生,因为我在编译时不知道服务器或数据库名称。我正在使用 c#3.5

2 个答案:

答案 0 :(得分:0)

我认为没有简单的方法,您无法以编程方式更改整个DataSet的连接字符串,因为它是为每个TableAdapter定义的。

您需要创建TableAdapter的部分类来更改连接字符串,因为Connection属性为internal(如果您的DAL位于不同的程序集中)。不要更改designer.cs文件,因为它会在设计器上的下一次更改后自动重新创建。要创建它,只需右键单击DataSet并选择“show code”。

例如(假设TableAdapter名为ProductTableAdapter):

namespace WindowsFormsApplication1.DataSet1TableAdapters
{
    public partial class ProductTableAdapter 
    {
        public string ConnectionString {
            get { return Connection.ConnectionString; }
            set { Connection.ConnectionString = value; }
        }
    }
}

现在您可以轻松更改它:

var productTableAdapter = new DataSet1TableAdapters.ProductTableAdapter();
productTableAdapter.ConnectionString = someOtherConnectionString;

以下是我的示例DataSet和创建的文件DataSet1.cs的屏幕截图:

enter image description here

答案 1 :(得分:0)

ide mvs 2008 在 settings.designer.cs 验证程序中或编辑此

  public string NamOfappConnectionString{
        get {
            return ((string)(this["NamOfappConnectionString"]));
        }
      //add this line     
        set {
            this["NamOfappConnectionString"]=value;
        }
    }

 //atr untime use this


string myconnexion = "Data Source=" + txt_data_source.Text + ";Initial Catalog=" + txt_initial_catalog.Text + ";Persist Security Info=True;";

    ConfigurationManager.AppSettings.Set("NamOfappConnectionString", myconnexion);

//保存到设置

Properties.Settings.Default.NamOfappConnectionString= myconnexion;
Application.Restart();