Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Хочу видеть реальный текст запроса после добавления параметров. / 17 сообщений из 17, страница 1 из 1
17.08.2011, 11:43
    #37399134
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Странного хочется: задав параметры хочу в программе увидеть что реально будет исполнять сервер.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Dim comm As New SqlCommand("update SYS_USER set SUS_NAME=@NAME, SUS__DEP_ID=@DEP_ID, SUS_ENDWORK=@ENDWORK where SUS_ID=@SUS_ID")
comm.Parameters.Add("@NAME", SqlDbType.VarChar,  40 ).Value = PR.SUS_NAME
comm.Parameters.Add("@DEP_ID", SqlDbType.Int).Value = PR.SUS__DEP_ID
comm.Parameters.Add("@ENDWORK", SqlDbType.DateTime).Value = PR.SUS_ENDWORK
comm.Parameters.Add("@SUS_ID", SqlDbType.Int).Value = PR.SUS_ID
' вот что-нибудь типа
Debug.Print(comm.ТекстКомандыСоВставленнымиЗначениямиПараметров)

Коллективный разум поможет страждущему?
...
Рейтинг: 0 / 0
17.08.2011, 11:54
    #37399167
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Barkan,

Приделать к вашему классу логгер, который будет выводить созданную команду и парамтеры. И приделать нечто, что будет их их получать и выводить.
...
Рейтинг: 0 / 0
17.08.2011, 12:03
    #37399190
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
SolYUtor,

Что-то типа такого:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Dim strSQL As String = "update SYS_USER set SUS_NAME=@NAME, SUS__DEP_ID=@DEP_ID, SUS_ENDWORK=@ENDWORK where SUS_ID=@SUS_ID"
' создаём команду
Dim comm As New SqlCommand(strSQL)
comm.Parameters.Add("@NAME", SqlDbType.VarChar,  40 ).Value = PR.SUS_NAME
comm.Parameters.Add("@DEP_ID", SqlDbType.Int).Value = PR.SUS__DEP_ID
comm.Parameters.Add("@ENDWORK", SqlDbType.DateTime).Value = PR.SUS_ENDWORK
comm.Parameters.Add("@SUS_ID", SqlDbType.Int).Value = PR.SUS_ID
' логгируем
strSQL = strSQL.Replace("@NAME", PR.SUS_NAME)
' ... и так далее
Debug.Print(strSQL)

Мрачно как-то получается.
...
Рейтинг: 0 / 0
17.08.2011, 12:06
    #37399199
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Barkan,

Ладно, давайте попробуем зайти с другой стороны. В вашем вопросе есть 4-ре проблемы:

1. Перехват команды.
2. Формирование сообщение.
3. Отправка сообщения куда-нибудь.
4. Получения сообщения.
5. Отображение сообщения.

С чем именно проблемы?
...
Рейтинг: 0 / 0
17.08.2011, 12:20
    #37399245
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
SolYUtor,

Тогда по порядку.
Есть методы исполняющие запросы, например такой:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Public Shared Function ExecuteNonQueryCommand(ByVal strSQL As String) As Integer
      Debug.Print(strSQL)
      If Not CNNIsOpen() Then ReOpenCNN()
      Dim intRow As Integer =  0 
      Dim CM As New SqlCommand(strSQL, cnnCNN)
      Try
         intRow = CM.ExecuteNonQuery
      Catch ex As SqlException
         WriteSQLErrorMessage(ex, strSQL)
      End Try
      Return intRow
End Function

Он принимает запрос в виде готовой строки и перед исполнением выводит в окно Output, что удобно при отладке.
Вижу что посылает на сервер, копирую строку из Output и разбираюсь с ней в QueryAnalyzer, если работаю с MS SQL.

