我已经完成了我的第一个 c# 应用程序,它管理 sql server 2005 上的一些表,但我想修改它,以便它可以从文本文件中读取连接字符串。通过这样做,我可以通过仅更改文本文件中的连接字符串并将我的应用程序移动到另一台 PC 并避免代码本身的任何更改。我怎样才能做到这一点?
4 回答
您可以从文件中的专用 配置部分App.config
管理连接字符串。在这里查看更多信息。
与其在非标准解决方案上使用纯文本文件,不如看看 .NET已经提供了什么。您可以在移动应用程序时更改配置文件中的值,而无需重新编译它,因为配置是在运行时读取的。
这是一个例子:
<configuration>
<connectionStrings>
<add name="MyConnectionString"
connectionString="Data Source=.;Initial Catalog=MyDatabaseName;IntegratedSecurity=True"
providerName="System.Data.SqlClient" />
</connectionStrings>
</configuration>
使用 . 从代码中访问它ConfigurationManager.ConnectionStrings["MyConnectionString"]
。
如果您确实必须使用文本文件,那么您应该采取稍微不同的方法。
- 首先,您必须在文件系统上为连接字符串文件使用固定路径。您可以在您的应用程序中对其进行硬编码- 一个BAD PRACTICE,或者使用 Settings 或 App.config 文件来定义文本文件路径。
- 您必须以编程方式读取文件。如果是纯文本,可以使用
System.IO.File.ReadAllText(filePath);
wherefilePath
参数是文件的绝对路径。为了在编译应用程序时需要更改路径,您可以使用配置/设置方法来定义文件的物理路径,因为更改它们不需要重新编译(如前文所述的连接字符串)
您应该使用connectionStrings
app/web.config 文件中的部分:
<connectionStrings>
<add name="DefaultConnection" providerName="System.Data.SqlClient" connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-EditorTemplateCollectiosns-20130404170435;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\aspnet-EditorTemplateCollectiosns-20130404170435.mdf" />
</connectionStrings>
然后,当您想在代码中访问它时,请执行以下操作:
var connectionString = ConfigurationManager.ConnectionStrings["DefaultConnection"];
如果您正在开发桌面应用程序,则首选位置是 app.config
<connectionStrings>
<add name="TailorShop.Properties.Settings.TailorShopConnectionString" connectionString="Data Source=.\sqlexpress;Initial Catalog=TailorShop;Integrated Security=True" providerName="System.Data.SqlClient"/>
</connectionStrings>
注意这里的连接名称,因为它是在属性中定义的(双击项目解决方案资源管理器中的属性节点并转到设置)然后您可以在那里添加连接字符串。之后你会看到如上图所示;
现在,为了访问它,您可以在代码中执行此操作;
Settings.Default.TailorShopConnectionString
为了使用此代码,您必须添加一个引用,例如 yourprojectname.properties;
using TailorShop.Properties;
看看 System.Configuration ( http://msdn.microsoft.com/en-us/library/system.configuration.aspx )。有一些读取配置文件的内置方法(App.Config)