强烈建议不要使用一个“中央”连接,因为它会破坏 ADO.NET 实现的多种模式。改用“中央连接字符串”要容易得多。如果您想使用动态参数,您可能需要查看“SqlConnectionStringBuilder”类。
ADO.NET 是围绕数据库连接的“获取晚,早发布”模式构建的。其他所有尝试迟早都会导致大量问题(相信我,见过很多次:网络错误/事务错误/并发错误/多线程错误......)
ADO.NET 使用“连接池”来实现与数据库的实际物理连接。因此,除非您为每个连接使用不同的连接字符串,否则无论如何您都应该以一个连接结束。但是由于“池”管理着那个,所以当它(重新)打开时它总是处于干净的状态。
就个人而言,我喜欢对我的连接字符串使用这样的东西:
internal static class DataSource
{
private static string _ConnectionString;
public static string ConnectionString
{
get
{
if (_ConnectionString == null)
_ConnectionString = FunctionToDynamicallyCreateConnectionstring();
return _ConnectionString;
}
}
private static string FunctionToDynamicallyCreateConnectionstring()
{
SqlConnectionStringBuilder cb = new SqlConnectionStringBuilder();
// initialize cb's properties here...
return cb.ToString();
}
}
然后
SqlConnection connection = new SqlConnection(DataSource.ConnectionString);
这种模式将确保在我的代码中使用完全相同的连接字符串,并且动态代码仍然只运行一次。
[编辑] 在大多数情况下,我避免将整个连接字符串编码到 app.config 文件中,因为某些参数可能是我的代码工作所必需的,并且永远不应该被弄乱。我为我读取并分配给 ConnectionStringBuilder 的“服务器”或“数据库”属性创建自定义设置...