java jdbc connection tutorial with programming example
Този урок за JDBC Connection обяснява основните стъпки към база данни с примери и предоставя низове за JDBC връзка за различни бази данни:
най-доброто качество на YouTube към mp3 конвертор
В предишния урок на JDBC серия уроци , научихме компоненти, архитектура и типове драйвери в Java Database Connectivity (JDBC).
В този урок ще обсъдим стъпките за свързване с бази данни с помощта на JDBC. Този урок ще ви покаже как да направите JDBC връзка и да извършвате операции с база данни. JDBC API действа като интерфейс между програмата Java и базата данни.
В края на този урок ще можете да пишете Java програми за свързване с бази данни и извършване на операции с DB.
Какво ще научите:
Стъпки за свързване на JDBC
Има 6 основни стъпки за свързване с JDBC. Те са включени в изображението по-долу:
# 1) Импортиране на пакети
Първо, трябва да импортираме съществуващите пакети, за да го използваме в нашата програма Java. Импортирането ще гарантира, че класовете JDBC API са налични за програмата. След това можем да използваме класовете и подкласовете на пакетите.
Независимо от драйвера JDBC, добавете следното изявление за импортиране в програмата Java.
import java.sql.*;
Импортирайте останалите класове въз основа на функционалността, която ще използвате в програмата. Изтеглете подходящите Jar файлове за базата данни, които ще използвате в програмата.
Обърнете се към предишен урок за връзките за изтегляне на Jar файловете за вашата база данни.
JDBC API 4.0 основно предоставя 2 важни пакета:
- java.sql
- javax.sql
(i) пакет java.sql
Този пакет предоставя класове и интерфейси за изпълнение на повечето JDBC функции като създаване и изпълнение на SQL заявки.
Класове / Интерфейси | Описание |
---|---|
DriverManager | Той предоставя основна услуга за управление на набор от JDBC драйвери |
BLOB | Той представлява SQL Blob стойност в Java програма |
CallableStatement | Използва се за изпълнение на SQL съхранени процедури |
CLOB | Той представлява стойността на SQL Clob в Java програма |
Връзка | Той създава връзка (сесия) с конкретна база данни |
Дата | Той осигурява поддръжка за тип SQL тип |
Шофьор | Той създава екземпляр на драйвер с Driver Manager |
ParameterMetaData | Това е обект, който може да се използва за получаване на информация за видовете и свойствата на всеки параметър в обект PreparedStatement |
Подготвена декларация | Използва се за създаване и изпълнение на параметризирана заявка в програмата Java |
Резултат | Използва се за достъп до резултата ред по ред |
ResultSetMetaData | Използва се за получаване на информация за видовете и свойствата на колоните в ResultSet обект |
RowId | Той представлява стойността на SQL ROWID |
Savepoint | Той представлява точка на запис в транзакцията |
SQLData | Използва се за картографиране на SQL потребителски дефиниран тип (UDT) към клас в Java програма |
SQLXML | Той представлява SQL XML тип |
Изявление | Използва се за изпълнение на статичен SQL оператор |
DriverPropertyInfo | Той осигурява свойства на драйвера за осъществяване на връзка |
SQLException | Той предоставя информация за грешки в базата данни |
SQLTimeoutException | Това е подклас на SQLException, изхвърлен, когато времето за изчакване, посочено в изявлението, е изтекло |
SQL Предупреждение | Това е изключение, което предоставя информация за предупрежденията за достъп до база данни |
Структура | Това е стандартно картографиране в Java програма за SQL структуриран тип |
(ii) пакет javax.sql
Това е API за разширение JDBC и осигурява достъп и обработка на данни от сървъра в Java Program.
Класове / Интерфейси | Описание |
---|---|
ConnectionEvent | Той предоставя информация за възникването на събития, свързани с връзката |
CommonDataSource | Това е интерфейс, който определя методите, които са общи между DataSource, XADataSource и ConnectionPoolDataSource |
ConnectionPoolDataSource | Това е фабрика за обекти PooledConnection |
Източник на данни | Това е фабрика за връзки към физическия DataSource, който обектът представлява |
PooledConnection | Използва се за управление на Connection Pool |
RowSet | Той осигурява поддръжка на JDBC API за компонентния модел на Java |
RowSetMetadata | Той разполага с информацията за колоните в обект RowSet |
ConnectionEventListener | Използва се за регистриране на събития на обект PooledConnection |
RowSetEvent | Той генерира, когато събитие възникне в обект Rowset |
StatementEvent | Изпраща се до всички StatementEventListeners, които са регистрирани с генериран PooledConnection |
# 2) Заредете драйвер
Първо, трябва да заредим / регистрираме драйвера в програмата, преди да се свържем с базата данни. Трябва да го регистрирате само веднъж на база данни в програмата.
Можем да заредим драйвера по следните 2 начина:
- Class.forName ()
- DriverManager.registerDriver ()
(i) Class.forName ()
По този начин файлът на класа на драйвера се зарежда в паметта по време на изпълнение. Това имплицитно зарежда драйвера. Докато се зарежда, драйверът ще се регистрира автоматично в JDBC.
Име на DB | Име на JDBC драйвер |
---|---|
Sybase | com.sybase.jdbcSybDriver |
MySQL | com.mysql.jdbc.Driver |
Oracle | oracle.jdbc.driver.OracleDriver |
Microsoft SQL Server | com.microsoft.sqlserver.jdbc.SQLServerDriver |
MS Access | net.ucanaccess.jdbc.UcanaccessDriver |
PostgreSQL | org.postgresql.Driver |
IBM DB2 | com.ibm.db2.jdbc.net.DB2Driver |
TeraData | com.teradata.jdbc.TeraDriver |
Забележка: Методът forName () е валиден само за виртуални машини, съвместими с JDK.
(ii) DriverManager.registerDriver ()
DriverManager е вграден клас, който се предлага в пакета java.sql. Той действа като посредник между Java приложението и базата данни, която искате да свържете. Преди да се свържете с базата данни, трябва да регистрирате драйвера в DriverManager. Основната функция на DriverManager е да зареди класа на драйвера на базата данни и да създаде връзка с DB.
Публичен статичен void registerDriver (драйвер) - Този метод ще регистрира драйвера в Driver Manager. Ако водачът вече е регистриран, той няма да предприеме никакви действия.
- Ще хвърли SQLException ако възникне грешка в базата данни.
- Ще хвърли NullPointerException ако драйверът е нулев.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
По този начин можете да регистрирате драйвера за вашата база данни, като го предадете като параметър.
# 3) Установете връзка
След зареждане на драйвера, следващата стъпка е да създадете и установите връзката. Веднъж необходими, пакетите се импортират и драйверите се зареждат и регистрират, тогава можем да отидем за установяване на връзка с база данни.
Класът DriverManager има метода getConnection, ние ще използваме този метод, за да получим връзката с базата данни. За да извикаме метода getConnection (), трябва да предадем 3 параметъра. 3-те параметъра са URL адрес от тип данни, потребителско име и парола за достъп до базата данни.
Методът getConnection () е претоварен метод. Двата метода са:
- getConnection (URL, потребителско име, парола); - Той има 3 параметъра URL, потребителско име, парола.
- getConnection (URL); - Той има само един параметър. URL също има потребителско име и парола.
Следващата таблица изброява низовете на JDBC връзка за различните бази данни:
База данни | Низ на връзка / URL на DB |
---|---|
Sybase | jdbc: Sybase: Tds: HOSTNAME: PORT / DATABASE_NAME |
MySQL | jdbc: mysql: // HOST_NAME: PORT / DATABASE_NAME |
Oracle | jdbc: oracle: thin: @HOST_NAME: PORT: SERVICE_NAME |
Microsoft SQL Server | jdbc: sqlserver: // HOST_NAME: PORT; Име на базата данни = |
MS Access | jdbc: ucanaccess: // DATABASE_PATH |
PostgreSQL | jdbc: postgresql: // HOST_NAME: PORT / DATABASE_NAME |
IBM DB2 | jdbc: db2: // HOSTNAME: PORT / DATABASE_NAME |
TeraData | jdbc: teradata: // HOSTNAME / database =, tmode = ANSI, charset = UTF8 |
Пример:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Тук в този пример,
- тънък се отнася до типа драйвер.
- localhost е мястото, където работи базата данни на Oracle.
- 1521 е номерът на порта за свързване с DB.
- превозно средство - SID
- Система - Потребителско име за свързване към базата данни на Oracle.
- Pass123 @ - Парола
# 4) Създаване и изпълнение на изявление
След като връзката се установи, можем да взаимодействаме със свързаната база данни. Първо, трябва да създадем оператора, за да изпълним SQL заявката и след това да изпълним израза.
(i) Създаване на изявление
Сега ще създадем операторния обект, който изпълнява заявката със свързаната база данни. Използваме метода createStatement на Връзка клас за създаване на заявката.
В пакета java.sql има 3 интерфейса с инструкции. Те са обяснени по-долу:
декларация
Този интерфейс се използва за реализиране на прости SQL изрази без параметър. Връща обекта ResultSet.
Statement statemnt1 = conn.createStatement();
б) Изготвена декларация
Този интерфейс PreparedStatement разширява интерфейса Statement. Така че, той има повече функции от интерфейса Statement. Използва се за внедряване на параметризирани и предварително компилирани SQL изрази. Ефективността на приложението се увеличава, защото компилира заявката само веднъж.
Лесно е да използвате повторно този интерфейс с нов параметър. Той поддържа параметъра IN. Дори можем да използваме това твърдение без никакъв параметър.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
в) CallableStatement
Интерфейсът CallableStatement разширява интерфейса PreparedStatement. И така, той има повече функции от интерфейса PreparedStatement. Използва се за реализиране на параметризиран SQL израз, който извиква процедура или функция в базата данни. Съхранената процедура работи като метод или функция в клас. Той поддържа параметрите IN и OUT.
Екземпляр CallableStatement се създава чрез извикване на метода prepaCall на обекта Connection.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ii) Изпълнете заявката
Има 4 важни метода за изпълнение на заявката в интерфейса на Statement. Те са обяснени по-долу:
- ResultSet executeQuery (String sql)
- int executeUpdate (String sql)
- булево изпълнение (String sql)
- int () executeBatch ()
а) ResultSet executeQuery (String sql)
Методът executeQuery () в интерфейса Statement се използва за изпълнение на SQL заявката и извличане на стойностите от DB. Връща обекта ResultSet. Обикновено ще използваме този метод за заявката SELECT.
б) executeUpdate (String sql)
Методът executeUpdate () се използва за изпълнение на заявки за стойност, като INSERT, UPDATE, DELETE (DML изрази) или DDL изрази, които не връщат нищо. Най-вече ще използваме този метод за вмъкване и актуализиране.
в) изпълнение (String sql)
Методът execute () се използва за изпълнение на SQL заявката. Връща се вярно ако изпълни заявката SELECT. И се връща невярно ако изпълнява INSERT или UPDATE заявка.
г) executeBatch ()
Този метод се използва за изпълнение на партида SQL заявки към базата данни и ако всички заявки се изпълнят успешно, той връща масив от брой актуализации. Ще използваме този метод за вмъкване / актуализиране на по-голямата част от записите.
# 5) Извличане на резултати
Когато изпълняваме заявките с помощта на метода executeQuery (), резултатът ще се съхранява в обекта ResultSet. Върнатият обект ResultSet никога няма да бъде нулев, дори ако в таблицата няма съответстващ запис. ResultSet обектът се използва за достъп до данните, извлечени от базата данни.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
Можем да използваме метода executeQuery () за заявката SELECT. Когато някой се опита да изпълни заявката за вмъкване / актуализиране, тя ще хвърли SQLExecption със съобщението „ Методът executeQuery не може да се използва за актуализация ”.
Обект ResultSet сочи към текущия ред в Resultset. За да повторите данните в обекта ResultSet, извикайте метода next () в цикъл while. Ако няма повече запис за четене, той ще върне FALSE.
ResultSet може да се използва и за актуализиране на данни в DB. Можем да получим данните от ResultSet, като използваме методи за получаване като getInt (), getString (), getDate (). Трябва да предадем индекса на колоната или името на колоната като параметър, за да получим стойностите, използвайки Getter методи.
Ще научим повече за ResultSet в следващия урок.
# 6) Затворете връзката
Накрая приключихме с манипулирането на данни в DB. Сега можем да затворим връзката JDBC. Трябва да се уверим, че сме затворили ресурса, след като сме го използвали. Ако не ги затворим правилно, може да се окажем без връзки.
Когато затворим обекта на свързване, обектите Statement и ResultSet ще бъдат затворени автоматично.
conn.close();
От Java 7 нататък можем да затваряме JDBC връзките автоматично, като използваме блока try-catch. JDBC връзката трябва да се отвори в скобите на блока try. Вътре в блока try можете да правите връзките с базата данни нормално, както правим ние.
След като изпълнението излезе от блока try, то автоматично ще затвори връзката. В този случай не е необходимо да затваряме връзката, като извикваме метода conn.close в програмата Java.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Пример за свързване на Java JDBC
В този пример ще видите как да приложите 6-те основни стъпки за свързване с база данни с помощта на JDBC в Java програма.
Създаване на таблица
Преди това първо създайте една таблица и добавете няколко записа в нея.
По-долу е SQL заявката за създаване на таблица.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
Създаде таблицата “worker_details” в Oracle DB.
Вмъкване на данни в таблицата
Използвайки следните заявки, вмъкнете данните в таблицата „подробности за служителя“.
insert into employee_details values (1001, 'Luther', 'Martin', 'ml@gmail.com', 1, 13000); insert into employee_details values (1002, 'Murray', 'Keith', 'km@gmail.com', 2, 25000); insert into employee_details values (1003, 'Branson', 'John', 'jb@gmail.com', 3, 15000); insert into employee_details values (1004, 'Martin', 'Richard', 'rm@gmail.com', 4, 16000); insert into employee_details values (1005, 'Hickman', 'David', 'dh@gmail.com', 5, 17000);
Програма Java
Изтеглете JDBC jar файла и го импортирайте в проекта Java.
package com.STH.JDBC; // import sql package to use it in our program import java.sql.*; public class Sample_JDBC_Program { public static void main(String() args) throws ClassNotFoundException, SQLException { // store the SQL statement in a string String QUERY = 'select * from employee_details'; //register the oracle driver with DriverManager Class.forName('oracle.jdbc.driver.OracleDriver'); //Here we have used Java 8 so opening the connection in try statement try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Created statement and execute it ResultSet rs1 = statemnt1.executeQuery(QUERY); { //Get the values of the record using while loop while(rs1.next()) { int empNum = rs1.getInt('empNum'); String lastName = rs1.getString('lastName'); String firstName = rs1.getString('firstName'); String email = rs1.getString('email'); String deptNum = rs1.getString('deptNum'); String salary = rs1.getString('salary'); //store the values which are retrieved using ResultSet and print it System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } } catch (SQLException e) { //If exception occurs catch it and exit the program e.printStackTrace(); } } }
Изход:
Основни моменти, които трябва да се отбележат:
- Първо, трябва да импортираме пакетите, които ще използваме в нашата програма Java за JDBC връзка. Така че можем да използваме класовете, подкласовете и интерфейсите в пакетите.
- Трябва да регистрираме или да заредим драйвера с DriverManager, преди да установим връзка.
- След като регистрираме драйвера, можем да установим връзката и да извършим операциите.
- Използвайки интерфейс на инструкции, можем да създадем и изпълним SQL заявката. За проста SQL заявка можем да използваме интерфейса Statement. За вмъкване / актуализиране / изтриване можем да използваме интерфейса PreparedStatement.
- След изпълнението на оператора резултатите ще се съхраняват в обекта ResultSet. Получаваме резултатите от обекта ResultSet, използвайки метода next () за повече от 1 запис.
- След като приключим с операцията с базата данни, трябва да затворим връзката. Така че ресурсът ще бъде достъпен за използване от другите.
често задавани въпроси
В # 1) Кои са основните стъпки за свързване с DB в Java?
Отговор: Има 6 основни стъпки за свързване с DB в Java.
Те са:
- Внос-пакет
- Заредете драйвер
- Установете връзка
- Създайте и изпълнете изявлението
- Извличане на резултатите
- Затворете връзката
В # 2) Каква е разликата между BLOB и CLOB типовете данни в JDBC?
Отговор:
BLOB се използва за съхраняване на двоичен тип данни. Размерът на съхранението може да варира в зависимост от базите данни Пример: изображения, глас, видео.
CLOB се използва за съхраняване на типа знаци на данни. Подобно на CLOB, пространството за съхранение може да варира в зависимост от DB. Пример: файлове.
В # 3) Кой метод на класа DriverManager се използва за установяване на връзка с DB?
Отговор: Класът DriverManager има метод getConnection (), който се използва за установяване на връзка с DB.
какво е бета тестване и как се използва
В # 4) Каква е разликата между Class.forName () и DriverManager.registerDriver ()?
Отговор: Class.forName () - Първо зарежда драйвера в паметта и след това регистрира съответния драйвер в Driver Manager. След това ще създаде обект на драйвера, за да извърши JDBC връзката. Той ще зареди драйвера изрично.
DriverManager.registerDriver () - Той регистрира драйвера имплицитно.
В # 5) Какво представлява изтичане на връзка?
Отговор: Тази ситуация възниква, когато се отвори връзка и не сте я затворили. Ако има блок с код, който отваря връзката и не затваря връзката. Всеки път, когато този блок код се изпълни, връзка ще изтече от пула за връзки.
След като всички налични връзки изтекат, няма да има връзка и приложението ще увисне. Колко важно е да отворите връзката, колко е важно да затворите връзката.
В # 6) Задължително ли е да затворите връзката?
Отговор: Ако използвате версии на Java под 7, трябва да затворите връзката ръчно.
От версии над Java 7 можем да затворим връзката автоматично, като отворим кода за връзка на JDBC в скобите на блока try. След като програмата излезе от блока try, тя автоматично ще затвори връзката.
Заключение
В този урок обсъдихме как да установим JDBC връзка. Сега можете да извършвате DB операции с помощта на JDBC в програмата Java. Проучихме 6-те основни стъпки за свързване с базата данни. Трябва да импортираме пакетите в нашата програма Java, за да го използваме.
След като регистрираме драйвера, можем да установим връзката. Можем да създадем и изпълним SQL израза с помощта на интерфейс Statement и да извлечем резултатите в обекта ResultSet. Като последна стъпка трябва да затворим връзката.
Препоръчително четене
- Урок за Java JDBC: Какво е JDBC (свързаност с база данни на Java)
- Урок за интерфейс на Java и абстрактен клас с примери
- Управление на транзакции на Java JDBC с пример
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Как да използвам Java ResultSet за извличане на данни
- Урок за JAVA за начинаещи: 100+ практически ръководства за Java видео
- Въведение в езика за програмиране на Java - видео урок
- Тестване на база данни за селен (Използване на WebDriver и JDBC API)