Другой метод исполняет запросы в виде команд.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Public Shared Function ExecuteNonQueryCommand(ByVal CM As SqlCommand) As Integer
      Debug.Print(CM.CommandText)
      If Not CNNIsOpen() Then ReOpenCNN()
      Dim intRow As Integer =  0 
      Try
         intRow = CM.ExecuteNonQuery
      Catch ex As SqlException
         WriteSQLErrorMessage(ex, CM.CommandText)
      End Try
      Return intRow
End Function

И вот в них я сейчас вижу только команды без значений параметров, что и напрягает.
Хотелось с наименьшими усилиями во втором методе видеть тоже что и в первом.
...
Рейтинг: 0 / 0
17.08.2011, 12:37
    #37399304
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Barkan,

а в идеале вообще без усилий, да? :) Тогда купите готовый профайлер.

А так проще всего будет написать свои обёртки надо ADO.NET классами, которые будут формировать и писать куда-то логи (только не не забудьте, это дорогостоящая операция, и её надо уметь отключать.
...
Рейтинг: 0 / 0
17.08.2011, 12:50
    #37399349
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
SolYUtorBarkan,
а в идеале вообще без усилий, да? :) Тогда купите готовый профайлер.

Жаба душит! Ж:)

А по логгированию пока ничего, кроме приведённого мрачного варианта мне в голову ничего не лезет.
...
Рейтинг: 0 / 0
17.08.2011, 13:02
    #37399381
SolYUtor
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Barkan,

Клеить параметры в строку команд - зло в принципе.
А для логгирования можно создать прокси над IDbCommand, который и будет логгировать команды. Что тут сложного?
...
Рейтинг: 0 / 0
17.08.2011, 13:24
    #37399443
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
SolYUtorBarkan,
А для логгирования можно создать прокси над IDbCommand, который и будет логгировать команды. Что тут сложного?

Если Вам не сложно, покажите. Хотя бы схематично.
...
Рейтинг: 0 / 0
17.08.2011, 14:12
    #37399556
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Идея изложена тут .
...
Рейтинг: 0 / 0
17.08.2011, 21:25
    #37400343
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
Barkan,

ну смотри профайлером, там ж все видно
...
Рейтинг: 0 / 0
17.08.2011, 21:27
    #37400346
ViPRos
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
вплоть до
INSERT BULK TABLE COLUMNS(...)
сцуко токо фиг запустишь :(
...
Рейтинг: 0 / 0
17.08.2011, 22:19
    #37400428
pkarklin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
ViPRosвплоть до
INSERT BULK TABLE COLUMNS(...)
сцуко токо фиг запустишь :(

Это "внутренности" скуля. А чтоб запустить: BULK INSERT, bcp.exe, ну и SSIS, накрайняк.
...
Рейтинг: 0 / 0
18.08.2011, 06:10
    #37400652
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
МСУ,

Спасибо за ссылку.
Сделаю генератор строки с разбором параметров и буду использовать во всех проектах.
И не только работающих с M$ SQL, но и с более другими. Ж:)
...
Рейтинг: 0 / 0
18.08.2011, 09:44
    #37400800
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
BarkanМСУ, Спасибо за ссылку.
Если бы пользовались ORM, там по дефолту есть методы для получения стейтмента.

BarkanИ не только работающих с M$ SQL, но и с более другими.
... тем более ORM рулит в таких задачах.
...
Рейтинг: 0 / 0
18.08.2011, 11:38
    #37401116
Barkan
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
МСУ,

Я борюсь со своим предубеждением ко всему, что автогенерит код.
С дизайнером GUI я смирился. С остальным всё гораздо сложнее. :)
К тому же по службе приходится ограничивать себя рамками NET 2.
...
Рейтинг: 0 / 0
18.08.2011, 12:11
    #37401224
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Хочу видеть реальный текст запроса после добавления параметров.
BarkanЯ борюсь со своим предубеждением ко всему, что автогенерит код
С этим невозможно бороться ибо это прогресс, который экономит кучу времени. А у Вас получается регресс, особенно в случае с поддержкой нескольких видов СУБД.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Хочу видеть реальный текст запроса после добавления параметров. / 17 сообщений из 17, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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