Interested Article - Java Database Connectivity
- 2020-08-29
- 1
JDBC
(
англ.
Java DataBase Connectivity
—
соединение с базами данных на
Java
) — платформенно независимый промышленный стандарт взаимодействия Java-приложений с различными
СУБД
, реализованный в виде пакета
java.sql
, входящего в состав
Java SE
.
JDBC основан на концепции так называемых драйверов, позволяющих получать соединение с базой данных по специально описанному URL . Драйверы могут загружаться динамически (во время работы программы). Загрузившись, драйвер сам регистрирует себя и вызывается автоматически, когда программа требует URL , содержащий протокол, за который драйвер отвечает.
История
Sun Microsystems выпустила JDBC как часть JDK 1.1 19 февраля 1997 года . С тех пор он является частью 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 |
---|
Данный пример использует , свободный драйвер 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();
|
Примечания
- . www.sun.com . Sun Microsystems . Архивировано из 24 июня 2012 года.
Ссылки
- (рус.)
- (англ.)
- (англ.)
- 2020-08-29
- 1