Java Database Connectivity
Тип |
Data Access API |
---|---|
Последняя версия |
JDBC 4.2 (декабрь 5, 2013 ) |
Сайт |
[:Шаблон:Javadoc:SE-guide :javadoc:se-guide] |
JDBC (англ. Java DataBase Connectivity — соединение с базами данных на Java) — платформенно-независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql
, входящего в состав Java SE.
JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL. Драйверы могут загружаться динамически (во время работы программы). Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.
Содержание
История
Sun Microsystems выпустила JDBC как часть JDK 1.1 19-го февраля 1997 года[1]. С тех пор он является частью JSE. Классы JDBC находятся в пакетах Java java.sql и javax.sql. Начиная с версии 3.1, JDBC разрабатывался в рамках Java Community Process (JCP), который включает в себя стандартизованные спецификации для Java разработчиков.
Интерфейсы
JDBC API содержит два основных типа интерфейсов: первый — для разработчиков приложений и второй (более низкого уровня) — для разработчиков драйверов.
Соединение с базой данных описывается классом, реализующим интерфейс java.sql.Connection
. Имея соединение с базой данных, можно создавать объекты типа Statement, служащие для исполнения запросов к базе данных на языке SQL.
Существуют следующие виды типов Statement, различающихся по назначению:
-
java.sql.Statement
— Statement общего назначения; -
java.sql.PreparedStatement
— Statement, служащий для выполнения запросов, содержащих подставляемые параметры (обозначаются символом '?' в теле запроса); -
java.sql.CallableStatement
— Statement, предназначенный для вызова хранимых процедур.
Интерфейс java.sql.ResultSet
позволяет легко обрабатывать результаты запроса.
Преимущества
Преимуществами JDBC считают:
- Лёгкость разработки: разработчик может не знать специфики базы данных, с которой работает;
- Код практически не меняется, если компания переходит на другую базу данных (количество изменений зависит исключительно от различий между диалектами SQL);
- Не нужно устанавливать громоздкую клиентскую программу;
- К любой базе можно подсоединиться через легко описываемый URL.
Примеры
Примеры кода
JDBC для MySQL |
---|
Данный пример использует свободный драйвер JDBC для MySQL, который легко устанавливается в большинстве дистрибутивов Linux через стандартные репозитории. |
package javaapplication1;
import java.sql.*;
public class Main {
public static void main(String[] args) throws SQLException {
/**
* эта строка загружает драйвер DB.
* раскомментируйте если прописываете драйвер вручную
*/
//Class.forName("com.mysql.jdbc.Driver");
try {
Connection conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/db_name",
"user", "password");
if (conn == null) {
System.out.println("Нет соединения с БД!");
System.exit(0);
}
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT * FROM users");
while (rs.next()) {
System.out.println(rs.getRow() + ". " + rs.getString("firstname")
+ "\t" + rs.getString("lastname"));
}
/**
* stmt.close();
* При закрытии Statement автоматически закрываются
* все связанные с ним открытые объекты ResultSet
*/
stmt.close();
}
catch (SQLException e) {
e.printStackTrace();
}
}
} |
JDBC для Microsoft SQL Server |
---|
Данный пример использует jTDS, свободный драйвер JDBC для Microsoft SQL Server и Sybase ASE SQL-Server. Подключиться к этой и другим СУБД можно и встроенными средствами с помощью драйвера JDBC для ODBC, но ценой замедления работы. |
/**
* эта строка указывает альтернативный драйвер DB. Например hsql.
*/
// Class.forName("org.hsqldb.jdbcDriver");
Connection conn = DriverManager.getConnection(
"jdbc:jtds:sqlserver://SERVER/Northwind;instance=INST;domain=Sample_NTLM_Domain",
"user", "password");
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT LastName + ' ' + FirstName AS FullName, Address FROM Employees");
while(rs.next())
{
System.out.println(rs.getString("FullName") + "\t" + rs.getString("Address"));
}
rs.close();
stmt.close(); |
Напишите отзыв о статье "Java Database Connectivity"
Примечания
- ↑ [java.cnam.fr/iagl/biblio/spec/jdbc-3_0-fr-spec.pdf Спецификация JDBC 3.0]. www.sun.com. Sun Microsystems. [www.webcitation.org/68etKAllc Архивировано из первоисточника 24 июня 2012].
Ссылки
- [www.intuit.ru/studies/courses/5/5/lecture/156?page=3 Взаимодействие с базой данных в Java-программах] (рус.)
- [java.sun.com/products/jdbc/overview.html Официальная страница JDBC] (англ.)
- [java.sun.com/docs/books/tutorial/jdbc/index.html Учебник JDBC] (англ.)
|
Отрывок, характеризующий Java Database Connectivity
– Я говорю не про вас, – сказал он, – я вас не знаю и, признаюсь, не желаю знать. Я говорю вообще про штабных.– А я вам вот что скажу, – с спокойною властию в голосе перебил его князь Андрей. – Вы хотите оскорбить меня, и я готов согласиться с вами, что это очень легко сделать, ежели вы не будете иметь достаточного уважения к самому себе; но согласитесь, что и время и место весьма дурно для этого выбраны. На днях всем нам придется быть на большой, более серьезной дуэли, а кроме того, Друбецкой, который говорит, что он ваш старый приятель, нисколько не виноват в том, что моя физиономия имела несчастие вам не понравиться. Впрочем, – сказал он, вставая, – вы знаете мою фамилию и знаете, где найти меня; но не забудьте, – прибавил он, – что я не считаю нисколько ни себя, ни вас оскорбленным, и мой совет, как человека старше вас, оставить это дело без последствий. Так в пятницу, после смотра, я жду вас, Друбецкой; до свидания, – заключил князь Андрей и вышел, поклонившись обоим.
Ростов вспомнил то, что ему надо было ответить, только тогда, когда он уже вышел. И еще более был он сердит за то, что забыл сказать это. Ростов сейчас же велел подать свою лошадь и, сухо простившись с Борисом, поехал к себе. Ехать ли ему завтра в главную квартиру и вызвать этого ломающегося адъютанта или, в самом деле, оставить это дело так? был вопрос, который мучил его всю дорогу. То он с злобой думал о том, с каким бы удовольствием он увидал испуг этого маленького, слабого и гордого человечка под его пистолетом, то он с удивлением чувствовал, что из всех людей, которых он знал, никого бы он столько не желал иметь своим другом, как этого ненавидимого им адъютантика.
На другой день свидания Бориса с Ростовым был смотр австрийских и русских войск, как свежих, пришедших из России, так и тех, которые вернулись из похода с Кутузовым. Оба императора, русский с наследником цесаревичем и австрийский с эрцгерцогом, делали этот смотр союзной 80 титысячной армии.
С раннего утра начали двигаться щегольски вычищенные и убранные войска, выстраиваясь на поле перед крепостью. То двигались тысячи ног и штыков с развевавшимися знаменами и по команде офицеров останавливались, заворачивались и строились в интервалах, обходя другие такие же массы пехоты в других мундирах; то мерным топотом и бряцанием звучала нарядная кавалерия в синих, красных, зеленых шитых мундирах с расшитыми музыкантами впереди, на вороных, рыжих, серых лошадях; то, растягиваясь с своим медным звуком подрагивающих на лафетах, вычищенных, блестящих пушек и с своим запахом пальников, ползла между пехотой и кавалерией артиллерия и расставлялась на назначенных местах. Не только генералы в полной парадной форме, с перетянутыми донельзя толстыми и тонкими талиями и красневшими, подпертыми воротниками, шеями, в шарфах и всех орденах; не только припомаженные, расфранченные офицеры, но каждый солдат, – с свежим, вымытым и выбритым лицом и до последней возможности блеска вычищенной аммуницией, каждая лошадь, выхоленная так, что, как атлас, светилась на ней шерсть и волосок к волоску лежала примоченная гривка, – все чувствовали, что совершается что то нешуточное, значительное и торжественное. Каждый генерал и солдат чувствовали свое ничтожество, сознавая себя песчинкой в этом море людей, и вместе чувствовали свое могущество, сознавая себя частью этого огромного целого.
С раннего утра начались напряженные хлопоты и усилия, и в 10 часов всё пришло в требуемый порядок. На огромном поле стали ряды. Армия вся была вытянута в три линии. Спереди кавалерия, сзади артиллерия, еще сзади пехота.
Между каждым рядом войск была как бы улица. Резко отделялись одна от другой три части этой армии: боевая Кутузовская (в которой на правом фланге в передней линии стояли павлоградцы), пришедшие из России армейские и гвардейские полки и австрийское войско. Но все стояли под одну линию, под одним начальством и в одинаковом порядке.
Как ветер по листьям пронесся взволнованный шопот: «едут! едут!» Послышались испуганные голоса, и по всем войскам пробежала волна суеты последних приготовлений.
Впереди от Ольмюца показалась подвигавшаяся группа. И в это же время, хотя день был безветренный, легкая струя ветра пробежала по армии и чуть заколебала флюгера пик и распущенные знамена, затрепавшиеся о свои древки. Казалось, сама армия этим легким движением выражала свою радость при приближении государей. Послышался один голос: «Смирно!» Потом, как петухи на заре, повторились голоса в разных концах. И всё затихло.