java jdbc connection tutorial with programming example
Ово упутство за ЈДБЦ везу објашњава основне кораке до базе података са примерима и пружа ЈДБЦ низове веза за различите базе података:
како отворити .јава датотеку
У претходном водичу ЈДБЦ туториал сериес , научили смо компоненте, архитектуру и типове управљачких програма у Јава Датабасе Цоннецтивити (ЈДБЦ).
У овом упутству ћемо размотрити кораке за повезивање са базама података помоћу ЈДБЦ. Овај водич ће вам показати како се врши ЈДБЦ веза и извршавају операције базе података. ЈДБЦ АПИ делује као интерфејс између Јава програма и базе података.
На крају овог водича моћи ћете да напишете Јава програме за повезивање са базама података и извођење ДБ операција.
Шта ћете научити:
Кораци повезивања ЈДБЦ
Постоји 6 основних корака за повезивање са ЈДБЦ. Они су наведени на доњој слици:
# 1) Увоз пакета
Прво, морамо да увежемо постојеће пакете да бисмо га користили у нашем Јава програму. Увоз ће осигурати да су класе ЈДБЦ АПИ доступне за програм. Тада можемо користити класе и поткласе пакета.
Без обзира на ЈДБЦ управљачки програм, додајте следећу изјаву о увозу у Јава програм.
import java.sql.*;
Увезите остале класе на основу функционалности коју ћете користити у програму. Преузмите одговарајуће Јар датотеке за базу података коју ћете користити у програму.
Односи се претходни туториал за везе за преузимање датотека Јар за вашу базу података.
ЈДБЦ АПИ 4.0 углавном нуди 2 важна пакета:
- јава.скл
- јавак.скл
(и) пакет јава.скл
Овај пакет нуди класе и интерфејсе за извођење већине ЈДБЦ функција попут креирања и извршавања СКЛ упита.
Класе / интерфејси | Опис |
---|---|
ДриверМанагер | Пружа основну услугу за управљање скупом ЈДБЦ управљачких програма |
БЛОБ | Представља вредност СКЛ Блоб у програму Јава |
ЦаллаблеСтатемент | Користи се за извршавање СКЛ ускладиштених процедура |
ЦЛОБ | Представља вредност СКЛ Цлоб у програму Јава |
Веза | Ствара везу (сесију) са одређеном базом података |
Датум | Пружа подршку за тип СКЛ Дате |
Возач | Ствара инстанцу управљачког програма са управљачким програмом |
ПараметерМетаДата | То је објекат који се може користити за добијање информација о врстама и својствима сваког параметра у објекту ПрепаредСтатемент |
ПрепаредСтатемент | Користи се за креирање и извршавање параметризованог упита у програму Јава |
РесултСет | Користи се за приступ резултату ред по ред |
РесултСетМетаДата | Користи се за добијање информација о врстама и својствима колона у РесултСет објекту |
Ред | Представља вредност СКЛ РОВИД |
Савепоинт | Представља тачку спремања у трансакцији |
СКЛДата | Користи се за мапирање СКЛ кориснички дефинисаног типа (УДТ) у класу у Јава програму |
СКЛКСМЛ | Представља СКЛ КСМЛ тип |
Изјава | Користи се за извршавање статичког СКЛ израза |
ДриверПропертиИнфо | Пружа својства управљачког програма за успостављање везе |
СКЛЕкцептион | Пружа информације о грешкама базе података |
СКЛТимеоутЕкцептион | То је подкласа СКЛЕкцептион која се баца када истекне временско ограничење наведено у наредби |
СКЛВарнинг | Изузетак је тај који пружа информације о упозорењима о приступу бази података |
Структура | То је стандардно мапирање у Јава програму за СКЛ структурирани тип |
(ии) пакет јавак.скл
То је АПИ ЈДБЦ екстензије и пружа приступ и обраду података на страни сервера у Јава програму.
Класе / интерфејси | Опис |
---|---|
ЦоннецтионЕвент | Пружа информације о појави догађаја повезаних са везом |
ЦоммонДатаСоурце | То је интерфејс који дефинише методе које су уобичајене између ДатаСоурце, КСАДатаСоурце и ЦоннецтионПоолДатаСоурце |
ЦоннецтионПоолДатаСоурце | То је фабрика за ПооледЦоннецтион објекте |
Извор података | То је фабрика за везе са физичким извором података који објекат представља |
ПооледЦоннецтион | Користи се за управљање Цоннецтион Поол-ом |
РовСет | Пружа подршку ЈДБЦ АПИ-ју за компонентни модел Јава пасуља |
РовСетМетадата | Садржи информације о колонама у објекту РовСет |
ЦоннецтионЕвентЛистенер | Користи се за регистрацију догађаја објеката ПооледЦоннецтион |
РовСетЕвент | Генерише се када се догађај догоди објекту Ровсет |
СтатементЕвент | Шаље се свим СтатементЕвентЛистенерс који су регистровани са генерисаним ПооледЦоннецтион |
# 2) Лоад Дривер
Прво, требало би да учитамо / региструјемо управљачки програм у програму пре повезивања са базом података. Треба да га региструјете само једном по бази података у програму.
Возач можемо учитати на следећа 2 начина:
- Цласс.форНаме ()
- ДриверМанагер.регистерДривер ()
(и) Цласс.форНаме ()
На тај начин, датотека класе возача се учитава у меморију током извршавања. То имплицитно учитава возач. Током учитавања, возач ће се аутоматски регистровати у ЈДБЦ.
Име ДБ | Име управљачког програма ЈДБЦ |
---|---|
Сибасе | цом.сибасе.јдбцСибДривер |
МиСКЛ | цом.мискл.јдбц.Дривер |
Орацле | орацле.јдбц.дривер.ОрацлеДривер |
Мицрософт СКЛ Сервер | цом.мицрософт.склсервер.јдбц.СКЛСерверДривер |
МС Аццесс | нет.уцанаццесс.јдбц.УцанаццессДривер |
ПостгреСКЛ | орг.постгрескл.Дривер |
ИБМ ДБ2 | цом.ибм.дб2.јдбц.нет.ДБ2Дривер |
ТераДата | цом.терадата.јдбц.ТераДривер |
Белешка: метода форНаме () важи само за ЈДК компатибилне виртуелне машине.
(ии) ДриверМанагер.регистерДривер ()
ДриверМанагер је уграђена класа која је доступна у пакету јава.скл. Делује као посредник између Јава апликације и базе података коју желите да повежете. Пре него што се повежете са базом података, морате да региструјете управљачки програм у ДриверМанагер-у. Главна функција ДриверМанагер-а је учитавање класе управљачких програма базе података и стварање везе са ДБ-ом.
Јавни статички воид регистерДривер (управљачки програм) - Овом методом ће се управљачки програм регистровати код управљачког програма. Ако је возач већ регистрован, неће предузети никакве мере.
- Бациће СКЛЕкцептион ако дође до грешке у бази података.
- Бациће НуллПоинтерЕкцептион ако је управљачки програм ништаван.
DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver()) DriverManager.registerDriver(new com.microsoft.sqlserver.jdbc.SQLServerDriver())
Овако, можете регистровати управљачки програм за своју базу података тако што ћете га предати као параметар.
# 3) Успоставите везу
Након учитавања управљачког програма, следећи корак је стварање и успостављање везе. Када се затраже, пакети се увезу, а управљачки програми учитавају и региструју, онда можемо ићи на успостављање везе са базом података.
Класа ДриверМанагер има методу гетЦоннецтион, ми ћемо је користити за успостављање везе са базом података. Да бисмо позвали методу гетЦоннецтион (), треба да проследимо 3 параметра. Три параметра су УРЛ типа података низа, корисничко име и лозинка за приступ бази података.
Метода гетЦоннецтион () је преоптерећена метода. 2 методе су:
- гетЦоннецтион (УРЛ, корисничко име, лозинка); - Има 3 параметра УРЛ, корисничко име и лозинку.
- гетЦоннецтион (УРЛ); - Има само један параметар. УРЛ такође садржи корисничко име и лозинку.
Следећа табела наводи ЈДБЦ низове веза за различите базе података:
База података | Низ везе / УРЛ базе података |
---|---|
Сибасе | јдбц: Сибасе: Тдс: ХОСТНАМЕ: ПОРТ / ДАТАБАСЕ_НАМЕ |
МиСКЛ | јдбц: мискл: // ХОСТ_НАМЕ: ПОРТ / ДАТАБАСЕ_НАМЕ |
Орацле | јдбц: орацле: тхин: @ХОСТ_НАМЕ: ПОРТ: СЕРВИЦЕ_НАМЕ |
Мицрософт СКЛ Сервер | јдбц: склсервер: // ХОСТ_НАМЕ: ПОРТ; Име базе података = |
МС Аццесс | јдбц: уцанаццесс: // ДАТАБАСЕ_ПАТХ |
ПостгреСКЛ | јдбц: постгрескл: // ХОСТ_НАМЕ: ПОРТ / ДАТАБАСЕ_НАМЕ |
ИБМ ДБ2 | јдбц: дб2: // ХОСТНАМЕ: ПОРТ / ДАТАБАСЕ_НАМЕ |
ТераДата | јдбц: терадата: // ХОСТНАМЕ / датабасе =, тмоде = АНСИ, цхарсет = УТФ8 |
Пример:
Connection con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:xe,System,Pass123@)
Овде у овом примеру,
- танак односи се на тип возача.
- локални домаћин је место где се покреће Орацле база података.
- 1521 је број порта за повезивање са ДБ.
- возило - СИД
- Систем - Корисничко име за повезивање са Орацле базом података.
- Пасс123 @ - Лозинка
# 4) Направите и извршите изјаву
Једном када се веза успостави, можемо ступити у интеракцију са повезаном базом података. Прво треба да креирамо израз да бисмо извршили СКЛ упит, а затим да извршимо израз.
(и) Направите изјаву
Сада ћемо створити објект израза који покреће упит са повезаном базом података. Користимо методу цреатеСтатемент за Веза класа за креирање упита.
У пакету јава.скл доступна су 3 интерфејса израза. Они су објашњени у наставку:
Изјава
Овај интерфејс се користи за имплементацију једноставних СКЛ израза без параметра. Враћа објект РесултСет.
Statement statemnt1 = conn.createStatement();
б) Припремљена изјава
Овај интерфејс ПрепаредСтатемент проширује интерфејс Статемент. Дакле, има више функција од интерфејса Статемент. Користи се за примену параметарских и прекомпајлираних СКЛ израза. Перформансе апликације се повећавају јер упит компајлира само једном.
Лако је поново користити овај интерфејс са новим параметром. Подржава параметар ИН. Чак и ову изјаву можемо користити без икаквог параметра.
String select_query = “Select * from states where state_id = 1”; PreparedStatement prpstmt = conn.prepareStatement(select_query);
ц) ЦаллаблеСтатемент
Интерфејс ЦаллаблеСтатемент проширује интерфејс ПрепаредСтатемент. Дакле, има више функција од интерфејса ПрепаредСтатемент. Користи се за имплементацију параметризованог СКЛ израза који позива процедуру или функцију у бази података. Похрањена процедура ради као метода или функција у класи. Подржава ИН и ОУТ параметре.
Инстанца ЦаллаблеСтатемент креира се позивањем методе препаЦалл објекта Цоннецтион.
CallableStatementcallStmt = con.prepareCall('{call procedures(?,?)}');
(ии) Извршите упит
Постоје 4 важне методе за извршавање упита у интерфејсу Изјава. Они су објашњени у наставку:
- РесултСет екецутеКуери (Стринг скл)
- инт екецутеУпдате (Стринг скл)
- логичко извршавање (Стринг скл)
- инт () екецутеБатцх ()
а) РесултСет екецутеКуери (Стринг скл)
Метод ЕкецутеКуери () у Статемент интерфејсу користи се за извршавање СКЛ упита и преузимање вредности из ДБ-а. Враћа објект РесултСет. Обично ћемо користити ову методу за упит СЕЛЕЦТ.
б) екецутеУпдате (Стринг скл)
Метода екецутеУпдате () користи се за извршавање упита задатих вриједностима попут ИНСЕРТ, УПДАТЕ, ДЕЛЕТЕ (ДМЛ наредби) или ДДЛ израза који не враћају ништа. Углавном ћемо користити овај метод за уметање и ажурирање.
ц) изврши (Стринг скл)
Метода екецуте () користи се за извршавање СКЛ упита. Враћа се истинито ако изврши СЕЛЕЦТ упит. И, враћа се лажно ако извршава ИНСЕРТ или УПДАТЕ упит.
д) екецутеБатцх ()
Овај метод се користи за извршавање серије СКЛ упита у базу података и ако се сви упити успешно изврше, враћа низ бројева ажурирања. Ову методу ћемо користити за уметање / ажурирање већине записа.
# 5) Преузимање резултата
Када извршавамо упите методом екецутеКуери (), резултат ће бити ускладиштен у објекту РесултСет. Враћени објект РесултСет никада неће бити ништаван чак и ако у табели не постоји одговарајући запис. РесултСет објект се користи за приступ подацима преузетим из базе података.
ResultSet rs 1= statemnt1.executeQuery(QUERY));
За упит СЕЛЕЦТ можемо користити методу екецутеКуери (). Када неко покуша да изврши упит за убацивање / ажурирање, бациће СКЛЕкецптион са поруком „ Начин извршењаКуери не може се користити за ажурирање ”.
Објекат РесултСет показује на тренутни ред у скупу резултата. Да бисте поновили податке у објекту РесултСет, позовите методу нект () у вхиле петљу. Ако више нема записа за читање, вратиће ФАЛСЕ.
РесултСет се такође може користити за ажурирање података у ДБ-у. Податке из РесултСет-а можемо добити помоћу геттер метода као што су гетИнт (), гетСтринг (), гетДате (). Морамо проследити индекс колоне или име колоне као параметар да бисмо добили вредности помоћу Геттер метода.
О РесултСет-у ћемо сазнати више у следећем упутству.
# 6) Затворите везу
На крају, завршили смо са манипулацијом подацима у ДБ-у. Сада можемо да затворимо ЈДБЦ везу. Морамо бити сигурни да смо затворили ресурс након што смо га искористили. Ако их не затворимо правилно, можда ћемо завршити без веза.
Када затворимо објект везе, објекти Статемент и РесултСет аутоматски ће се затворити.
conn.close();
Од Јаве 7 надаље, ЈДБЦ везе можемо аутоматски затворити помоћу блока три-цатцх. ЈДБЦ везу треба отворити у загради блока три. Унутар блока три можете нормално радити везе са базом података као и ми.
Једном када извршење изађе из блока три, аутоматски ће затворити везу. У овом случају, не треба да затворимо везу позивањем методе цонн.цлосе у програму Јава.
try(Connection conn = DriverManager.getConnection(url, user, password)) { //database connection and operation }
Пример Јава ЈДБЦ везе
У овом примеру ћете видети како да примените 6 основних корака за повезивање са базом података помоћу ЈДБЦ у програму Јава.
Направи табелу
Пре тога, прво направите једну табелу и додајте у њу неке уносе.
Испод је СКЛ упит за стварање табеле.
create table employee_details (empNum number(10), lastName varchar(50), firstName varchar(50), email varchar(255) , deptNum number(10), salary number(10));
Направио табелу „воркер_детаилс“ у Орацле ДБ-у.
Убаци податке у табелу
Користећи следеће упите, убаците податке у табелу „запослени_детаљи“.
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);
Јава Програм
Преузмите ЈДБЦ јар датотеку и увезите је у Јава пројекат.
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(); } } }
Излаз:
Кључне тачке које треба напоменути:
- Прво, морамо да увозимо пакете које ћемо користити у нашем Јава програму за ЈДБЦ везу. Тако да можемо користити класе, поткласе и интерфејсе у пакетима.
- Морамо да региструјемо или учитамо управљачки програм са ДриверМанагер-ом пре успостављања везе.
- Након регистрације возача, можемо успоставити везу и извршити операције.
- Коришћењем интерфејса израза можемо креирати и извршити СКЛ упит. За једноставан СКЛ упит можемо користити интерфејс Статемент. За уметање / ажурирање / брисање можемо користити интерфејс ПрепаредСтатемент.
- Након извршења израза, резултати ће бити похрањени у објекту РесултСет. Резултате добијамо из објекта РесултСет помоћу методе нект () за више од 1 записа.
- Када завршимо са операцијом базе података, морамо да затворимо везу. Тако да ће ресурс бити доступан и другима.
Често постављана питања
П # 1) Који су основни кораци за повезивање са ДБ-ом у Јави?
алати које користи пословни аналитичар за прикупљање захтева
Одговор: Постоји 6 основних корака за повезивање са ДБ-ом у Јави.
Су:
- Увоз-пакет
- Лоад дривер
- Успоставите везу
- Направите и извршите изјаву
- Преузми резултате
- Затвори везу
П # 2) Која је разлика између типова података БЛОБ и ЦЛОБ у ЈДБЦ?
Одговор:
БЛОБ користи се за чување бинарног типа података. Величина складишног простора може се разликовати у зависности од база података Пример: слике, глас, видео.
ЦЛОБ користи се за чување типа података са знаковима. Као и ЦЛОБ, простор за складиштење може се разликовати у зависности од ДБ-а. Пример: фајлови.
П # 3) Који се метод класе ДриверМанагер користи за успостављање везе са ДБ?
Одговор: Класа ДриверМанагер има методу гетЦоннецтион () која се користи за успостављање везе са ДБ.
П # 4) Која је разлика између Цласс.форНаме () и ДриверМанагер.регистерДривер ()?
Одговор: Цласс.форНаме () - Прво учитава управљачки програм у меморију, а затим региструје одговарајући управљачки програм код управљачког програма. Тада ће створити објекат управљачког програма за извођење ЈДБЦ везе. Изричито ће учитати возач.
ДриверМанагер.регистерДривер () - Возач региструје имплицитно.
П # 5) Шта је цурење везе?
Одговор: До ове ситуације долази када се веза отвори и нисте је прекинули. Ако постоји блок кода, који отвара везу и не прекида везу. Кад год се изврши тај блок кода, веза ће процурити из спремишта веза.
Када процуре све доступне везе, неће бити доступна и апликација ће се обуставити. Колико је важно отворити везу, толико је важно затворити везу.
П # 6) Да ли је обавезно затворити везу?
Одговор: Ако користите Јава верзије испод 7, морате ручно да затворите везу.
Од верзија изнад Јаве 7, везу можемо аутоматски затворити отварањем ЈДБЦ кода везе у загради блока три. Једном када програм изађе из блока три, аутоматски ће затворити везу.
Закључак
У овом упутству смо разговарали о томе како успоставити ЈДБЦ везу. Сада можете изводити ДБ операције помоћу ЈДБЦ у програму Јава. Истражили смо 6 основних корака за повезивање са базом података. Морамо увести пакете у наш Јава програм да бисмо га користили.
Једном када региструјемо управљачки програм, можемо успоставити везу. Можемо да креирамо и извршимо СКЛ израз помоћу интерфејса Статемент и да дохватимо резултате у објекту РесултСет. Као последњи корак, требало би да затворимо везу.
Препоручено читање
- Јава ЈДБЦ лекција: Шта је ЈДБЦ (повезивање Јава базе података)
- Јава интерфејс и лекција са апстрактним часовима са примерима
- Јава ЈДБЦ управљање трансакцијама са примером
- ЈДБЦ ДриверМанагер, ЈДБЦ ПрепаредСтатемент анд Статемент
- ЈДБЦ РесултСет: Како користити Јава РесултСет за преузимање података
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Увод у програмски језик Јава - Видео водич
- Тестирање базе података селена (помоћу ВебДривер-а и ЈДБЦ АПИ-ја)