Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > PrepareStatement


Автор: Pantein 25.10.2005, 23:49
Подскажите как вытянуть строку запроса из уже сформированного объекта PrepareStatement перед ее выполнением, просто без этого никак невозможно определить целостность sql-запроса...может есть какой-нибудь нормальный метод, может каких сторонних производителей...

Автор: Guest 26.10.2005, 00:29
Можно над Connection свою обертку сделать.

Автор: Pantein 26.10.2005, 10:09
такой вариант не подхолит только даже из-за того, что придется рефакторить большой объем кода , а это недопустимо в моем случае.

Автор: pvo 26.10.2005, 11:52
Цитата(Pantein @ 25.10.2005, 23:49)
определить целостность sql-запроса

А что под этим понимается?

Автор: Pantein 26.10.2005, 12:50
Цитата
А что под этим понимается?


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

Автор: LSD 26.10.2005, 12:59
Цитата(Pantein @ 26.10.2005, 13:50)
просто скорее всего создается плохая строка, при попытке выполнения которой все обрывается (почти 100%) -- вот и нужно посмотреть этот запрос (саму строку) и определить "битые" места.


1. Смотреть логи самой базы (если поддерживатеся).
2. Попробовать Connection.nativeSQL().

Автор: 3,14 26.10.2005, 13:00
Pantein, пронаследуй PreparedStatement, переопредели методы execute, executeQuery и executeUpdate, в случае Exception-а, выводи сообщения в лог, и кидай исключение выше.

Автор: pvo 26.10.2005, 13:19
Цитата(3)
пронаследуй PreparedStatement

Так это ж интерфейс. Нужно обертку писать, а чела ломает это делать. Причем оберток д.б. 2 - одна над Connection, а другая над PreparedStatement


Pantein Можно еще попробовать поиграться с http://java.sun.com/products/jdbc/faq.html

Автор: Pantein 26.10.2005, 14:20
Спасибо за советы, но меня не то чтобы ломает это все писать, я же говорю, просто есть сейчас довольно большой проект, и получается придется достаточно много кода рефакторить, что немного не позволительно в данном случае, ведь работаю я над проектом не один.

... нашел тут непохую идею -- log4j (правда нормально его настроить это что-то, пишет слишком большие логи 5 мег где-то в минуту), но лучше наверное использовать (как мне подсказади) p6spy (правда еще не пробовал). в принципе проблему разрешил, спасибо всем за советы.

Автор: 3,14 27.10.2005, 09:59
Цитата(pvo @ 26.10.2005, 13:19)
Цитата (3 @ 14, 26.10.2005, 13:00)
пронаследуй PreparedStatement

Так это ж интерфейс. Нужно обертку писать, а чела ломает это делать. Причем оберток д.б. 2 - одна над Connection, а другая над PreparedStatement

Да, конечно, именно обёртки

Цитата(Pantein @ 26.10.2005, 14:20)
и получается придется достаточно много кода рефакторить

А ты скажи из-за чего придётся менять код, глядишь и придумаем решение, которое не потребует особых изменений.

Автор: KostenkoSergey 31.10.2005, 16:29
если ЕЕ - может подойдут системы мониторинга.. типа Optimized ServerTrace от Borland - его юзал- всё замурчательно видно, и какие запросы, и где ошибки и где соединения не закрыты ...

слышал также про JProbe

ИМХО под задачу ,как я понял, лучше не напишешь smile

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)