如何在C#.net中创建应用程序的连接字符串,与计算机无关?

时间:2010-11-21 14:28:10

标签: c#

当我将C#.net中的应用程序从一台计算机转移到另一台计算机时,我每次都必须更改连接字符串,因为数据库文件的位置已经改变。

我怎样才能阻止这种情况,这样我就不必一次又一次地更改连接字符串?

4 个答案:

答案 0 :(得分:1)

当数据库的位置发生变化时,必须在某处更改某些内容。回到ODBC时代,您可以定义系统范围的连接,并在连接字符串中仅指定名称。但是如果服务器移动,你还是必须改变ODBC。

我可以在这里想到几个解决方案。一个是如果您的数据库在本地计算机上运行,​​请使用localhost而不是计算机名称。

如果是文件,请创建一个网络共享并将其放在该文件上,以便您使用\\localhost\shareName\file.db

如果它是服务器数据库并且可以在其他计算机上,请使用 DNS名称,使用主机文件并指定一个公用名称,以便您可以在不同的网络中。

答案 1 :(得分:0)

  • 如果可行,请将您的数据库放在网络上并在连接字符串中指定网络位置;

  • 使用Connection String Builder修改连接字符串的变量部分。

答案 2 :(得分:0)

使用相对路径。对于大多数情况,您可以使用内置的|DataDirectory|,它转换为您正在运行的基本目录(或ASP.NET场景中的App_Data)。

如果您使用的是客户端 - 服务器数据库,例如SQL Express,那么您还应该将服务器名称设置为.\SQLEXPRESS - 这将使用本地实例。

答案 3 :(得分:0)

这是一个不时出现的旧版本。

Visual Studio能够支持多个构建环境,并允许您指定特定于环境的值(即数据库连接字符串),以便您可以在任何位置进行测试。

从顾的博客中拉出来,可以看到here的完整帖子:

  

事实证明,您可以在Visual Studio构建环境中轻松自动执行此配置过程(并且这样做既可以在IDE中运行,也可以在命令行/自动构建中运行)。以下是您执行此操作所采取的高级步骤。它们适用于VS 2005和VS 2008。

     
      
  1. 使用ASP.NET Web应用程序项目(具有基于MSBuild的项目文件)
  2.   
  3. 打开VS Configuration Manager并为您的项目和解决方案创建新的“Dev”,“QA”,“Staging”构建配置
  4.   
  5. 在项目中添加新的“web.config.dev”,“web.config.qa”和“web.config.staging”文件,并对其进行自定义以包含应用程序的模式特定配置设置
  6.   
  7. 向项目文件添加一个新的“预构建事件”命令,该命令可以在每次构建项目时使用适当的模式特定版本自动复制项目中的web.config文件(例如:如果您的解决方案是在“Dev”配置中,它会将web.config.dev设置复制到主web.config文件中。)
  8.   

在VS 2010中,我相信大多数设置都是在您制作新应用程序时为您完成的,但原则仍然相同。如果您对这种做法感到满意,可以跳过预构建事件,转而使用via代码中的连接字符串。 StackOverflow上有一个例子here on this answered question

答案的开头(或者至少我更有可能实现这一点)是将每个连接字符串值存储在一个单独的connections.config文件中,该文件具有对环境唯一的名称。这将仅包含来自web.config文件的connectionStrings部分的值。我喜欢这样做,因为这意味着添加一个新环境并不意味着开发人员触摸主web.config文件,你也可以做一些服务器端技巧从网站的webroot中删除数据库连接字符串,使其更安全一点。

此处可以看到将connectionStrings移至另一个fole的方法:http://www.bigresource.com/Tracker/Track-ms_sql-cberGbNT/

我还会考虑使用数据库的网络可访问版本,而不是让每个开发人员在他们的环境中都有一个。如果您必须完成断开连接的工作,那么从管理的角度来看,项目的每个阶段(开发,分段和生产)实际上应该只有一个数据库。

希望这是有帮助的,并且随时可以就任何无意义的问题提出后续问题。