Я тоже сделал подобное в своих приложениях, чтобы иметь централизованное место для отправки моих запросов, получения сообщений об ошибках в случае сбоя и возврата данных. С тех пор я перешел к запросам строго типизированных наборов результатов, но предпосылка та же.
Чтобы расширить то, что у вас есть, вы можете захотеть еще раз обернуть его, разрешив передать полную команду SQLCommand. в котором может быть параметризован. Вы не хотите просто объединять строку вместе с ...
sqlCmd.CommandText = "select .. from .. where x = " + SomeVariableFromUncontrolledSource;
Вы бы просили SQL Инъекция.
public DataTable GetDataTable(string query)
{
var sqlcmd = new SqlCommand( query );
return GetDataTable( sqlcmd );
}
public DataTable GetDataTable(SqlCommand sqlcmd)
{
using (SqlConnection _connection = new SqlConnection(ConnectionString))
{
_connection.Open();
using (SqlDataAdapter adapter = new SqlDataAdapter(sqlcmd, _connection))
{
DataTable dt = new DataTable();
adapter.Fill(dt);
return dt;
}
}
}
Опять же, вы, вероятно, хотите попробовать / перехватить такое плохое sql соединение, плохая команда запроса, неверные параметры, плохое чтение и т. д. c ... Но есть преимущество, что он централизован и не дублирует открытое, закрытое соединение, попробуйте / ошибки ловушки тоже. И перегрузив функцию, чтобы разрешить простую строку ИЛИ полностью подготовленную SqlCommand, вы оба идете в одно и то же центральное место.