до сих пор я всегда использовал аналогичную структуру для получения данных из БД и заполнения DataTable
public static DataTable GetByID(int testID)
{
DataTable table = new DataTable();
string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";
using (SqlConnection cn = new SqlConnection(Configuration.DefaultConnectionString))
{
SqlCommand cmd = new SqlCommand(query, cn);
cmd.Parameters.Add("@testID", SqlDbType.Int).Value = testID;
cn.Open();
table.Load(cmd.ExecuteReader());
}
return table;
}
Теперь я видел некоторые предупреждения в анализе сборки:
TestService.cs (37): CA2000: Microsoft.Reliability: в методе «TestService.GetByID (int)» объект «таблица» расположен не по всем путям исключений.Вызовите System.IDisposable.Dispose для объекта 'table' до того, как все ссылки на него выйдут из области видимости.
TestService.cs (42): CA2000: Microsoft.Reliability: In метод 'TestService.GetByID (int)'вызовите System.IDisposable.Dispose для объекта 'cmd' до того, как все ссылки на него выйдут из области видимости.
Должен ли я изменить свой код в
public static DataTable GetByID(int testID)
{
DataTable table = new DataTable();
string query = @"SELECT * FROM tbl_Test AS T WHERE T.testID = @testID";
using (SqlConnection cn = new SqlConnection(Configuration.DefaultConnectionString))
{
using (SqlCommand cmd = new SqlCommand(query, cn))
{
cmd.Parameters.Add("@testID", SqlDbType.Int).Value = testID;
cn.Open();
table.Load(cmd.ExecuteReader());
}
}
return table;
}
Что делать с объектом DataTable?Это хорошая практика для размещения SqlCommand внутри использования?
Спасибо
Приветствия