Java DataBase Connectivity (англ.Java DataBase Connectivity — з'єднання з базами даних на Java), скорочено JDBC) — прикладний програмний інтерфейсJava, який визначає методи, з допомогою яких програмне забезпечення на Java здійснює доступ до бази даних. JDBC — це платформо-незалежний промисловий стандарт взаємодії Java-застосунків з різноманітними СУБД, реалізований у вигляді пакета java.sql, що входить до складу Java SE.
В основі JDBC лежить концепція так званих драйверів, що дозволяють отримувати з'єднання з базою даних по спеціально описаному URL. Драйвери можуть завантажуватись динамічно (під час роботи програми). Завантажившись, драйвер сам реєструє себе й викликається автоматично, коли програма вимагає URL, що містить протокол, за який драйвер «відповідає».
Інтерфейси
JDBC API містить два основні типи інтерфейсів: перший — для розробників застосунків і другий (нижчого рівня) — для розробників драйверів.
З'єднання з базою даних описується класом, що реалізує інтерфейс java.sql.Connection.
Маючи з'єднання з базою даних, можна створювати об'єкти типу Statement, використовувані для здійснення запитів до бази даних на мові SQL.
Існують такі види типів Statement, що відрізняються своїм призначенням:
java.sql.Statement — Statement загального призначення;
java.sql.PreparedStatement — Statement, що служить для здійснення запитів, котрі містять підставні параметри (позначаються символом '?' у тілі запиту);
java.sql.CallableStatement — Statement, призначений для виклику збережених процедур.
Класjava.sql.ResultSet дозволяє легко обробляти результати запитів.
Переваги
Перевагами JDBC вважаються:
Легкість розробки: розробник може не знати специфіки бази даних, з якою працює;
Код не змінюється, якщо компанія переходить на іншу базу даних;
Не треба встановлювати громіздку клієнтську програму;
До будь-якої бази можна під'єднатись через легко описуваний URL.
packagejavaapplication1;importjava.sql.*;publicclassMain{publicstaticvoidmain(String[]args)throwsSQLException{/** * цей рядок вказує драйвер DB. * розкоментуйте, якщо прописуєте драйвер вручну *///Class.forName("com.mysql.jdbc.Driver").newInstance();Connectionconn=DriverManager.getConnection("jdbc:mysql://localhost:3306/db_name","user","password");if(conn==null){System.out.println("Немає з'єднання з БД!");System.exit(0);}Statementstmt=conn.createStatement();ResultSetrs=stmt.executeQuery("SELECT * FROM users");while(rs.next()){System.out.println(rs.getRow()+". "+rs.getString("firstname")+"\t"+rs.getString("lastname"));}// if(rs!=null)rs.close();/** * stmt.close(); * При закритті Statement автоматично закриваються * всі пов'язані з ним відкриті об'єкти ResultSet */// if(stmt!=null)stmt.close();stmt.close();}}
JDBC для Microsoft SQL Server
Цей приклад використовує jTDS, вільний драйвер JDBC для Microsoft SQL Server і Sybase ASE SQL-Server. Підключитись до цієї та інших СУБД можна і вбудованими засобами за допомогою драйвера JDBC для ODBC, але ціною сповільнення роботи.
/** * цей рядок вказує альтернативний драйвер DB. Наприклад, hsql. */// Class.forName("org.hsqldb.jdbcDriver");Connectionconn=DriverManager.getConnection("jdbc:jtds:sqlserver://SERVER/Northwind;instance=INST;domain=Sample_NTLM_Domain","user","password");Statementstmt=conn.createStatement();ResultSetrs=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();