Я работал над простым проектом, который принимает запрос sql от пользователя и отображает результаты в JTable Я хочу определить, был ли введен оператор select или какой-либо другой DML/Заявление DDL было введено, поэтому я могу позвонить executeQuery()
или executeUpdate()
соответственно. Я думал о проверке запроса, если он начинается с выбора. Есть лучший способ сделать это. Как определить, какой тип sql-запроса вводится пользователем в java
ответ
Вместо того, чтобы пытаться решить, если вам нужно позвонить executeQuery
или executeUpdate
, вы можете просто использовать execute
вместо этого.
Javadoc из Statement.execute(String)
говорит:
Выполняет заданную инструкцию SQL, которая может возвращать несколько результатов. В некоторых (необычных) ситуациях один оператор SQL может возвращать несколько наборов результатов и/или количество обновлений. Обычно вы можете игнорировать это, если вы не выполните (1) выполнение хранимой процедуры, которая, как вы знаете, может возвращать несколько результатов или (2), вы динамически выполняете неизвестную строку SQL.
(курсив мой)
The execute
способами, имеют логическое значение, возвращаемое что означает:
false
: первый результат является либо счетчика обновлений, или нет никаких результатовtrue
: первый результат - это набор результатов
Я намеренно говорю первый результат, поскольку JDBC допускает один оператор, имеющий несколько результатов (например, хранимая процедура SQL Server может возвращать несколько наборов результатов и количество обновлений в любом порядке).
Если false
, вам необходимо позвонить по телефону getUpdateCount
. Это либо возвращает счетчик обновлений (0 или выше), либо -1
, чтобы указать, что результатов больше нет. В стороне: вызывая getUpdateCount
, когда результат был true
также должен был вернуть -1
.
Если true
, для получения результата необходимо позвонить по телефону getResultSet
.
Чтобы обработать больше результатов (то есть, если вы либо просто обрабатывается результирующий набор или getUpdateCount
не -1
был), то вы звоните getMoreResults
, который также возвращает логическое значение, с точно такой же смысл, что и выше, и т.д.
Это звучит сложно, но большинство баз данных поддерживают только один набор результатов, и если вы заботитесь только о наборе результатов, вам нужно только проверить, возвращается ли execute
true
, а затем использовать getResultset
(или нет, если false
).
- 1. Как определить, с именем группы, если регулярное выражение вводится пользователем
- 2. Есть ли способ определить, какой тип мыши используется пользователем?
- 3. Определить, какой тип вставлен String или int
- 4. Как определить, какой тип используется в объединении?
- 5. Java: как автоматическое тестирование консольного приложения, которое вводится пользователем
- 6. GetRegistrationsByTagAsync и определить, какой тип
- 7. Как найти тип целого числа, которое вводится в Java-программе
- 8. Как определить, какой тип аутентификации URL?
- 9. Как определить, какой тип базы данных это?
- 10. Какой тип Java «[B»?
- 11. Есть ли способ определить, какой тип класса является экземпляром Java?
- 12. Как определить тип входа, который используется пользователем в Meteor?
- 13. Определите, какой домен более часто вводится (WWW)
- 14. Могу ли я определить, какой файл выбран пользователем?
- 15. Как определить тип класса подкласса в Java
- 16. Как определить тип возвращаемого значения в Java?
- 17. Как определить тип общего поля в Java?
- 18. Как узнать, на какой вход вводится запрос?
- 19. ASP.NET MVC2 - Определить, какой тип шаблона визуализируется
- 20. asp.net - как определить, какой флажок коррелирует с каждой строкой (пользователем)
- 21. Определить, какой тип события вызвал действие UIControl
- 22. Определить тип драйвера Selenium в Java
- 23. Список поиска Python, который вводится пользователем
- 24. Powerpivot. Определите, сколько изменений вводится пользователем.
- 25. Определить тип переменной другой переменной в Java
- 26. проверка модели на данных, не вводится пользователем
- 27. Как я могу определить, какой тип шифрования я использую?
- 28. Определить, вводится ли пользователь символом или вводится более 1 символа.
- 29. Как использовать определяемый пользователем тип в функции?
- 30. Как подтвердить, что почтовый индекс вводится пользователем правильно. Zipcode
Предлагаю вам использовать 2 текстовые области для ввода команды SQL. один для команд DDL и другой для команд DML. – Blip
@ ka4tik Я не думаю, что помимо поиска 'Select',' create' и т. Д. В запросе String вы можете найти запрос на запуск сообщения в БД, вы можете иметь два типа, например 'DDLType' и' DMLType', на основе выбора , у другого выпадающего списка могут быть подтипы типа «DDL -> Create, Drop и т. д.», дайте пользователю выбрать параметр в раскрывающемся списке, а затем постройте построитель запросов –
Как уже упоминалось @Blip. Я бы предложил вам использовать один JTextField, откуда вы получаете текст и сопоставляете его с операторами DDL/DMK, а затем вызываете запрос соответственно. – mustangDC