Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе / 12 сообщений из 12, страница 1 из 1
29.10.2007, 10:28:37
    #34900658
Kerif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Доброго времени суток!
Пишу менеджер СУБД и есть в нем замечательное место, где пользователь вводит свой запрос(ы) и получает результат!
Собственно вопрос: поскольку пользователь может вводить любой тип запроса (SELECT, UPDATE, INSERT...) нужно как то при выполнении программы отследить что это за запрос (выборка данных, обновление данных) и направить на свой метод executeQuery, execute, executeUpdate. Как это сделать?
Может есть в JDBC какой то класс, который позволяет обрабатывать запрос(ы) через один метод? или есть стороняя библиотека, которая позволяет это делать?
...
Рейтинг: 0 / 0
29.10.2007, 10:35:13
    #34900677
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
А чем Вас не устроил execute?
...
Рейтинг: 0 / 0
29.10.2007, 10:41:58
    #34900706
Kerif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Тем что при выполнении запроса с выборкой данных (SELECT) не возвращается ResultSet, я не могу получить доступ к даннм, которые были сформированы после выполнения запроса в программе
...
Рейтинг: 0 / 0
29.10.2007, 11:04:20
    #34900770
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
KerifТем что при выполнении запроса с выборкой данных (SELECT) не возвращается ResultSet, я не могу получить доступ к даннм, которые были сформированы после выполнения запроса в программе
- а читать документацию не пробовали?
JDK
boolean execute(String sql)
throws SQLException

Executes the given SQL statement, which may return multiple results. In some (uncommon) situations, a single SQL statement may return multiple result sets and/or update counts. Normally you can ignore this unless you are (1) executing a stored procedure that you know may return multiple results or (2) you are dynamically executing an unknown SQL string.

The execute method executes an SQL statement and indicates the form of the first result. You must then use the methods getResultSet or getUpdateCount to retrieve the result, and getMoreResults to move to any subsequent result(s).

Parameters:
sql - any SQL statement
Returns:
true if the first result is a ResultSet object; false if it is an update count or there are no results
Throws:
SQLException - if a database access error occurs
See Also:
getResultSet(), getUpdateCount(), getMoreResults()


Код: plaintext
1.
2.
3.
4.
 boolean  b=statement.execute("SQL-query");
 if (b){
   ResultSet result=statement.getResultSet();
}
...
Рейтинг: 0 / 0
29.10.2007, 11:18:41
    #34900822
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Kachalov
Код: plaintext
1.
2.
3.
4.
 boolean  b=statement.execute("SQL-query");
 if (b){
   ResultSet result=statement.getResultSet();
}

Этот способ не очень хорош. К примеру, при выполнении хранимой процедуры (в Sybase ASE) эта конструкция не в состоянии понять, что ХП может вернуть набор данных, причем множественных.
...
Рейтинг: 0 / 0
29.10.2007, 11:22:56
    #34900845
GKS_Samara
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Софтверный проктолог
Код: plaintext
1.
2.
3.
4.
boolean b=statement.execute("SQL-query");
if(b){
   ResultSet result=statement.getResultSet();
}
Этот способ не очень хорош. К примеру, при выполнении хранимой процедуры
(в Sybase ASE) эта конструкция не в состоянии понять, что ХП может
вернуть набор данных, причем множественных.


А в нем вызывать такую процедуру select'ом, как в Oracle или firebird?

--
Алексей
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
29.10.2007, 11:23:30
    #34900848
Kachalov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Софтверный проктологЭтот способ не очень хорош. К примеру, при выполнении хранимой процедуры (в Sybase ASE) эта конструкция не в состоянии понять, что ХП может вернуть набор данных, причем множественных.
- это был пример для человека который не хочет читать документацию. Как организовать получение множественного результата лично я знаю. Если Вы хотите помочь человеку - напишите код и это будет конструктивно. Я посчитал что приведенного фрагмента для ответа на его вопрос достаточно.
...
Рейтинг: 0 / 0
29.10.2007, 11:26:38
    #34900861
Kerif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
НУ ладно ругаться, понедельник день тяжелый, особенно после отпуска ))
Проблема в том что если запускать в одном запросе SELECT...; INSERT...; SELECT...;
то последний SELECT никак данные не возвращает... haveMoreResults() собственно не помогает
...
Рейтинг: 0 / 0
29.10.2007, 11:38:49
    #34900915
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
KerifНУ ладно ругаться, понедельник день тяжелый, особенно после отпуска ))
Проблема в том что если запускать в одном запросе SELECT...; INSERT...; SELECT...;
то последний SELECT никак данные не возвращает... haveMoreResults() собственно не помогает
Так делать нельзя. Вам нужно разбить набор select..., insert..., select на ряд атомарных операций и выполнять их последовательно (в отдельном запросе каждый).
...
Рейтинг: 0 / 0
29.10.2007, 11:49:03
    #34900964
Kerif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Плохо, мне почему то казалось, что если СУБД поддерживает композитные запросы, то такая конструкция будет работать. Ну ладно разбивать запросы, так разбивать )
...
Рейтинг: 0 / 0
29.10.2007, 11:50:42
    #34900973
Софтверный проктолог
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
KerifПлохо, мне почему то казалось, что если СУБД поддерживает композитные запросы, то такая конструкция будет работать. Ну ладно разбивать запросы, так разбивать )
СУБД-то поддерживает. Вот только драйвера JDBC не обязаны.
У вас есть сложность с разбиением запросов?
...
Рейтинг: 0 / 0
29.10.2007, 11:58:37
    #34901011
Kerif
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе
Да какие тут сложности? ) регуляркой порежу, да и все ))
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / JDBC. Выполнение разных типов запросов (SELECT, INSERT...) в одном методе / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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