Я провел некоторое исследование, прежде чем опубликовать этот вопрос, и я осознаю тот факт, что, когда данные не возвращаются, ExecuteScalar вызовет исключение System.NullReferenceException. Вот почему я изменил свой хранимый процесс, чтобы «вернуть 1», так что есть гарантированное возвращаемое значение. Тем не менее, я все еще получаю исключение ссылки NULL.
Поэтому я попытался использовать SqlCommand для запроса таблицы с данными:
SqlCommand sqlCommand = new SqlCommand("SELECT * FROM ATableThatHasValues", conn)
Когда я запустил execute scalar, я смог выбрать значение, поэтому я знаю, что у меня есть разрешение на запрос к базе данных. Я подозреваю, что это какая-то конкретная сохраненная настройка разрешения процесса, которую я пропустил?
Буду очень признателен за любые комментарии / предложения, так как я застрял на этом в течение дня. (
Мой код выглядит так:
using (SqlConnection sqlConnection = new SqlConnection(connectionString))
{
sqlConnection.Open();
using (SqlCommand sqlCommand = new SqlCommand("GetSomeValue", sqlConnection))
{
sqlCommand.CommandType = CommandType.StoredProcedure;
//sqlCommand.Parameters.Add(new SqlParameter("@Id", this.ID));
//sqlCommand.Parameters.Add(new SqlParameter("@State", 1 /* active */));
byte retValue = (byte)sqlCommand.ExecuteScalar();
return retValue;
}
}
СПАСИБО!