Что такое jdbc java
Простой пример JDBC для начинающих
Здравствуйте! В этой статье я напишу простой пример соединения с базами данных на Java.Эта статья предназначена новичкам.Здесь я опишу каждую строчку объясню что зачем.
Но для начала немного теории.
JDBC (Java DataBase Connectivity — соединение с базами данных на Java) предназначен для взаимодействия Java-приложения с различными системами управления базами данных (СУБД). Всё движение в JDBC основано на драйверах которые указываются специально описанным URL.
А теперь практика.
Для начала создаём maven проект и в pom.xml помещаем зависимость для соединения с СУБД (В моём случае СУБД будет выступать MySQL):
Должно получится так:
Дальше подключаемся к базе данных нужной вам(я пользуюсь IDEA Ultimate по этому я подключаюсь именно так).
Дальше заполняем Database, User и Password.Обязательно проверяем соединение.
Дальше мы создаём сам класс.
А теперь разберём его построчно:
В начале мы создаём три переменные url,username и password. Образец указания url:
Username по умолчанию root.Password вы должны знать сами.
После с помощью строчки Class.forName(«com.mysql.jdbc.Driver») регестрируем драйвера. Дальше устанавливаем соединение с помощью DriverManager.getConnection (ваш url, username, password).
После с помощью connection (соединения) создаём простой запрос Statement методом createStatement().
Дальше создаём экземпляр класса ResultSet и формируем запрос через statement методом executeQuery (запрос).
Дальше мы заставляем пробежаться resultSet по всей базе данных и вывести то что нам нужно. Так с помощью объекта resultSet и его методов (getString,getInt и т.д. в зависимости от типа переменных в колонке) мы выводим.Так как мой запрос был для того что бы вывести всё, мы можем вывести любую колонку.
После закрываем resultSet,statement и connection (именно в такой последовательности). В процессе он будет показывать ошибки так как будет запрашивать обработку исключений в catch.Так что пишите catch заранее.
Теперь когда практика есть на неё можно наложить более глубокую теорию.Тема правда очень большая, желаю удачи в её изучении.
Национальная библиотека им. Н. Э. Баумана
Bauman National Library
Персональные инструменты
JDBC (Java DataBase Connectivity)
Разработчики: | Oracle Corporation |
---|---|
Выпущена: | 5 December 2013 года ; 8 years ago ( 2013-12-05 ) |
Постоянный выпуск: | JDBC 4.2 |
Тип ПО: | Data Access API |
Веб-сайт | JDBC |
Содержание
Архитектура
Рисунок 1 – Архитектура Java Applet/Application
Рисунок 2 – Архитектура Java Application
Левая сторона. Тип 1: Java драйвер для прямого подключения к БД
Этот тип драйвера преобразует запросы JDBC в сетевой протокол, используемый непосредственно СУБД, позволяющая осуществлять прямой запрос с компьютера клиента на сервер СУБД и предоставляющая практическое решение для доступа в интрасеть.
Правая сторона. Тип 2: Java драйвер для промежуточного БД
Данный тип переводит запросы JDBC в протокол поставщика промежуточного ПО, который далее преобразуется в протокол СУБД сервером промежуточного ПО. Промежуточное ПО обеспечивает подключение ко многим различным БД.
На рисунке 2 показано подключение JDBC с использованием драйверов ODBC и существующих клиентских библиотек БД.
Левая сторона. Тип 3: JDBC-ODBC мост с драйверами ODBC
Эта комбинация обеспечивает доступ JDBC через драйвера ODBC. Бинарный код ODBC должен быть загружен на каждом компьютере клиента, который использует мост JDBC-ODBC.
Правая сторона. Тип 4: Встроенный API драйвер с частичной технологией Java
Этот тип драйвера преобразует запросы JDBC в запросы клиентского API для Oracle, Sybase, Informix, DB2 или других СУБД.
Преимущества и недостатки
Преимуществами JDBC считают:
Недостатками JDBC являются:
Сравнение JDBC и ODBC
JDBC | ODBC | |
---|---|---|
Архитектура | Базовая архитектура поддерживает как двухуровненвые, так и трехуровневые модели обработки БД, но в основном состоит из двух уровней архитектуры: JDBC API и JDBC Driver API | Архитектура ODBC в основном состоит из 4 компонентов: драйвер, диспетчер драйверов, API и источник данных |
Сложность | В случае с JDBC кодирование является начальным этапом комплексного программирования запросов | Обрабатывает различные сложные ситуации и запросы для получения правильных выходных данных машинного уровня. Так что это продвинутая версия кодирования и других разных подходов. |
Язык программирования | Java | C, C++, Java и т.д. |
Платформа | Выполняется на любых платформах | Выполняется только на Windows |
Режим работы | Работает на языке Java и может быть скомпилирован непосредственно во время выполнения | Реализован на Visual Basic, поэтому код необходимо интерпретировать, а затем выполнить |
Безопасность | Пользователи не имеют доступа к основным настройкам системы, следовательно, нарушения и дыры в безопасности можно быстро исправить | Интерактивный сервер пользователя, подвержен ошибкам пользователя |
Поддержка | Поддержка сообщества для JDBC и его пользователей | Предоставляют большой спектр сообщества и платную поддержку. Обычно все версии ODBC используют для обеспечения долгосрочной поддержки клиентов |
Примеры
JDBC для MySQL
Данный пример использует свободный драйвер JDBC для MySQL, который легко устанавливается в большинстве дистрибутивов Linux через стандартные репозитории.
JDBC для Microsoft SQL Server
Данный пример использует jTDS, свободный драйвер JDBC для Microsoft SQL Server и Sybase ASE SQL-Server. Подключиться к этой и другим СУБД можно и встроенными средствами с помощью драйвера JDBC для ODBC, но ценой замедления работы.
Руководство по JDBC. Введение.
Что такое JDBC?
Java Database Connectivity – это стандартный API для независимого соединения языка программирования Java с различными базами данных (далее – БД).
JDBC решает следующие задачи:
Если говорить в целом, то JDBC – это библиотека, которая обеспечивает целый набор интерфейсов для доступа к различным БД.
Для доступа к каждой конкретной БД необходим специальный JDBC – драйвер, который является адаптером Java – приложения к БД.
Строение JDBC
JDBC поддерживает как 2-звенную, так и 3-звенную модель работы с БД, но в общем виде, JDBC состоит из двух слоёв.
JDBC API использует менеджер драйверов и специальные драйверы БД для обеспечения подключения к различным базам данных.
JBDC Manager проверяет соответствие драйвера и конкретной БД. Он поддерживает возможность использования нескольких драйверов одновременно для одновременной работы с несколькими видами БД.
Схематично, JDBC можно представить в таком виде:
Рассмотрим элементы JDBC по отдельности.
Элементы JDBC
JDBC API состоит из следующих элементов:
Пакеты JDBC
Ключевыми пакетами JDBC являются java.sql и javax.sql. На момент написания этого руководства, текущей версией JDBC является JDBC 4.0.
С отличиями этой спецификации от предыдущих вы можете ознакомиться в JDBC Specification.
Вот основные изменения:
В этом уроке мы ознакомились с основами JDBC и рассмотрели его архитектуру.
В следующем уроке мы рассмотрим базовый синтаксис языка SQL.
Что такое jdbc java
JDBC основан на концепции драйверов, которые позволяют получать соединение с базой данных по специально описанному URL. При загрузке драйвер регистрирует себя в системе и в дальнейшем автоматически вызывается, когда программа требует URL, содержащий протокол, за который этот драйвер отвечает.
В чем заключаются преимущества использования JDBC?
Преимуществами JDBC считают:
Что из себя представляет JDBC URL?
JDBC URL состоит из:
Пример JDBC URL для подключения к MySQL базе данных «Test» расположенной по адресу localhost и ожидающей соединений по порту 3306: jdbc:mysql://localhost:3306/Test
Из каких частей стоит JDBC?
JDBC состоит из двух частей:
JDBC превращает вызовы уровня API в «родные» команды того или иного сервера баз данных.
Перечислите основные классы и интерфейсы JDBC.
Перечислите основные типы данных используемые в JDBC. Как они связаны с типами Java?
JDBC Type | Java Object Type |
---|---|
CHAR | String |
VARCHAR | String |
LONGVARCHAR | String |
NUMERIC | java.math.BigDecimal |
DECIMAL | java.math.BigDecimal |
BIT | Boolean |
TINYINT | Integer |
SMALLINT | Integer |
INTEGER | Integer |
BIGINT | Long |
REAL | Float |
FLOAT | Double |
DOUBLE | Double |
BINARY | byte[] |
VARBINARY | byte[] |
LONGVARBINARY | byte[] |
DATE | java.sql.Date |
TIME | java.sql.Time |
TIMESTAMP | java.sql.Timestamp |
CLOB | Clob |
BLOB | Blob |
ARRAY | Array |
STRUCT | Struct |
REF | Ref |
DISTINCT | сопоставление базового типа |
JAVA_OBJECT | базовый класс Java |
Опишите основные этапы работы с базой данных при использовании JDBC.
Как зарегистрировать драйвер JDBC?
Регистрацию драйвера можно осуществить несколькими способами:
Class.forName(«полное имя класса драйвера») ;
Как установить соединение с базой данных?
В качестве параметра может передаваться:
Какие уровни изоляции транзакций поддерживаются в JDBC?
Уровень изолированности транзакций — значение, определяющее уровень, при котором в транзакции допускаются несогласованные данные, то есть степень изолированности одной транзакции от другой. Более высокий уровень изолированности повышает точность данных, но при этом может снижаться количество параллельно выполняемых транзакций. С другой стороны, более низкий уровень изолированности позволяет выполнять больше параллельных транзакций, но снижает точность данных.
Во время использования транзакций, для обеспечения целостности данных, СУБД использует блокировки, чтобы заблокировать доступ других обращений к данным, участвующим в транзакции. Такие блокировки необходимы, чтобы предотвратить:
«грязное» чтение (dirty read) — чтение данных, добавленных или изменённых транзакцией, которая впоследствии не подтвердится (откатится);
неповторяющееся чтение (non-repeatable read) — при повторном чтении в рамках одной транзакции ранее прочитанные данные оказываются изменёнными;
фантомное чтение (phantom reads) — ситуация, когда при повторном чтении в рамках одной транзакции одна и та же выборка дает разные множества строк.
Уровни изоляции транзакций определены в виде констант интерфейса java.sql.Connection :
TRANSACTION_NONE – драйвер не поддерживает транзакции;
TRANSACTION_READ_UNCOMMITTED – позволяет транзакциям видеть несохраненные изменения данных: разрешает грязное, непроверяющееся и фантомное чтения;
TRANSACTION_READ_COMMITTED – любое изменение, сделанное в транзакции, не видно вне неё, пока она не сохранена: предотвращает грязное чтение, но разрешает непроверяющееся и фантомное;
TRANSACTION_REPEATABLE_READ – запрещает грязное и непроверяющееся, фантомное чтение разрешено;
TRANSACTION_SERIALIZABLE – грязное, непроверяющееся и фантомное чтения запрещены.
NB! Сервер базы данных может не поддерживать все уровни изоляции. Интерфейс java.sql.DatabaseMetaData предоставляет информацию об уровнях изолированности транзакций, которые поддерживаются данной СУБД.
При помощи чего формируются запросы к базе данных?
Для выполнения запросов к базе данных в Java используются три интерфейса:
Объекты-носители интерфейсов создаются при помощи методов объекта java.sql.Connection :
Чем отличается Statement от PreparedStatement?
Перед выполнением СУБД разбирает каждый запрос, оптимизирует его и создает «план» (query plan) его выполнения. Если один и тот же запрос выполняется несколько раз, то СУБД в состоянии кэшировать план его выполнения и не производить этапов разборки и оптимизации повторно. Благодаря этому запрос выполняется быстрее.
Суммируя: PreparedStatement выгодно отличается от Statement тем, что при повторном использовании с одним или несколькими наборами параметров позволяет получить преимущества заранее прекомпилированного и кэшированного запроса, помогая при этом избежать SQL Injection.
Как осуществляется запрос к базе данных и обработка результатов?
Выполнение запросов осуществляется при помощи вызова методов объекта, реализующего интерфейс java.sql.Statement :
Как вызвать хранимую процедуру?
Выбор объекта зависит от характеристик хранимой процедуры:
Если неизвестно, как была определена хранимая процедура, для получения информации о хранимой процедуре (например, имен и типов параметров) можно использовать методы java.sql.DatabaseMetaData позволяющие получить информацию о структуре источника данных.
Пример вызова хранимой процедуры с входными и выходными параметрами:
Как закрыть соединение с базой данных?
Соединение с базой данной закрывается вызовом метода close() у соответствующего объекта java.sql.Connection или посредством использования механизма try-with-resources при создании такого объекта, появившегося в Java 7.
NB! Предварительно необходимо закрыть все запросы созданные этим соединением.
Lesson: JDBC Introduction
The JDBC API is a Java API that can access any kind of tabular data, especially data stored in a Relational Database.
JDBC helps you to write Java applications that manage these three programming activities:
The following simple code fragment gives a simple example of these three steps:
This short code fragment instantiates a DriverManager object to connect to a database driver and log into the database, instantiates a Statement object that carries your SQL language query to the database; instantiates a ResultSet object that retrieves the results of your query, and executes a simple while loop, which retrieves and displays those results. It’s that simple.
JDBC Product Components
JDBC includes four components:
The JDBC API — The JDBC™ API provides programmatic access to relational data from the Java™ programming language. Using the JDBC API, applications can execute SQL statements, retrieve results, and propagate changes back to an underlying data source. The JDBC API can also interact with multiple data sources in a distributed, heterogeneous environment.
The JDBC API is part of the Java platform, which includes the Java™ Standard Edition (Java™ SE ) and the Java™ Enterprise Edition (Java™ EE). The JDBC 4.0 API is divided into two packages: java.sql and javax.sql. Both packages are included in the Java SE and Java EE platforms.
JDBC Driver Manager — The JDBC DriverManager class defines objects which can connect Java applications to a JDBC driver. DriverManager has traditionally been the backbone of the JDBC architecture. It is quite small and simple.
The Standard Extension packages javax.naming and javax.sql let you use a DataSource object registered with a Java Naming and Directory Interface™ (JNDI) naming service to establish a connection with a data source. You can use either connecting mechanism, but using a DataSource object is recommended whenever possible.
JDBC Test Suite — The JDBC driver test suite helps you to determine that JDBC drivers will run your program. These tests are not comprehensive or exhaustive, but they do exercise many of the important features in the JDBC API.
JDBC-ODBC Bridge — The Java Software bridge provides JDBC access via ODBC drivers. Note that you need to load ODBC binary code onto each client machine that uses this driver. As a result, the ODBC driver is most appropriate on a corporate network where client installations are not a major problem, or for application server code written in Java in a three-tier architecture.
This Trail uses the first two of these four JDBC components to connect to a database and then build a java program that uses SQL commands to communicate with a test Relational Database. The last two components are used in specialized environments to test web applications, or to communicate with ODBC-aware DBMSs.