- •30.Общее представление о потоках ввода/вывода
- •31.Байтовые и символьные потоки
- •32. Определение файла. Тестирование проверка объектов File
- •34. Сериализация
- •35. Обработка исключений в Java
- •36. Многопоточное программирование
- •37. Создание потока и его жизненный цикл
- •38. Управление приоритетами и ThreadGroup
- •39. Потоки-демоны
- •40. Методы synchronized
- •41. Коллекции
- •42. Списки
- •43. 43. Множества
- •44. Карты отображений
- •45. Обзор сокетов
- •49. Дейтаграммы
- •46. Сетевые классы и интерфейсы 47. Производственные методы 48. Сокеты tcp/ip клиентов и серверов
- •50. Основы оконной графики 51. Иерархия классов awt
- •Класс Applet
- •52. Свойства класса Component
- •53. Класс Container
- •54. Наследники класса Component
- •55. Классы Choice и List
- •56. Классы TextComponent, TextField, TextArea
- •57. Наследники Container
- •58. Swing-технология
- •59. Обработка событий в Java
- •60. Классы-адаптеры
- •61. Понятие и терминология jdbc 62. Связь и различия jdbc и odbc
- •63. Драйвера, соединения и запросы
- •64. DriverManager
- •65. Создание соединения с источником данных
- •66. Интерфейсы Statement, PreparedStatement и CallableStatement
- •69. Использование потоков в апплетах
- •70. Основы xml
- •71. Xml. Схема dtd. Элемент Schema схемы xml
- •72. Ссылки xml
- •74. Язык xLink (Атрибуты связующих элементов xLink, возможные значения атрибута xlink:show, возможные значения атрибута xlink:actuate)
- •75. Язык xPointer (Синтаксис xPointer, элементы абсолютного обнаружения xPointer, выражения отношений, фильтры атрибутов и их значений)
- •76. Объектная модель документа xml – dom
- •77. Simple api для xml (sax)
- •78. Язык преобразований xslt (Операционный xslt, процесс преобразования xsl, использование xslt, преобразования xml в html)
- •80. Сервлеты: структура, назначение и преимущества
- •81. Жизненный цикл сервлета
- •83. Пакеты javax.Servlet и javax.Servlet.Http
- •84. Технология rmi. Сравнение распределенных и нераспределенных приложений
- •85. Архитектура rmi
63. Драйвера, соединения и запросы
Взаимодействие между приложением Java и СУБД осуществляется с помощью драйверов JDBC, обеспечивающих реализацию общих интерфейсов для конкретных СУБД и конкретных протоколов.
D JDBC определяются четыре типа драйверов:
1. Тип 1 – драйвер, использующий другой прикладной интерфейс, в частности ODBC, для работы с СУБД (так называемый JDBC-ODBC мост). Стандартный драйвер типа 1 sun.jdbc.odbc.JdbcOdbcDriver входит в JSDK.
2. Тип 2- драйвер, работающий через нативные библиотеки (т.е. клиента) СУБД.
3. Тип 3 – драйвер, работающий по сетевому и независимому от СУБД протоколу с промежуточным java-сервером, который в свою очередь подключается к нужной СУБД.
4. Тип 4 – сетевой драйвер, работающий напрямую с нужной СУБД и не требующий установки native-библиотек.
Предпочтение естественным образом отдается второму типу, однако если приложение выполняется на машине, на которой не предполагается установка клиента СУБД, то выбор производится между третьим и четвертым типами. Причем четвертый тип работает напрямую с СУБД по ее протоколу, поэтому можно предположить, что драйвер четвертого типа будет более эффективным по сравнению с третьим типом с точки зрения производительности. Первый тип, используется реже, в тех случаях, когда у СУБД нет своего драйвера JDBC, зато есть драйвер ODBC.
Приложение, работающее с БД, работает по следующей обычной последовательности действий:
1. Загрузка класса драйвера БД при отсутствии экземпляра этого класса.
Для СУБД MySQL:
String driverName=”org.gjt.mm.mysql.Driver”;
Для СУБД MsAccess:
String driverName=”sun.jdbc.odbc.JdbcOdbcDriver ”;
После этого выполняется собственно загрузка драйвера в память:
Class.forName(driverName);
и становится возможным соединение с СУБД
2. Установка соединения с БД в виде:
Connection cn=
DriverManager.getConnection
(“jdbc:mysql://localhost/mydb”,”login”,”pass”);
В результате будет возвращен объект Connection и будет установлено соединение с соответствующей БД.
Класс DriverManager предоставляет средства для управления набором драйверов баз данных. Методу getConnection() необходимо передать тип и физическое месторасположение БД, а также логин и пароль для доступа. С помощью метода registerDriver() драйвера регистрируются, а методом getDrivers() можно получить список всех драйверов.
3. Создание объекта для передачи запросов
Statement st=cn.createStatement();
Объект класса Statement используется для выполнения запроса без его предварительной подготовки и команд SQL. Могут применяться также операторы для выполнения подготовленных запросов и хранимых процедур PreparedStatement и CallableStatement. Созданный объект можно использовать для выполнения запроса.
4. Выполнение запроса
Результаты выполнения запроса помещаются в объект класса ResultSet:
ResutSet rs=st.executeQuery(“SELCT * FROM mytable”);
Для добавления или изменения информации в таблице вместо метода executeQuery() запрос помещается в метод executeUpdate().
5. Обработка результатов выполнения запроса производится методами интерфейса ResultSet, где самыми распространенными являются next() и getString() и аналогичные методы, начинающиеся с getТип() и updateТип().
6. Закрытие соединения
cn.close();
После того, как база больше не нужна, соединение закрывается.