powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Полный текст объекта Command
25 сообщений из 27, страница 1 из 2
Полный текст объекта Command
    #34295558
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Есть следующий вопрос.
Имеем объект Command с CoomandType=StoredProcedure и с заполненной коллекцией параметров.
Требуется получить полную строку обращения Command к серверу типа
"exec ИмяПроцедуры ИмяПараметра1=ЗначениеПараметра1, ИмяПараметра2=ЗначениеПараметра2 ..."

Понятно, что можно опросить коллекцию параметров, проверить типы и слепить строку вручную.
Но может, есть более ловкие способы?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34295828
Фотография buser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Profiler
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34295847
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
buserProfiler
И?..
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297343
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что и?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297515
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!что и?
Каким образом при помощи вышеупомянутого профалера получить строковую переменную, содержащую вызов хранимой процедуре в вышеописанном виде?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297634
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz
Каким образом при помощи вышеупомянутого профалера получить строковую переменную, содержащую вызов хранимой процедуре в вышеописанном виде?

насколько я понял речь шла об SQL Profiler .
zz
Требуется получить полную строку обращения Command к серверу типа
"exec ИмяПроцедуры ИмяПараметра1=ЗначениеПараметра1, ИмяПараметра2=ЗначениеПараметра2 ..."

Вы хотите получить текст из своей программы? интересует для каких целей?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297661
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 zz:

Нет никакой строки обращения. Имеется удалённый выбор процедуры(RPC). Если интересуют подробности - см www.freetds.org
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297664
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Saнасколько я понял речь шла об SQL Profiler.
Я догадался )
авторВы хотите получить текст из своей программы? интересует для каких целей?
Да, совершенно верно.
Цель - если она важна - проста: получить на сервере дубликат рекордсета.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34297921
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
zz
Цель - если она важна - проста: получить на сервере дубликат рекордсета.

повидимому это описка или нет? о каком рекордсете (recordset) идет речь?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298428
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sa[quot zz]
Цель - если она важна - проста: получить на сервере дубликат рекордсета.

повидимому это описка или нет? о каком рекордсете (recordset) идет речь?

Да какая разница, как назвать.
Рекордсет, датасет, резалтсет - неважно.
Набор записей, возвращаемый хранимой процедурой.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298571
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот код (это пример)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SqlCommand comm = new SqlCommand("test",this.sqlConnection2);
comm.CommandType = CommandType.StoredProcedure;
comm.Parameters.Add("@id",SqlDbType.Int);
comm.Parameters.Add("@name",SqlDbType.NVarChar);
comm.Parameters["@id"].Value = 1;
comm.Parameters["@name"].Value = "";
this.sqlConnection2.Open();
comm.ExecuteNonQuery();
вот вызов процедуры в профайлере этим кодом
что еще неясного?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298604
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*терпеливо*
Вот строчку профайлера "exec бла-бла-бла" надо получить программно.
В строковой переменной, например.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298643
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а нафиг?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298767
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!а нафиг?
а там выше написано.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298783
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот это что ли:

получить на сервере дубликат рекордсета

а нафиг?
и причем здесь клиент?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34298974
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
winsky!вот это что ли:

получить на сервере дубликат рекордсета

а нафиг?
и причем здесь клиент?
Объясни мне - что ты хочешь от меня услышать?
Клиент получает некий рекордсет.
Мне необходимо получить дубликат этого рекордсета на сервере.
Все, ничего сверъестественного.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299100
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объясняю:
меня распирает от любопытства:
нафига такое нужно (кроме проичины ХОЧУ ПОЛУЧИТЬ НА СЕРВЕРЕ должна быть еще какая-то причина)?

т.е. перефразируя, зачем дубликат на сервере и в виде чего он должен на сервере появиться?
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299268
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Прекрасно, объясняю.
Пользователь, нажимая кнопки, получает некий рекордсет.
Хочет сей рекордсет сгруппировать, говоря по-нашему - применить к нему аггрегатные функции.
Чтобы не делать этого силами клиента, я получаю копию рекордсета на сервере, группирую, как надо, и отдаю довольному клиенту.
Дешево и сердито.
Кстати, все уже готово )
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299401
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попахивает каким-то извратом и велосипедостроением, но это мое имхо, может в и сваяли что-то из ряда вон, настаивать не буду
просто неужели этот ваш рекордсет (бедем пользоваться этим термином, раз уж так пошло) такой непредсказуемый, что нельзя его агрегировать более удобоваримым способом, т.е. не делая следующего:
1. гоним на клиента неагрегированные данные
2. каким-то образом(кстати, каким?) повторяем эти данные на сервере + храним их до того момента пока юзверь на клиенте решит, как он их хочет заагрегировать
3. шлем от юзера описание как он это хочет
4. на сервере чего-то шаманим с хранящимся рекордсетом, получаем новый рекордсет
5. шлем новый рекордсет пользователю

