powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Хочу видеть реальный текст запроса после добавления параметров.
17 сообщений из 17, страница 1 из 1
Хочу видеть реальный текст запроса после добавления параметров.
    #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
Хочу видеть реальный текст запроса после добавления параметров.
    #37399167
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkan,

Приделать к вашему классу логгер, который будет выводить созданную команду и парамтеры. И приделать нечто, что будет их их получать и выводить.
...
Рейтинг: 0 / 0
Хочу видеть реальный текст запроса после добавления параметров.
    #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
Хочу видеть реальный текст запроса после добавления параметров.
    #37399199
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkan,

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

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

С чем именно проблемы?
...
Рейтинг: 0 / 0
Хочу видеть реальный текст запроса после добавления параметров.
    #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
Хочу видеть реальный текст запроса после добавления параметров.
    #37399304
SolYUtor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Barkan,

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

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

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

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

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

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

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

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

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

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

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


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