【问题标题】:How can I allow users to alter the SQL connection string, when Visual Studio only allows it to be an "Application" setting?当 Visual Studio 只允许它成为“应用程序”设置时,如何允许用户更改 SQL 连接字符串?
【发布时间】:2012-10-16 17:41:46
【问题描述】:

如果我可以将连接字符串设置为"User" 设置以供他们编辑,那么现在就可以了。目前,该字符串包含对我的机器的引用,我的测试数据库所在的位置。我想构建一个 alpha 供其他人尝试,但他们需要将其指向他们自己的数据库实例。

更一般地说,在 Visual Studio 设计器中保留DataSets 的正确方法是什么,同时拥有一个能够被用户指向配置的服务器的连接字符串? - 目前他们似乎依赖于我的设置中的连接字符串。

【问题讨论】:

  • 您是否使用 Linq to Entities、LINQ to SQL、ADO 或其他方式连接数据库?
  • 这是一个 MS SQL 数据库,我使用“服务器对象”窗口在我的应用程序中创建了数据集,但有时也直接使用 SqlConnection 调用,因为它看起来更简单。

标签: c# sql winforms visual-studio-2010


【解决方案1】:

将 app.config 与 System.Configuration 一起使用,他们可以在配置中设置正确的连接字符串。

查看这个问题的方法:

Get connection string from App.config

【讨论】:

  • 您介意扩展一下吗?我所指的设置是通过Properties.Settings.Default.etcVisual Studio 访问的,似乎已经将这些保存在 app.config 文件中......你是说它被复制到管理员可以编辑“应用程序”值或类似的地方吗?
  • @noelicus 是的,如果该文件包含任何内容,该文件将是程序运行所必需的。您还可以编辑程序中的值,尽管 MS 无缘无故地让这样做比不应该的要困难得多。还有一些可嵌入的属性保存在 DLL 中,因为您问了这个问题,所以我认为您正在使用它。
  • 那么 app.config 放在哪里呢? - 一位管理员可以编辑。我可以看到“用户”——它是我想要编辑的应用程序设置(如果有)。
  • @noelicus 通常无论 exe 存在于何处,如果您已添加它,它就位于解决方案的根目录中,并且位于 obj/Release 的根目录中
【解决方案2】:

因为,可能返回到数据库的 ConnectionString 包含高度敏感的信息,例如服务器名称、数据库名称,甚至用户 ID 和密码;因此,该信息本质上被设计为对用户社区进行伪装或保密。您的应用程序的恶意用户会非常喜欢利用用户控制的连接字符串的机会。

如果您需要以这种方式控制数据,您应该考虑某种在后台执行特定数据主机选择的分析机制,而不是完全由用户控制的方式。

编辑

我建议的一种可能的替代方法是提前确定“替代”服务器,并将相应的连接字符串添加到应用程序的配置文件中。在应用程序本身中,提供某种与用户想要使用的数据集相关联的用户友好标识符,然后将该标识符在幕后与正确的连接字符串相关联,从而使连接字符串的详细信息保持私密。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 2014-07-04
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 2016-12-10
    • 2011-05-31
    • 1970-01-01
    相关资源
    最近更新 更多