java jdbc transaction management with example
Овај водич објашњава ЈДБЦ типове трансакција, типове података, методе управљања трансакцијама и како их користити у Јава програму:
У ЈДБЦ РесултСет туториал оф ЈДБЦ туториал сериес , научили смо да користимо ЈДБЦ РесултСет за преузимање података.
У овом упутству ћемо размотрити типове трансакција у ЈДБЦ. Видели смо кратак увод у врсте трансакција у нашим претходним водичима. Овде ћемо видети на детаљан начин. Такође ћемо покрити који су типови података у ЈДБЦ-у и како их користити у Јава програму.
База података ће имати различите типове података, а Јава ће имати различите типове података. ЈДБЦ ће управљати овом диференцијацијом. Спремимо се да знамо важну тему у ЈДБЦ.
Шта ћете научити:
ЈДБЦ управљање трансакцијама
Редослед акција (СКЛ изрази) третира се као једна целина која је позната као трансакција. Управљање трансакцијама је важно за РДБМС оријентисане апликације да би се одржао интегритет и доследност података.
Током извршавања трансакције користићемо методе гетКСКСКС и сетКСКСКС за преузимање и подешавање података у објекту РесултСет. КСКСКС представља типове података колона. У овом упутству ћемо размотрити трансакције и типове података ЈДБЦ.
Врсте трансакција
У ЈДБЦ ће се сваки СКЛ упит сматрати трансакцијом. Када креирамо везу базе података у ЈДБЦ, она ће се изводити у режиму аутоматског урезивања (вредност аутоматског урезивања је ТРУЕ). Након извршења СКЛ израза, аутоматски ће се извршити.
Понекад ћемо можда желети да извршимо трансакцију након извршавања још неких СКЛ израза. Тада морамо вредност аутоматског урезивања поставити на Фалсе. Тако се подаци неће извршити пре извршавања свих упита. Ако у трансакцији добијемо изузетак, можемо да вратимо () промене и учинимо их као раније. Управљање трансакцијама може се добро објаснити - коришћењем АЦИД својстава.
КИСЕЛИНА значи
- А – Атомицност -> Ако се сви упити изврше успешно, подаци ће бити евидентирани, у супротном неће.
- Ц – Конзистентност -> ДБ мора бити у доследном стању након било које трансакције.
- И– Изолација -> Трансакција је изолована од осталих трансакција.
- Д – Трајност -> Ако је трансакција извршена једном, остаће увек завезана.
У управљању трансакцијама постоје три најважније функције. Су:
како отворити .бин датотеке виндовс 10
- Урадити: Након извршавања СКЛ израза, желимо да промене постану трајне у бази података. Требали бисмо позвати методу цоммит (). Обично оно што је цоммит значи да ће трајно извршити промене у бази података. Не можемо да опозовемо / опозовемо промене. Али можемо променити податке у бази података.
- Поврат: Враћање уназад поништава промене до последњег урезивања или поменуте тачке чувања. Понекад бисмо можда желели да опозовемо промене. На пример, имамо један угнежђени упит, један део је успешно изведен, а други је изузео. У то време желимо да опозовемо промене учињене у првом делу, требало би да позовемо методу Роллбацк () да бисмо то урадили ако се догодио изузетак.
- Савепоинт: Савепоинт помаже у стварању контролне тачке у трансакцији и омогућава извршавање враћања на ту одређену тачку спремања. Свака тачка спремања која је креирана за трансакцију аутоматски ће се уништити и постати неважећа када се трансакција изврши или врати.
До сада смо видели шта је урезивање, враћање и спремиште и његове операције. Испод ћемо видети методе и како се користи у програму.
Методе управљања трансакцијама
Интерфејс за повезивање пружа 5 метода за управљање трансакцијама. Они су следећи:
# 1) метода сетАутоЦоммит ()
Подразумевано је вредност вредности АутоЦоммит ТРУЕ. Након извршења СКЛ израза, аутоматски ће се извршити. Коришћењем методе сетАутоЦоммит () можемо подесити вредност на АутоЦоммит.
# 2) Начин урезивања ()
За урезивање података користи се метода урезивања. Након извршења СКЛ израза, можемо позвати цоммит (). Завршиће промене које су извршене у СКЛ изразу.
Синтакса: цонн.цоммит ();
# 3) Метода враћања ()
Метода враћања користи се за поништавање промена док се није десило последње урезивање. Ако се суочимо са било којим проблемом или изузетком у току извршавања СКЛ израза, можемо вратити трансакцију.
Синтакса: цонн.роллбацк ();
# 4) Метода сетСавепоинт ()
Савепоинт вам даје додатну контролу над трансакцијом. Када у трансакцији поставите тачку спремања (група СКЛ израза), можете користити методу враћања () да поништите све промене до тачке спремања или након тачке спремања (). метода сетСавепоинт () користи се за креирање нове тачке спремања.
# 5) Метода релеасеСавепоинт ()
Користи се за брисање креиране тачке спремања.
У доњем програму ћете сазнати више о овим методама и научићете како се користи у Јава програму.
У овом упутству сви програми су написани на Јави. Користили смо верзију Јава 8 и Орацле ДБ.
>> Кликните овде да бисте преузели Орацле софтвер.
>> Кликните овде за преузимање Јава верзије 8.
Има корак-по-корак процеса инсталације Јаве.
Програм примера трансакције
package com.STH.JDBC; import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Savepoint; import java.sql.Statement; public class Transaction_Management { public static void main(String() args) throws ClassNotFoundException { // TODO Auto-generated method stub //Select Query to get the Data from employee_details table String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002'; Boolean autoCommit; String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002'; //Update query to set the email id for the employee whose empNUM is 1001 Class.forName('oracle.jdbc.driver.OracleDriver'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); ResultSet rs1 =null; //Checking whether the SELECT query is executed successfully or not rs1 = statemnt1.executeQuery(QUERY); //Executed the SELECT Query System.out.println('Getting the data from employee_details table'); displayData(rs1); //Set the autoCommit value of the connection to FALSE System.out.println('Setting the AutoCommit value as FALSE'); conn.setAutoCommit(false); autoCommit = conn.getAutoCommit(); System.out.println('AutoCommit value of the Connection = '+ autoCommit); //Creating Statement to execute the update query statemnt1 = conn.createStatement(); System.out.println('Executing Update query to update salary of EMPNUM = 2001'); System.out.println('Update Query is ' + update_query); int return_rows = statemnt1.executeUpdate(update_query); System.out.println('Updated the data but didn't commit'); //Getting data after Updation Connection conn1 = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE'); System.out.println('Opening new connection'); System.out.println('EMPNUM = 2001 data'); Statement statement2 = conn1.createStatement(); ResultSet rs; rs = statement2.executeQuery(QUERY); displayData(rs); System.out.println('Commit has been done'); conn.commit(); Savepoint s1 = conn.setSavepoint(); System.out.println('SavePoint has been created'); System.out.println('Displaying data of EMPNUM = 2001'); System.out.println('Using The Second Connection'); rs = statement2.executeQuery(QUERY); displayData(rs); rs = statemnt1.executeQuery(QUERY); //Rollback the transaction System.out.println('Data of EMPNUM = 2002'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Updating the salary of EMPNUM = 2002'); System.out.println('Update Query is ' + update_query1); statemnt1.executeUpdate(update_query1); System.out.println('Data of EMPNUM = 2002 but didn't commit'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); System.out.println('Rollback is done... so updated data won't be reflected'); conn.rollback(s1); System.out.println('Data of EMPNUM = 2002 after Rollback till the last savepoint'); rs1 = statemnt1.executeQuery(QUERY1); displayData(rs1); } catch (SQLException e) { e.printStackTrace(); } } public static void displayData(ResultSet rs1) throws SQLException { 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'); System.out.println(empNum + ',' +lastName+ ',' +firstName+ ',' +email +','+deptNum +',' +salary); } } }
Излаз:
Објашњење:
Оно што смо урадили у горе наведеном програму за управљање трансакцијама је ажурирање вредности датог запосленог у табели ЕМПЛОИЕЕ_ДЕТАИЛС и предавање података. Ако се догодила грешка или изузетак, извршили смо операцију враћања (). Сада ћемо видети потпуно објашњење програма.
# 1) Креирао је 2 Изаберите упит за 2 запослена на основу њиховог ЕМПИД-а
Испод су 2 упита за одабир.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#два) Направио је два упита за ажурирање за 2 запослена на основу њиховог ЕМПИД-а
Два ажурирана упита:
String update_query = 'update employee_details set salary = 41000 where empNum = 2001'; String update_query1 = 'update employee_details set salary = 42000 where empNum = 2002';
# 3) Отворите везу, извршите упит за одабир и прикажите податке ЕМПНУМ = 2001.
# 4) Помоћу методе сетАутоЦоммит () подесите вредност аутоЦоммит на фалсе.
# 5) Извршио је упит за ажурирање ЕМПНУМ = 2001 и створио другу везу за исту базу података и изабрао вредност ЕМПНУМ = 2001.
# 6) Добијени подаци запосленог чији ЕМПНУМ = 2001 нису ажурирани подаци. Јер нисмо извршили операцију урезивања (). Ако сте користили исту везу где сте је користили за ажурирање, она би вам показала ажуриране податке. Сада су предати подаци. Подаци су приказани у табели.
# 7) Направио једну тачку спремања након операције урезивања.
# 8) Коришћење упита за одабир за приказ података ЕМПНУМ = 2002. Промењена је зарада тог запосленог помоћу упита за ажурирање. Након тога приказани су подаци ЕМПНУМ = 2002, користећи исту везу. Требало би да прикаже ажуриране податке.
# 9) Извршено враћање до последње тачке чувања методом враћања. Сада, када смо приказали податке тог запосленог који користи исту везу, он има старе податке, јер враћање поништава промене до последње тачке спремања ако споменемо тачку спремања остало до последњег урезивања.
# 10) Направили смо једну методу која ће приказати податке јер овде приказујемо податке много пута.
Типови података ЈДБЦ
Базе података имају СКЛ типове података, а Јава има Јава типове података. Треба да постоји механизам за читање и писање података између Јава апликације и базе података. Различите базе података подржавају СКЛ типове, али са неким варијацијама у имену.
На пример, већина база података подржава велике бинарне вредности, Орацле је назива ЛОНГ РАВ, Сибасе назива ИМАГЕ, Информик назива БИТЕ, а ДБ2 као ЛОНГ ВАРЦХАР ФОР БИТ ДАТА.
Док пишемо ЈДБЦ програм, не треба да бринемо о СКЛ типовима података које користи циљана база података. ЈДБЦ има скуп генеричких идентификатора СКЛ типа у класи јава.скл.Типес. Ови типови су дизајнирани да подрже већину генеричких СКЛ типова података. Током писања ЈДБЦ програма, користићемо само ЈДБЦ типове података.
ЈДБЦ управљачки програм претвара типове података Јава у типове података базе података напред-назад. Можете да користите методу јава.скл.ДатабасеМетаДата.гетТипеИнфо да бисте проверили које СКЛ типове заправо подржава дата база, а затим написали програм. ЈДБЦ користи подразумевано мапирање за већину типова података.
На пример, Јава низ ће се претворити у СКЛ ВАРЦХАР тип.
Видећемо како се врши мапирање у методи сетКСКСКС, гетКСКСКС и упдатеКСКСКС припремљеногСтатемент или ЦаллаблеСтатемент или РесултСет интерфејса у следећој табели:
СКЛ ТИП | ТИП ЈАВА / ЈДБЦ | сетКСКСКС | гетКСКСКС | упдатеКСКСКС |
---|---|---|---|---|
ИНТЕГЕР | инт | сетИнт | затамњена | упдатеИнт |
ЦХАР | јава.ланг.Стринг | сетСтринг | гетСтринг | упдатеСтринг |
ВАРЦХАР | јава.ланг.Стринг | сетСтринг | гетСтринг | упдатеСтринг |
ЛОНГВАРЦХАР | јава.ланг.Стринг | сетСтринг | гетСтринг | упдатеСтринг |
МАЛО | боолеан | сетБоолеан | гетБоолеан | упдатеБоолеан |
НУМЕРИЦ | јава.матх.БигДецимал | сетБигДецимал | гетБигДецимал | УпдатеБигДецимал |
СМАЛЛИНТ | кратак | сетСхорт | гетСхорт | упдатеСхорт |
БИГИНТ | дуго | сетЛонг | гетЛонг | упдатеЛонг |
ПРАВИ | пловак | сетФлоат | гетФлоат | упдатеФлоат |
ПЛОВАК | пловак | сетФлоат | гетФлоат | упдатеФлоат |
ДОУБЛЕ | двоструко | сетДоубле | гетДоубле | упдатеДоубле |
БИНАРИ | бајт () | сетБитес | гетБитес | упдатеБитес |
ДАТУМ | јава.скл.Дате | подесити датум | гетДате | ажурирати датум |
ВРЕМЕ | јава.скл.Тиме | одредити време | гетТиме | упдатеТиме |
ТИМЕСТАМП | јава.скл.Тиместамп | сетТиместамп | гетТиместамп | упдатеТимеСтамп |
ЦЛОБ | јава.скл.Цлоб | сетЦлоб | гетЦлоб | упдатеЦлоб |
БЛОБ | јава.скл.Блоб | сетБлоб | гетБлоб | упдатеБлоб |
АРРАИ | Арраи | сетАрраи | гетАрраи | упдатеАрраи |
КСМЛ | Ксмл | сетСКЛКСМЛ | гетСКЛКСМЛ | упдатеСКЛКСМЛ |
Структурирани тип | Предмет | сетОбјецт | гетОбјецт | упдатеОбјецт |
У претходним водичима поставили смо методКСКСКС, гетКСКСКС и упдатеКСКСКС за основне типове података. Можете се позвати на то.
Овде смо објаснили типове цлоб и блоб у следећем примеру.
Пример БЛОБ програма
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.sql.Blob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Blob_Example { @SuppressWarnings('resource') public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)'; //Select Query to get the Data from employee_details table //Update query to set the email id for the employee whose empNUM is 1001 Class.forName('oracle.jdbc.driver.OracleDriver'); System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing the Create Query statemnt1.execute(QUERY); System.out.println('Table has been created for BLOB type'); System.out.println('Inserting data into Blob_Sample_Example table'); String insert_query = ' insert into Blob_Sample_Example values(?,?)'; //Passing the values for preparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'Sotware Testing Help'); //Mention Image path to store the image in DB FileInputStream inputStream = new FileInputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic.png'); pstmnt.setBlob(2, inputStream); //Executing the preparedStatement to insert the data pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Blob_Sample_Example'); while(rs.next()) { //Getting Picture Name System.out.println('Picture Name:' + rs.getString(1)); Blob blob1 = rs.getBlob(2); //using blob retrieving the Image byte byteArray() = blob1.getBytes(1,(int)blob1.length()); FileOutputStream outPutStream = new FileOutputStream('D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); outPutStream.write(byteArray); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\Software Testing Pic output.png'); } } catch (SQLException e) { e.printStackTrace(); } } }
Излаз:
Датотека је успешно сачувана на датој путањи.
Објашњење:
У горњем програму смо прво направили / сачували једну слику у фасцикли 'Д: \ Бхакииа \ Бхакииа \ ЈДБЦ' . Ова локација је само на пример. Можете креирати властити пут до датотеке у вашем систему. Назив датотеке је слика за тестирање софтвера. Затим смо креирали један Јава програм за чување те слике у ДБ табели и преузимање слике из табеле и чување у локалном систему.
До сада смо разговарали о прегледу задатка. Сад ћемо видети како смо то постигли у програму.
# 1) Направите једну табелу у ДБ за чување слике.
Синтакса:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
У горњем упиту имамо 2 колоне.
- ПицНаме - варцхар2 -> Користи се за чување имена слике
- слика - БЛОБ -> Користи се за чување слике у табели.
БЛОБ тип података користи се за чување слике / слике у ДБ табели.
#два) Веза и израз су створени и позвани су методом извршења за извршавање ЦРЕАТЕ упита.
statemnt1.execute(QUERY);
# 3) Даље, креирали смо упит за уметање и извршили га помоћу ПрепаредСтатемент.
Синтакса ПрепаредСтатемент:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Коришћењем сетСтринг () - поставите име слике.
# 5) Да бисте поставили слику, користите класу ФилеИнпутСтреам да бисте проследили локацију слике.
Синтакса:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Затим, помоћу методе сетБлоб (), можемо поставити слику у објекту ПрепаредСтатемент. Након тога, позван је метод извршења ПрепаредСтатемент. То ће унети дате податке у табелу.
Након извршавања упита за уметање, помоћу РесултСет објекта дохваћамо податке из табеле (помоћу Селецт Куери).
# 6) Коришћењем методе гетСтринг можемо добити вредност колоне ПицНаме.
# 7) Да бисте добили слику, следите кораке у наставку:
- Направите Блоб објекат и доделите повратне вредности методе гетБлоб објекта РесултСет.
- Синтакса за то је: Блоб блоб1 = рс.гетБлоб ();
- Направите објект бајт поља и добијте вредност објекта Блоб као бајтове.
- Направите објекат ФилеОутпутСтреам објекат и пренесите целу путању да бисте слику сачували на тој путањи. Позовите методу врите () објекта ФилеОутпутСтреам – који ће сачувати слику.
- Након тога програм је успешно изведен.
# 8) Идите на локацију излазне слике и проверите да ли су улаз и излаз исти.
Пример програма ЦЛОБ
package com.STH.JDBC; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.io.Reader; import java.sql.Blob; import java.sql.Clob; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class Clob_Example { public static void main(String() args) throws ClassNotFoundException, IOException { // TODO Auto-generated method stub String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)'; //Create Query to create new table for CLOB example Class.forName('oracle.jdbc.driver.OracleDriver'); //Creating Connection System.out.println('Establishing Connection'); try(Connection conn = DriverManager.getConnection('jdbc:oracle:thin:system/pass123@localhost:1521:XE')) { Statement statemnt1 = conn.createStatement(); //Executing create query statemnt1.execute(QUERY); System.out.println('Table has been created for CLOB type'); System.out.println('Inserting data into Clob_Sample_Example table'); //Insert Query String insert_query = ' insert into Clob_Sample_Example values(?,?)'; //Passing Parameters for PreparedStatement PreparedStatement pstmnt = conn.prepareStatement(insert_query); pstmnt.setString(1, 'File1'); FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt'); pstmnt.setClob(2, fileRead); //Executing the PreparedStatement pstmnt.execute(); System.out.println('Retrieving data'); ResultSet rs = statemnt1.executeQuery('select * from Clob_Sample_Example'); while(rs.next()) { System.out.println('File Name:' + rs.getString(1)); //Getting file data Clob clob1 = rs.getClob(2); Reader r = clob1.getCharacterStream(); //Using Reader - read the data and Writer - Write the data in file in the given location FileWriter fileWrite = new FileWriter('D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); int i; while((i=r.read())!=-1) fileWrite.write(i); fileWrite.close(); System.out.println(' Go to the following path: D:\Bhakiya\Bhakiya\JDBC\file1 output.txt'); } } catch (SQLException e) { e.printStackTrace(); } } }
Излаз:
Улазни документ:
Датотека је успешно сачувана на датој путањи.
Излазни фајл:
Објашњење:
У горњем програму смо прво направили / сачували једну текстуалну датотеку „филе1.ткт“ у фасцикли „Д: \ Бхакииа \ Бхакииа \ ЈДБЦ“. Ова локација је само на пример. Можете креирати властити пут до датотеке у вашем систему. Затим смо креирали један Јава програм за чување те датотеке у ДБ табели и преузимање те датотеке из табеле и чување у локалном систему.
До сада смо разговарали о прегледу задатка. Сад ћемо видети како смо то постигли у програму.
# 1) Направите једну табелу у ДБ за чување слике.
Испод је синтакса упита ЦРЕАТЕ ТАБЛЕ:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
У горњем упиту имамо 2 колоне.
- Име датотеке - варцхар2 -> Користи се за чување имена слике.
- СтореФиле - ЦЛОБ -> Користи се за чување датотеке у табели.
ЦЛОБ тип података користи се за чување типа знакова бинарних података у ДБ табели
#два) Веза и израз су створени и позвани су методом извршења за извршавање ЦРЕАТЕ упита.
statemnt1.execute(QUERY);
# 3) Даље, креирали смо упит за уметање и извршили га помоћу ПрепаредСтатемент.
Синтакса ПрепаредСтатемент:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Коришћењем сетСтринг () - подесите име ФилеНаме.
# 5) Да бисте поставили / сачували датотеку, користите класу ФилеРеадер да бисте датотеку проследили локацији за попуњавање.
Синтакса:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Затим помоћу методе сетЦлоб () можемо поставити датотеку у објекту ПрепаредСтатемент. Након тога је позван метод извршења ПрепаредСтатемент. То ће унети дате податке у табелу.
Након извршавања упита за уметање, помоћу РесултСет објекта дохваћамо податке из табеле (помоћу избора упита).
Изаберите упит:
'select * from Clob_Sample_Example'
# 6) Коришћењем методе гетСтринг можемо добити вредност колоне ФилеНаме.
# 7) Да бисте добили датотеку, пратили смо следеће кораке:
- Направите објект Цлоб и доделите повратне вредности методе гетЦлоб објекта РесултСет.
- Синтакса за то је: Цлоб цлоб1 = рс.гетЦлоб ();
- Направите Реадер објекат и добићете вредност Цлоб објекта као Цхарацтер.
- Направите објекат ФилеВритер објекат и пренесите целу путању за чување датотеке у тој путањи. Позовите методу врите () објекта ФилеВрите - који ће записати податке у датотеку на локацији.
- Након тога програм је успешно изведен.
# 8) Идите на локацију излазне датотеке и проверите да ли су улазне и излазне датотеке исте.
Тачке које треба запамтити:
- АЦИД Пропертиес објашњава управљање трансакцијама у бази података.
- Порезивање (), враћање () и тачка спремања најважније су операције у управљању трансакцијама.
- Урезивање ће трајно извршити промјене у ДБ-у, враћање ће поништити промјене до посљедњег урезивања или споменуте точке спремања, а ставка спремања помаже у стварању контролне точке.
- База података одржава СКЛ типове података, а Јава одржава Јава типове података. За обраду ове конверзије користи се ЈДБЦ управљачки програм.
- ЈДБЦ управљачки програм сам има неку врсту СКЛ идентификатора, тако да програмер не треба да брине о типовима података.
Често постављана питања
П # 1) Шта је ЈДБЦ тип података?
Одговор: Јава има своје типове података, а база података има своје типове података. ЈДБЦ управљачки програм претвара Јава тип података у одговарајући СКЛ тип података који ће прихватити база података. РесултСет објекти такође пружају методе сетКСКСКС () и гетКСКСКС () методе доступне за одговарајуће типове података.
П # 2) Који је тип података за датум у Јави?
Одговор: Датум у Јави није само тип података већ и класа. Датум у Јави садржи датум, време, годину, назив дана, дан у недељи и временску зону. Класа датума има одговарајуће методе за преузимање релевантних података.
П # 3) Која је разлика између јава.утил.Дате и јава.скл.Дате?
Одговор: Главна разлика је у томе што јава.утил.Дате такође садржи податке о датуму и времену. Али јава.скл.Дате има информације само о датуму. То је главна разлика коју не можемо мапирати јава.утил.Дате директно са јава.скл.Дате.
П # 4) Имамо ли класу у Јави која представља тип ВРЕМЕНА и ТИМЕСТАМП-а за СКЛ?
Одговор: Да, имамо класу за тип ТИМЕ и ТИМЕСТАМП за СКЛ. класа јава.скл.Тиме представља информације везане за ВРЕМЕ. класа јава.скл.тиместамп представља информације везане за ТИМЕСТАМП.
П # 5) Како започети трансакцију у ЈДБЦ?
Одговор: ЈДБЦ веза започиње са омогућеним режимом аутоматског урезивања, где се сваки СКЛ израз сматра трансакцијом. Не постоји одређени поступак за покретање трансакције у ЈДБЦ. Када креирате везу и почнете да извршавате СКЛ израз, ту је започета трансакција.
П # 6) Шта је метода цоммит () у Јави?
Одговор: Начин урезивања () у Јави се користи за спремање промјена направљених од посљедњег урезивања (). Начин урезивања () доступан је у интерфејсу за повезивање. Користећи објекат везе, можемо позвати цоммит ().
П # 7) Шта је метода враћања у Јави?
Одговор: Након последњег урезивања (), ако су се појавили неки проблеми, можемо позвати методу враћања () да вратимо све извршене промене до последњег начина урезивања.роллбацк () који је доступан у интерфејсу везе. Користећи објекат везе, можемо позвати методу враћања ().
Закључак
Овде смо покрили типове података у Јави и ДБ-у и како управља ЈДБЦ управљачким програмом. Разговарали смо о својствима киселине. То је најважније за банкарско подручје. То ће вам бити од велике помоћи у каријери. У одељку Управљање трансакцијама разговарали смо о методама урезивања и враћања, као што су цоммит (), роллбацк (), сетАутоЦоммит (), сетСавепоинт () и релеасеСавепоинт ().
Препоручено читање
- Јава ЈДБЦ лекција: Шта је ЈДБЦ (повезивање Јава базе података)
- Водич за Јава ЈДБЦ повезивање са примером програмирања
- ЈДБЦ ДриверМанагер, ЈДБЦ ПрепаредСтатемент анд Статемент
- ЈДБЦ РесултСет: Како користити Јава РесултСет за преузимање података
- Јава типови података, петље, низови, прекидачи и тврдње
- Метода дужине Јава низа () Метода са примерима
- Како се користи Јава тоСтринг метод?
- Тестирање базе података селена (помоћу ВебДривер-а и ЈДБЦ АПИ-ја)