【问题标题】:Winforms - Replace a ConnectionString at runtimeWinforms - 在运行时替换 ConnectionString
【发布时间】:2009-06-30 15:25:48
【问题描述】:

我想允许我的用户在运行时在登录页面上的不同数据库之间切换。

我目前将 ConnectionString 存储在我的应用程序设置文件中,所有数据集都引用此设置。

我曾尝试在运行时修改此设置,但这似乎是不可能的。

最好的方法是什么?

【问题讨论】:

    标签: .net winforms configuration connection-string


    【解决方案1】:

    您的配置文件中不能只有第二个连接字符串吗?你设置了什么样的数据访问代码?

    【讨论】:

    • 我所有的数据集的连接字符串都是 MyConnectionString(存储在 app.setting 中)
    • 您的所有数据集都在单独访问配置文件中的值是您的问题吗?如果是这样,为什么不创建一段代码来负责将连接字符串返回到您的数据集,然后让该代码读取适当的连接字符串。
    【解决方案2】:

    您可以通过在获取连接字符串之前调用ConfigurationManager.RefreshSection 来强制代码从磁盘中获取连接字符串:

    ConfigurationManager.RefreshSection("connectionStrings");
    string connectionString = ConfigurationManager.ConnectionStrings["someConnection"].ConnectionString;
    

    【讨论】:

      【解决方案3】:

      数据库是否加密?

      如果不需要大量隐私,您可以按用户存储连接字符串。

      例如:

      System.Properties.Default.MyConnectionString = "Blah";
      System.Properties.Default.Save();
      

      string myConnectionString = System.Properties.Default.MyConnectionString;
      

      编辑:这些最初可以通过转到项目 -> 属性 -> 设置在 VS 中设置,并确保将它们放在“用户”范围内(应用范围在运行时是只读的,除非我弄错了)。

      EDIT2:关于以下评论:

      SqlConnection myConnection = new SqlConnection();
      //Set from a normal String saved in user's settings
      myConnection.ConnectionString = System.Properties.Default.MyConnectionString; 
      myConnection.Open();
      

      【讨论】:

      • 连接字符串仅限于应用程序范围 :-( 谢谢
      • 除非我弄错了,否则你可以使用 'String' 类型。
      • properties.default中的connectiostring是只读的,怎么改?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-25
      • 2013-11-29
      • 2014-05-13
      • 1970-01-01
      • 2018-12-23
      相关资源
      最近更新 更多