在 Visual Studio 2005 中存储连接字符串的增强功能






2.91/5 (18投票s)
2005年6月30日
3分钟阅读

59004
Visual Studio 2005 中存储连接字符串的增强。
引言
本文介绍 Visual Studio 2005 中存储连接字符串的一些增强功能以及 `ConnectionStringBuilder` 的用法。 每当我们使用 ADO.NET 时,我们总是对存储连接字符串感到好奇。“我应该将连接字符串存储在哪里?” - 至少对于初学者来说,可能是一个常见问题。
在 .NET 1.x 中存储连接字符串
在 .NET Framework 1.x 中,配置文件(例如 *web.config* 文件)支持一个名为 `<appSettings>` 的部分,用于存储名称/值对。所有这些值都会填充 `AppSettings` 集合,并且可以很容易地以编程方式检索,如下所示
string connString = ConfigurationSettings.AppSettings["MyNWind"];
这是在我们的日常应用程序中存储连接字符串的常见情况。 优点是可以将连接字符串放在已编译代码之外。 这种存储连接字符串的方式也使信息对应用程序全局可用,可以很容易地从任何模块调用。 所以,我们确信没有与连接字符串相关的问题。 您可以在 `<appSettings>` 部分中存储任何可以用平面名称/值对呈现的数据。
Whidbey 中的增强功能
在 Whidbey 中,Microsoft 引入了一个 `<connectionStrings>` 部分,用于包含连接字符串(例如 SQL 连接字符串)。 该部分名为 `<connectionStrings>`。 其结构如下所示
<connectionStrings>
<add name="EmployeeDB”
connectionString="SERVER=…;DATABASE=…;UID=…;PWD=…;” />
<add name="OrdersDB”
connectionString="~\DATA\CustDB.mdb” />
</connectionStrings>
您可以使用 `<add>`、`<remove>` 和 `<clear>` 节点来操作该部分的内容。 您可以使用 `<add>` 节点添加新的连接字符串,使用 `<remove>` 节点删除以前定义的连接,使用 `<clear>` 节点重置所有连接并创建一个新集合。 通过在应用程序的每个目录中放置一个 *web.config* 文件,您可以自定义目录中的页面可见的连接字符串集合。 每个存储的连接都用一个名称标识。 该名称在整个应用程序中引用实际的连接参数。 `<connectionStrings>` 部分是连接信息的全局和集中式存储库。 以编程方式检索**连接字符串** *web.config* 文件中定义的所有连接字符串都将加载到新的配置 - `Settings.ConnectionStrings` 集合中。 如果您正在以编程方式设置 ADO.NET 对象的连接字符串,则此功能使您的代码灵活且易于维护。 例如,考虑以下 *web.config* 文件
<configuration>
<connectionStrings>
<add name="MyNWind”
connectionString="SERVER=…;DATABASE=northwind;UID=…;PWD=…” />
</connectionStrings>
</configuration>
它注册一个指向给定服务器上 Northwind 数据库并具有特定凭据的连接。 要实际打开该连接,需要以下代码
string cnStr;
cnStr =
ConfigurationSettings.ConnectionStrings["MyNWind"].ConnectionString;
SqlConnection cnObj = new SqlConnection(cnStr);
除此之外,我们还可以加密连接字符串。 加密是可选的,您可以通过在 *web.config* 文件中引用该部分的名称来为任何配置部分启用它。 您可以使用流行的系统工具 *aspnet_regiis.exe* 的最新版本,或者使用 ASP.NET 2.0 配置 API 编写您自己的工具。
aspnet_regiis.exe –pe connectionStrings –app /myapp
在 .NET Framework 1.x 中创建连接字符串
在 .NET Framework 1.x 中,如果我们想以编程方式编写 `connectionstring`,我们会这样做
//serverName,uid,pwd are provided from the user
public void GetData(string serverName, string uid, string pwd)
{
String connectionString = String.Empty;
connectionString += ("Data Source = " + serverName +";");
connectionString += ("User ID = " + uid +";");
connectionString += ("Password = " + pwd +";");
SqlConnection c = new SqlConnection (connectionString);
c.Open();
//Do something with the connection
}
这没有编译时检查问题,甚至可能引发各种运行时问题。
ADO.NET 2.0 中的增强
ADO.NET 2.0 引入了使用 `ConnectionStringBuilder` 来构建连接字符串,这些连接字符串不易出错,而且最好的是它会进行编译时检查。
public void AccessData(string serverName, string uid, string pwd)
{
String connectionString = String.Empty;
//Get serverName from the user
SqlConnectionStringBuilder conStrbuilder =
new SqlConnectionStringBuilder();
conStrbuilder.DataSource = serverName;
conStrbuilder.UserID = uid;
conStrbuilder.Password = pwd;
SqlConnection c = new SqlConnection (conStrbuilder.ConnectionString);
c.Open();
//Do something with the connection
}
使用 Visual Studio 2005 愉快地编程吧!