Datareader не возвращает результатов в VS, все же Хранимая процедура возвращает несколько наборов результатов в SQL-сервере

Ну, это можно сделать с помощью CollapsingToolbarLayout.

Спецификация материала: https://material.io/develop/android/components/collapsing-toolbar-layout/

5
задан DOK 22 June 2010 в 14:08
поделиться

7 ответов

Вы когда-либо добавляете параметры к набору Параметра SqlCommand? Вы упомянули, что те, которые не работают, являются теми, которые берут входные параметрические усилители, все же в Вашем коде, у Вас нет ничего как это:

cmdPopulateFilterDropDowns.Parameters.AddWithValue(...);
5
ответ дан 18 December 2019 в 09:54
поделиться

Глупая ошибка с моей стороны. После нескольких часов truggling с этим я понял, что хранимые процедуры, которые я использовал, возвращают несколько наборов результатов, от которых первый набор результатов был всегда пуст. Следовательно отсутствие результатов.

5
ответ дан 18 December 2019 в 09:54
поделиться

Выполните трассировку SQL-сервера против сервера, Вы думаете, что выполняете свою команду против. Что на самом деле отправляется на сервер? Я думаю, что Вы найдете свою подсказку дымящегося оружия там.

BFree имеет положительную сторону, чтобы проверить, что AddWtihValue () по сравнению с Добавляют (). Также удостоверьтесь, что при явном инстанцировании объектов SqlParameter, та же проблема, Вы будете иметь с.Add (), может произойти. Обратите внимание, что существует жгут из прутьев недостатка дизайна Параметры. Добавьте () при передаче значений (интервала) 0 в него - они взяты в качестве перечисления вместо значения...

2
ответ дан 18 December 2019 в 09:54
поделиться

это может казаться очевидным, но скажите мне о вызове.Read () методом? Я очень не хочу поставить такой вопрос, но иногда это - самые очевидные вещи, которые мы забываем, когда мы сводим нас с ума по проблеме.

2
ответ дан 18 December 2019 в 09:54
поделиться

Когда Вы добираетесь, "IEnumerable не возвратил результатов" ошибка? Вы могли показать пример того, как Вы получаете доступ к DataReader?

Что происходит, если Вы устанавливаете точку останова перед возвратом, и выполненный

rdrFilterSearch.GetString(0);

в непосредственном окне?

0
ответ дан 18 December 2019 в 09:54
поделиться

Установка направления параметра в sqlParam должна решить проблему.

mySqlParam.Direction = ParameterDirection.ReturnValue;

Если вы ожидаете, что будет возвращено более одного значения, просто добавьте параметр и установите его направление:

    SqlParameter mySqlParam = new SqlParameter();
    mySqlParam.ParameterName = "@ID";
    mySqlParam.SqlDbType = SqlDbType.int;
    mySqlParam.Direction = ParameterDirection.ReturnValue;

    SqlParameter mySqlParam = new SqlParameter();
    mySqlParam.ParameterName = "@Name";
    mySqlParam.SqlDbType = SqlDbType.NVarChar;
    mySqlParam.Direction = ParameterDirection.ReturnValue;


    SqlParameter mySqlParam = new SqlParameter();
    mySqlParam.ParameterName = "@Address";
    mySqlParam.SqlDbType = SqlDbType.NVarChar;
    mySqlParam.Direction = ParameterDirection.ReturnValue;

mySqlParam.ParameterName не обязательно должно в точности совпадать с именем в хранимой процедуре.

Затем вы можете прочитать значения следующим образом (не полный пример):

int.Parse(dataReader["ID"]);
dataReader["name"].ToString();
dataReader["address"].ToString();

значение в ] dataReader [""]. ToString (); должен соответствовать имени столбца из хранимой процедуры.

1
ответ дан 18 December 2019 в 09:54
поделиться

У меня была похожая, но не идентичная проблема, которая сводила меня с ума, поэтому я добавлю ее на случай, если это поможет кому-то в очереди.

Я мог запустить SQL или вызвать хранимую процедуру с тем же SQL на SQL Server с помощью Management Studio и получить обратно заполненный набор результатов. Но когда я использовал идентичный встроенный SQL или вызвал содержащий его sproc из моего кода Visual Studio для проекта веб-приложения ASP.Net, я получил пустой DataReader.

Как тот же идентичный SQL может вернуть набор результатов в Management Studio, но пустой DataReader в Visual Studio? Ответ заключался в том, что я работал как другой пользователь с разными разрешениями в двух инструментах. В Management Studio я работал разработчиком с определенной ролью SQL с множеством разрешений. Но в Visual Studio я работал как учетная запись службы, которой не были предоставлены разрешения на запрашиваемые мной таблицы.

На самом деле моя проблема была на шаг сложнее. Все было хорошо, пока я не изменил SQL / sproc и не добавил таблицу JOIN к еще одной таблице, и в этой таблице не было необходимых разрешений для учетной записи службы. Но принцип тот же: проверьте все разрешения для пользователя, выполняющего вызов базы данных.

2
ответ дан 18 December 2019 в 09:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: