是否存在需要以下结构的情况?
using (Something something = new Something())
{
try
{
}
finally
{
something.SomeCleanup();
}
}
或者,是否应该在隐式调用中执行所有清理任务?something.Dispose()
这是有问题的代码:
public static DataTable GetDataTable(string cmdText, IEnumerable<Parameter> parameters)
{
// Create an empty memory table.
DataTable dataTable = new DataTable();
// Open a connection to the database.
using (SqlConnection connection = new SqlConnection(ConfigurationTool.ConnectionString))
{
connection.Open();
// Specify the stored procedure call and its parameters.
using (SqlCommand command = new SqlCommand(cmdText, connection))
{
command.CommandType = CommandType.StoredProcedure;
SqlParameterCollection parameterCollection = command.Parameters;
foreach (Parameter parameter in parameters)
parameterCollection.Add(parameter.SqlParameter);
try
{
// Execute the stored procedure and retrieve the results in the table.
using (SqlDataAdapter dataAdapter = new SqlDataAdapter(command))
try
{
dataAdapter.Fill(dataTable);
}
catch
{
dataTable.Dispose();
dataTable = null;
}
}
finally
{
//parameterCollection.Clear();
}
}
}
return dataTable;
}
注意:我已经定义了这个Parameter
类,所以这个函数的用户不必SqlParameter
直接处理 s 的创建。类的SqlParameter
属性Parameter
可用于检索SqlParameter
.
在某些时候,我的程序执行以下操作(无法发布代码,因为它涉及很多类;基本上,我有一个创建大量对象的迷你框架):
- 创建一个 s 数组
Parameter
。 GetDataTable('sp_one', parameters)
.GetDataTable('sp_two', parameters)
.