Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Характеристика АТП и сварочно-жестяницкого участка: Транспорт в настоящее время является одной из важнейших отраслей народного хозяйства...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Финансовый рынок и его значение в управлении денежными потоками на современном этапе: любому предприятию для расширения производства и увеличения прибыли нужны...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Как мы говорим и как мы слушаем: общение можно сравнить с огромным зонтиком, под которым скрыто все...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|

Ответ: Свой слайд я решил не перегружать. Я поставил только те методы, которые считаю основными. Вот этот список.
· close() – обязательный.
Не хотите писать close()? – tryс ресурсами. Следующий момент – транзакции. Они нам нужны? Да, чтобы участвовать в распределенных транзакциях, то этот объект слабоват. А какой объект подходит? Я этот слайд (DataSourceObject)пропустил. Не стал про него рассказывать, когда мы выполнялся в JNDI регистрацию, мы создавали объект DataSource. Он посерьезнее будет. Вот он как раз позволяет реализовать понятие пула и вот они распределенные транзакции. Поэтому конечно наш простенький вариант с просто с Connectionподдерживает локальные транзакции. Но их нужно немножечко настраивать. Любое ваше действие, которое вы выполняете с объекта Connection, то если оно успешно выполнено, оно сразу фиксируется в БД. Это называется режимом autocommit. Сказали: «Удали запись». Всё. Она удалена, это сохранено и это зафиксировано в изменениях СУБД. Это autocommit.

Если вы считаете, что транзакции – это должно быть не одно действие, а несколько, то (мы про это поподробнее поговорим в конце) нужно будет для начала вызвать setAutocommit и поставить ему false, тем самым отменить автоматическое принятие каждого действия и самим начинать управлять. А самим начинать управлять – это значит, когда вы выполнили все действия и вы считаете, что сейчас надо завершить (принять окончательный результат), то вот – второй метод на этом слайде – commit(). Если пошло все плохо, надо ли вызывать rollback()? Нет, не надо. Если пошло все плохо, то он и без вас об этом догадается и все откатит. Нужно вызвать commit(). Вот если вы его не вызовете, тогда все будет откачено.
Идем дальше… Что вам нужно обязательно еще настраивать и делать? Обратите внимание, есть такие методы: getCatalog() и setCatalog(). Это можно изменить имя базы данных. У нас БД AdventureWorks. А допустим вы знаете, что там есть еще другая база. Вы подключились – у вас AdventureWorks, а можете переключиться с помощью метода setCatalog() на другую БД и работать с ней. Такая возможность существует. Просто с интерфейса Connectionможно перейти на другую реляционную БД, которая внутри этого движка существует.
Еще важный момент. А хотите ли вы получить какую-то подробную информацию об устройстве самой БД? Да. Если хотите есть такой вызов: getMetaData(). Там отдельно потом будет расписано, что вы получаете и какие у вас есть возможности. Это будет практически первый запрос, который мы сделаем именно для того, чтобы посмотреть информацию об устройстве. Ну, например, вас интересует имена таблиц, которые там есть или имена поставок, да все, что угодно.
Как вы получите сообщения об ошибках? SQLException. Но те, кто работал с БД вы помните, что у нас есть информационные сообщения, которые может выдавать СУБД. У нас есть предупреждения (warnings). Если происходит грубый error (SQL код некорректный предоставили), то происходит ошибка, и у вас инфраструктура JDBCвидя уровень серьезности ошибки (от 10 и выше), он оборачивает эту ошибку в виде SQLException. А если это просто информационное сообщение? Это было бы странно, если все нормально, но вас БД о чем-то информирует, а тут раз и вылетает Exception. Это некорректно. Поэтому если происходит какое-то подобное сообщение от сервера БД, которое с уровнем серьезности ниже 10, то вы их в целом не увидите. Ни в исключениях, никак. А вот метод getWarnings() и позволяет до этого добраться.
У нас вообще есть программисты, которые знают SQL, как родной? Там же есть в SQLкакая-то команда, которая позволяет клиенту отправить какое-то информационное сообщение? Вот если вы отправите его, то с помощью getWarnings() вы увидите его в Java-code.
Ну и самое главное, конечно, для нас – это как запрос начать формировать. Вот для запроса, здесь есть три метода.
· prepareCall()
· prepareStatement()
· createStatement()

У вас есть три варианта, как начать взаимодействовать с БД. Почему они так сделали? Потому что у них сверху есть три разных интерфейса, которые обладают разным функционалом. И если посмотреть слева направо: Statement, PreparedStatement, CallableStatement, то функционал, который за каждым из этих интерфейсов, он идет по нарастающей. Все эти интерфейсы выстроены в иерархию. Все, что есть в createStatement(), есть в prepareStatement() и т.д. Но если двигаться вправо, то функционала становится все больше, больше и больше.
Простые запросы – это Statement. Соответственно для простых запросов Statement. С чего мы и начнем.
|
|
|
Механическое удерживание земляных масс: Механическое удерживание земляных масс на склоне обеспечивают контрфорсными сооружениями различных конструкций...
Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...
История создания датчика движения: Первый прибор для обнаружения движения был изобретен немецким физиком Генрихом Герцем...
Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...
© cyberpedia.su 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!