Использование ExecuteScalar () приводит к вызову ExecuteReader () с CommandBehaviour «по умолчанию»? - PullRequest
0 голосов
/ 28 февраля 2011

Трассировка стека показывает, что ExecuteReader является базовым методом для ExecuteScalar. Во время копания для связанной команды behaviour я обнаружил пост ниже - заявив, что команда behaviour.default используется читателем.

Имеет ли ExecuteScalar () какие-либо преимущества по сравнению с ExecuteReader ()?

Мне известно, что соединение всегда можно закрыть и удалить явным образом с помощью datareader.close (), datareader.dispose () - при условии, используется ExecuteReader (commandbehaviour.Closeconnection). ExecuteReader (CommandBehaviour.Default), с другой стороны, сохраняет базовое соединение открытым, даже когда объект чтения данных закрыт и / или удален. Поэтому мой вопрос: если executetescalar использует поведение по умолчанию, как я могу убедиться, что основное соединение закрыто после получения скалярного значения?

1 Ответ

1 голос
/ 28 февраля 2011

Использование языка C # - одна из лучших вещей, включенных в язык.Это не решит вашу проблему напрямую, но если вы используете стандартную привычку использовать ее для обертывания SQLConnections (и любого другого типа, реализующего IDisposable), вам не придется беспокоиться о многих подобных вещах ...1001 *

using(SQLConnection connection = new SQLConnection(...))
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...