java jdbc transaction management with example
Този урок обяснява типовете транзакции JDBC, типовете данни, методите за управление на транзакции и как да ги използвате в Java програма:
В JDBC ResultSet урок на JDBC серия уроци , научихме се да използваме JDBC ResultSet за извличане на данни.
В този урок ще обсъдим типовете транзакции в JDBC. Видяхме кратко въведение в типовете транзакции в предишните ни уроци. Тук ще видим подробно. Също така ще разгледаме какви са типовете данни в JDBC и как да ги използваме в програмата Java.
Базата данни ще има различни типове данни, а Java ще има различни типове данни. JDBC ще управлява тази диференциация. Нека се приготвим да опознаем важната тема в JDBC.
Какво ще научите:
JDBC Управление на транзакции
Последователността от действия (SQL изрази) се третира като единична единица, която е известна като транзакция. Управлението на транзакциите е важно за RDBMS-ориентираните приложения, за да поддържат целостта и последователността на данните.
Докато извършваме транзакцията, ще използваме методите getXXX и setXXX за извличане и задаване на данните в обекта ResultSet. XXX представлява типовете данни на колоните. Ще обсъдим транзакциите и типовете данни на JDBC в този урок.
Видове транзакции
В JDBC всяка SQL заявка ще се счита за транзакция. Когато създаваме връзка с база данни в JDBC, тя ще работи в режим на автоматично фиксиране (стойността на автоматичното фиксиране е TRUE). След изпълнението на SQL израза, той ще бъде ангажиран автоматично.
Понякога може да искаме да извършим транзакцията след изпълнението на още някои SQL изрази. По това време трябва да зададем стойността на автоматичното фиксиране на False. Така че данните няма да бъдат ангажирани преди изпълнението на всички заявки. Ако получим изключение в транзакцията, можем да върнем промените () и да го направим както преди. Управлението на транзакциите може да бъде обяснено добре - с помощта на ACID свойства.
КИСЕЛИНА означава
- A – Атомност -> Ако всички заявки бъдат изпълнени успешно, данните ще бъдат ангажирани, в противен случай няма.
- C – Последователност -> DB трябва да бъде в постоянно състояние след всяка транзакция.
- I– Изолация -> Транзакцията е изолирана от други транзакции.
- D – Трайност -> Ако транзакцията е извършена веднъж, тя ще остане винаги ангажирана.
Има три най-важни функции в управлението на транзакции. Те са:
най-добрият регистър за почистване на Windows 7 64 бита
- Ангажиране: След изпълнението на SQL изразите искаме да направим промените постоянни в базата данни. Трябва да извикаме метода commit (). Обикновено това, което е commit, означава, че ще прави промените за постоянно в базата данни. Не можем да отменим / отменим промените. Но можем да променим данните в базата данни.
- Отмяна: Връщането отменя промените до последното фиксиране или спомената точка за запис. Понякога може да искаме да отменим промените. Например, имаме една вложена заявка, едната част е изпълнена успешно, а другата е създала някакво изключение. По това време искаме да отменим промените, направени от първата част, трябва да извикаме метода Rollback (), за да направим това, ако е възникнало изключение.
- Savepoint: Savepoint помага да се създаде контролна точка в транзакция и позволява да се извърши връщане към тази конкретна точка за запис. Всяка точка за запис, създадена за транзакция, ще бъде автоматично унищожена и ще стане невалидна, след като транзакцията бъде ангажирана или върната обратно.
Досега видяхме какво е фиксиране, връщане назад и точка на запис и нейните операции. По-долу ще видим методите за това и как да го използваме в програмата.
Методи за управление на транзакции
Интерфейсът за връзка осигурява 5 метода за управление на транзакции. Те са както следва:
# 1) Метод setAutoCommit ()
По подразбиране стойността на стойността на AutoCommit е TRUE. След изпълнението на SQL израза, той ще бъде ангажиран автоматично. С помощта на метода setAutoCommit () можем да зададем стойността на AutoCommit.
# 2) Метод commit ()
Методът на фиксиране се използва за фиксиране на данните. След изпълнението на SQL израза можем да извикаме commit (). Той ще ангажира промените, направени от SQL израза.
Синтаксис: conn.commit ();
# 3) Метод на откат ()
Методът на връщане назад се използва за отмяна на промените до последното фиксиране. Ако се сблъскаме с някакъв проблем или изключение в потока на изпълнение на SQL изразите, можем да върнем транзакцията.
Синтаксис: conn.rollback ();
# 4) Метод setSavepoint ()
Savepoint ви дава допълнителен контрол върху транзакцията. Когато зададете точка на запис в транзакцията (група SQL изрази), можете да използвате метода rollback (), за да отмените всички промени до точката на запис или след точката на запис (). Методът setSavepoint () се използва за създаване на нова точка за запис.
# 5) releaseSavepoint () Метод
Използва се за изтриване на създадената точка за запис.
В програмата по-долу ще научите повече за тези методи и ще научите как да го използвате в програмата Java.
В този урок всички програми са написани на Java. Използвахме версия Java 8 и Oracle DB.
>> Щракнете тук за да изтеглите софтуера Oracle.
>> Щракнете тук за да изтеглите Java версия 8.
Той има стъпка по стъпка процес на инсталиране на Java.
Примерна програма за транзакции
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); } } }
Изход:
Обяснение:
Това, което направихме в горната програма за управление на транзакции, е да актуализираме стойностите на дадения служител в таблицата EMPLOYEE_DETAILS и да ангажираме данните. Ако е възникнала някаква грешка или изключение, тогава сме извършили операцията за връщане (). Сега ще видим пълното обяснение на програмата.
# 1) Създадена 2 Изберете заявка за 2 служители въз основа на техния EMPID
По-долу са 2 заявки за избор.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
# две) Създаде две заявки за актуализация за 2 служители въз основа на техния EMPID
Две актуализирани заявки:
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) Отворете Connection, изпълнете заявката за избор и изведете данните от EMPNUM = 2001.
# 4) Използвайки метода setAutoCommit (), задайте стойността на autoCommit на false.
# 5) Изпълни заявката за актуализация на EMPNUM = 2001 и създаде друга връзка за същата база данни и избра стойността на EMPNUM = 2001.
# 6) Резултантните данни на служителя, чийто EMPNUM = 2001 не са актуализираните данни. Тъй като не сме извършили операцията commit (). Ако сте използвали същата връзка, където сте я използвали за актуализация, тя би ви показала актуализираните данни. Сега ангажира данните. Данните са отразени в таблицата.
# 7) Създаде една точка на запис след операцията за фиксиране.
# 8) Използване на заявката за избор за показване на данни за EMPNUM = 2002. Променена е заплатата на този служител с помощта на заявка за актуализация. След това се показват данните на EMPNUM = 2002, като се използва същата връзка. Той трябва да показва актуализираните данни.
# 9) Извършено е връщането до последната точка на запис, като се използва методът на връщане. Сега, когато сме показали данните на този служител, използвайки същата връзка, той има старите данни, тъй като връщането назад отменя промените до последната точка за запис, ако споменем точка за запазване друго до последното фиксиране.
# 10) Създадохме един метод, който ще показва данните, защото тук показваме данни много пъти.
Типове данни на JDBC
Базите данни имат типове данни на SQL, а Java има типове данни на Java. Трябва да има механизъм за четене и запис на данни между Java приложение и база данни. Различните бази данни поддържат типове SQL, но с някои вариации в името.
Например, повечето бази данни поддържат големи двоични стойности, Oracle го нарича LONG RAW, Sybase го нарича IMAGE, Informix го нарича BYTE, а DB2 го нарича LONG VARCHAR FOR BIT DATA.
Докато пишем програмата JDBC, не е нужно да се притесняваме за SQL типовете данни, използвани от целевата база данни. JDBC има набор от общи идентификатори на тип SQL в класа java.sql.Types. Тези типове са предназначени да поддържат повечето от общите типове данни на SQL. Докато пишем програма JDBC, ние ще използваме само типове данни JDBC.
JDBC драйверът ще преобразува типовете данни Java в типове данни на базата данни напред-назад. Можете да използвате метода java.sql.DatabaseMetaData.getTypeInfo, за да проверите кои типове SQL всъщност се поддържат от дадена база данни и след това да напишете програма. JDBC използва картографиране по подразбиране за повечето типове данни.
Например, низът на Java ще бъде преобразуван в тип SQL VARCHAR.
Ще видим как се извършва картографирането в метода setXXX, getXXX и updateXXX на интерфейсите подготвениStatement или CallableStatement или ResultSet в следната таблица:
SQL ТИП | ТИП JAVA / JDBC | setXXX | getXXX | актуализацияXXX |
---|---|---|---|---|
ИНТЕГЪР | инт | setInt | тонирана | updateInt |
ЧАР | java.lang.String | setString | getString | updateString |
ВАРЧАР | java.lang.String | setString | getString | updateString |
LONGVARCHAR | java.lang.String | setString | getString | updateString |
БИТ | булев | setBoolean | getBoolean | updateBoolean |
ЧИСЛЕНО | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
СМАЛИНТ | къс | setShort | getShort | updateShort |
ГОЛЯМ | дълго | setLong | getLong | updateLong |
ИСТИНСКИ | плувка | setFloat | getFloat | updateFloat |
ПЛАВАТ | плувка | setFloat | getFloat | updateFloat |
ДВОЙНА | двойно | setDouble | getDouble | updateDouble |
ДВОЙНИ | байт () | setBytes | getBytes | updateBytes |
ДАТА | java.sql.Date | setDate | getDate | updateDate |
ВРЕМЕ | java.sql.Time | setTime | getTime | updateTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
Масив | Масив | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Структуриран тип | Обект | setObject | getObject | updateObject |
В предишните ни уроци сме задали методXXX, getXXX и updateXXX за основни типове данни. Можете да се позовете на това.
Тук обяснихме типовете clob и blob в следващия пример.
Примерна програма BLOB
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(); } } }
Изход:
Файлът е запазен успешно в дадения път.
Обяснение:
В горната програма това, което направихме, е Първо създадохме / запазихме едно изображение в папката 'D: \ Bhakiya \ Bhakiya \ JDBC' . Това местоположение е само за пример. Можете да създадете свой собствен файлов път в системата си. Името на файла е софтуер за тестване на снимка. След това създадохме една Java програма за съхраняване на това изображение в DB таблицата и извличане на изображението от таблицата и съхраняване в локалната система.
Досега обсъждахме общия преглед на задачата. Сега ще видим как сме го постигнали в програмата.
# 1) Създайте една таблица в DB, за да съхраните изображението.
Синтаксис:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
В горната заявка имаме 2 колони.
- PicName - varchar2 -> Използва се за съхраняване на името на картината
- picture - BLOB -> Използва се за съхраняване на картината в таблица.
BLOB типът данни се използва за съхраняване на Картината / изображението в DB таблицата.
# две) Връзката и операторът са създадени и се наричат метод за изпълнение за изпълнение на CREATE заявката.
statemnt1.execute(QUERY);
# 3) След това създадохме заявката за вмъкване и я изпълнихме с помощта на PreparedStatement.
Синтаксис на PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Използване на setString () - задайте името на картината.
# 5) За да зададете Картината, използвайте класа FileInputStream, за да предадете местоположението на картината.
Синтаксис:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
След това, използвайки метода setBlob (), можем да зададем картината в обекта PreparedStatement. След това се извиква методът за изпълнение на PreparedStatement. Това ще вмъкне дадените данни в таблицата.
След изпълнение на заявката за вмъкване, с помощта на обект ResultSet извличаме данните от таблицата (с помощта на Select Query).
# 6) Използвайки метода getString, можем да получим стойността на колоната PicName.
# 7) За да получите снимката, следвайте стъпките по-долу:
- Създайте Blob обект и задайте връщаните стойности на метода getBlob на ResultSet обект.
- Синтаксисът за това е: Blob blob1 = rs.getBlob ();
- Създайте обект на байтов масив и получете стойността на Blob обекта като байтове.
- Създайте обект FileOutputStream обект и предайте пълния път, за да съхраните картината в този път. Извикайте метода write () на обекта FileOutputStream - който ще съхранява картината.
- След това програмата е изпълнена успешно.
# 8) Отидете до местоположението на изходната картина и проверете дали входът и изходът са еднакви.
Примерна програма CLOB
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(); } } }
Изход:
Входен файл:
Файлът е запазен успешно в дадения път.
Изходния файл:
Обяснение:
В горната програма това, което направихме, е първо да създадем / запазим един текстов файл “file1.txt” в папката “D: \ Bhakiya \ Bhakiya \ JDBC”. Това местоположение е само за пример. Можете да създадете свой собствен файлов път в системата си. След това създадохме една Java програма за съхраняване на този файл в DB таблицата и извличане на този файл от таблицата и съхраняване в локалната система.
Досега обсъждахме общия преглед на задачата. Сега ще видим как сме го постигнали в програмата.
# 1) Създайте една таблица в DB, за да съхраните изображението.
По-долу е синтаксисът на заявката CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
В горната заявка имаме 2 колони.
- FileName - varchar2 -> Използва се за съхраняване на името на картината.
- StoreFile - CLOB -> Използва се за съхраняване на файла в таблица.
CLOB типът данни се използва за съхраняване на типа символи на двоични данни в DB таблицата
# две) Връзката и операторът са създадени и се наричат метод за изпълнение за изпълнение на CREATE заявката.
statemnt1.execute(QUERY);
# 3) След това създадохме заявката за вмъкване и я изпълнихме с помощта на PreparedStatement.
Синтаксис на PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Използване на setString () - задайте името на FileName.
# 5) За да зададете / съхраните файла, използвайте класа FileReader, за да предадете файла с място за запълване.
Синтаксис:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
След това, използвайки метода setClob (), можем да зададем файла в обекта PreparedStatement. След това се извиква методът за изпълнение на PreparedStatement. Това ще вмъкне дадените данни в таблицата.
След изпълнение на заявката за вмъкване, използвайки обект ResultSet, извличаме данните от таблицата (с помощта на Select Query).
Изберете заявка:
'select * from Clob_Sample_Example'
# 6) Използвайки метода getString, можем да получим стойността на колоната FileName.
# 7) За да получите файла, изпълнихме стъпките по-долу:
- Създайте обект Clob и задайте връщаните стойности на метода getClob на обекта ResultSet.
- Синтаксисът за това е: Clob clob1 = rs.getClob ();
- Създайте обект Reader и получете стойността на Clob обект като символ.
- Създайте обект FileWriter обект и предайте пълния път, за да съхраните файла в този път. Извикайте метода write () на обекта FileWrite - който ще запише данните във файла в местоположението.
- След това програмата е изпълнена успешно.
# 8) Отидете до местоположението на изходния файл и проверете дали входните и изходните файлове са еднакви.
Точки за запомняне:
- ACID Properties обяснява управлението на транзакциите в базата данни.
- Фиксиране (), връщане назад) и точка на запис са най-важните операции в управлението на транзакции.
- Commit ще направи промените за постоянно в DB, Rollback ще отмени промените до последния фиксиране или споменатата точка за запис и Savepoint помага да се създаде контролна точка.
- Базата данни поддържа типове данни на SQL, а Java поддържа типове данни на Java. JDBC драйверът се използва за обработка на това преобразуване.
- Самият JDBC драйвер има някакъв тип SQL идентификатори, така че програмистът не трябва да се тревожи за типовете данни.
често задавани въпроси
В # 1) Какъв е типът данни на JDBC?
Отговор: Java има своите типове данни, а базата данни има своите типове данни. JDBC драйверът преобразува типа данни на Java в подходящия тип данни на SQL, който ще бъде приет от базата данни. ResultSet обектите също предоставят методите setXXX () и getXXX (), налични за съответните типове данни.
В # 2) Какъв е типът данни за датата в Java?
Отговор: Датата в Java е не само тип данни, но и клас. Датата в Java съдържа датата, часа, годината, името на деня, деня от седмицата и часовата зона. Класът дата има подходящите методи за извличане на съответните данни.
В # 3) Каква е разликата между java.util.Date и java.sql.Date?
Отговор: Основната разлика е java.util.Date има информация и за дата и час. Но java.sql.Date има информация само за датата. Това е основната разлика, която не можем да картографираме java.util.Date директно с java.sql.Date.
В # 4) Имаме ли клас в Java, който да представя TIME и TIMESTAMP тип за SQL?
Отговор: Да, имаме клас за TIME и TIMESTAMP тип за SQL. java.sql.Time клас представлява информация, свързана с ВРЕМЕ. java.sql.timestamp клас представлява информация, свързана с TIMESTAMP.
В # 5) Как да стартирам транзакция в JDBC?
Отговор: JDBC връзката започва с активиран режим на автоматично фиксиране, където всеки SQL оператор се счита за транзакция. Няма конкретен процес за стартиране на транзакция в JDBC. Когато създадете връзка и започнете да изпълнявате SQL израза, там е стартирана транзакцията.
В # 6) Какво представлява методът commit () в Java?
Отговор: Методът commit () в Java се използва за запазване на промените, които са направени след последния commit (). Методът commit () е достъпен в интерфейса Connection. Използвайки обект за връзка, можем да извикаме commit ().
В # 7) Какъв е методът за връщане в Java?
Отговор: След последното фиксиране (), ако са възникнали някакви проблеми, можем да извикаме метода rollback (), за да върнем всички направени промени до последния метод commit.rollback () е достъпен в интерфейса за връзка. Използвайки обект за връзка, можем да извикаме метода rollback ().
Заключение
Тук разгледахме типовете данни в Java и DB и как се справя с JDBC драйвера. Обсъдихме свойствата на ACID. Това е най-важно за банковата сфера. Това ще бъде много полезно за вашата кариера. В раздела за управление на транзакции обсъдихме методите за фиксиране и връщане, като commit (), rollback (), setAutoCommit (), setSavepoint () и releaseSavepoint ().
Препоръчително четене
- Java JDBC урок: Какво е JDBC (Java Database Connectivity)
- Урок за свързване на Java JDBC с пример за програмиране
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Как да използвам Java ResultSet за извличане на данни
- Java DataTypes, Loops, Arrays, Switch и Assertions
- Дължина на низа на Java () Метод с примери
- Как да използвам Java toString метод?
- Тестване на база данни за селен (Използване на WebDriver и JDBC API)