сделать вот такое -
1. узнать на клиенте чего хочет юзер (например хочу продажи с группировкой по филиалам, клиентам, фильтр - менеджер Пупкин)
2. агрегировать на сервере и вернуть один рекордсет

зы
еще есть такая штука - ОЛАП
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299462
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторпопахивает каким-то извратом и велосипедостроением
Может быть, однако в рамках моего программного продукта реализация заняла ровно 1 день.
автор1. гоним на клиента неагрегированные данные
Мы их туда не просто так гоним. Мы гоним те данные, которые запросил пользователь. Со своими фильтрами. Все эти данные возвращаются хранимками.
автор2. каким-то образом(кстати, каким?) повторяем эти данные на сервере + храним их до того момента пока юзверь на клиенте решит, как он их хочет заагрегировать
Мы храним не данные, мы храним строку exec нужного нам набора данных. Соответственно в этом exec уже есть все фильтры и т.д.
Когда нам нужно, на сервер посылается этот exec и во временную таблицу пишется дубликат рекордсета.
автор3. шлем от юзера описание как он это хочет
собирается элементарное xml-описание, слава богу OPENXML еще никто не отменял.
автор4. на сервере чего-то шаманим с хранящимся рекордсетом, получаем новый рекордсет
Всего-то шаманств - на полученную темповую табличку навесить аггрегацию.

авторсделать вот такое -
1. узнать на клиенте чего хочет юзер (например хочу продажи с группировкой по филиалам, клиентам, фильтр - менеджер Пупкин)
2. агрегировать на сервере и вернуть один рекордсет
Щас посчитаем.
В базе 18 документов, списки каждого документа возвращаются своей ХП, которая обрабатывает пользовательские условия фильтрации.
Вы предлагаете написать еще 18 процедур аггрегации?
А так - написана 1 процедура.
И некое количество кода.

авторзы
еще есть такая штука - ОЛАП
Нет необходимости пока стрелять из пушки по воробьям.

Как тут картинку приконопатить? Возможно из скриншота многое станет более ясным.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299505
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно вот.
Список на заднем плане - перечень заказов, уже отфильтрованных по желанию пользователя.
Передний план: слева - перечень столбцов и накладываемые условия группировки, справа - полученный итог.
Что получили - пользовательскую аггрегацию как ему хочется.
От чего избавились - от отчаянных звонков "срочно нужна такая-то сводка".
На дизайн не обращайте внимания, дизайнер из меня как из козла балерина.
Конструктивная критика только приветствуется.
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299539
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ок.
ладно сдаюсь
главное в нашей работе, чтобы пользователи были довольны, как я понимаю, вы этого добились.
кста - как удалось выцепить строку exec - просто интересно
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299551
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторкста - как удалось выцепить строку exec - просто интересно
))
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
        private string ExecString()
        {
            string str = "exec " + this.Doc.FillCommand.CommandText + " ";
            foreach (SqlParameter prm in this.Doc.FillCommand.Parameters)
            {
                Type t;
                
                str += prm.ParameterName + "=";
                if (prm.Value == null) { str += "default, "; }
                else
                {
                    t = prm.Value.GetType();
                    if (t == typeof(System.Decimal) | t == typeof(System.Int32)) str += prm.Value.ToString();
                    if (t == typeof(System.Boolean)) str += (Boolean)prm.Value == false ? "0" : "1";
                    if (t == typeof(System.DateTime)) str += @"""" + ((DateTime)prm.Value).ToString("yyyy-MM-dd H:mm:ss") + @"""";
                    if (t == typeof(System.String)) str += @"""" + prm.Value.ToString() + @"""";
                    str += ", ";
                    
                }
            }
            str = str.Substring( 0 , str.Length -  2 );
            return str;
        }
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299725
winsky!
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если
prm.Value.GetType() not in (Decimal,Boolean,DateTime,String)
может авария получится ;)
...
Рейтинг: 0 / 0
Полный текст объекта Command
    #34299770
zz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да там нету таких.
Но проверку все ж вставить надо, да )
...
Рейтинг: 0 / 0
25 сообщений из 27, страница 1 из 2
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Полный текст объекта Command
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]