Java Database Connectivity
| JDBC | |
|---|---|
| | |
| Тип | Data Access API |
| Написана на | Java |
| Дата выпуска | 19 февраля 1997 |
| Аппаратная платформа | Java Virtual Machine |
| Последняя версия | JDBC 4.3 (21 сентября 2017) |
| Сайт | Java SE 8 |
JDBC (англ. Java DataBase Connectivity — соединение с базами данных на Java) — платформенно независимый промышленный стандарт взаимодействия Java-приложений с различными СУБД, реализованный в виде пакета java.sql, входящего в состав Java SE.
JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL. Драйверы могут загружаться динамически (во время работы программы). Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL, содержащий протокол, за который драйвер отвечает.
История
Sun Microsystems выпустила JDBC как часть JDK 1.1 19 февраля 1997 года[1]. С тех пор он является частью J2SE. Классы JDBC находятся в пакетах 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");
Connection conn = null;
try {
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();
} finally{
if (conn != null){
conn.close();
}
}
}
}
|
| 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();
|
Примечания
- ↑ Спецификация JDBC 3.0. www.sun.com. Sun Microsystems. Архивировано из оригинала 24 июня 2012 года.
Ссылки
- Взаимодействие с базой данных в Java-программах (рус.)
- Официальная страница JDBC (англ.)
- Учебник JDBC (англ.)
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.