Предполагая, что вы используете .NET, вы обычно должны открывать и закрывать соединение для каждой логической операции.Если вы выполняете несколько запросов по одному и тому же пути к коду (то есть вы знаете , что собираетесь делать другой запрос), то имеет смысл оставить соединение открытым, но я бы не оставил его открытым "на всякий случай ".
Имейте в виду, что пул соединений в .NET делает" открытие соединения "достаточно дешевым, так как сетевое соединение все равно будет работать.Обычно вы используете что-то вроде:
using (SqlConnection connection = new SqlConnection(...))
{
connection.Open();
using (SqlCommand command = new SqlCommand(connection, sql))
{
// Execute the command etc
}
}
Оператор using
автоматически "закроет соединение" (читай: верните его в пул соединений) автоматически, когда вы закончите.
Хранение каждого запроса (или набора запросов) в логическом отношении означает, что труднее в конечном итоге столкнуться с условиями гонки, проблемами с многопоточностью и т. Д. Я не рекомендовал бы рекомендовать сохранять соединение в качестве глобальной переменной или чего-либо подобного.
Конечно, если вы используете что-то вроде LINQ to SQL, обработка соединений, скорее всего, будет в основном сделана для вас.