java jdbc transaction management with example
Denne tutorial forklarer JDBC-transaktionstyper, datatyper, transaktionsstyringsmetoder og hvordan man bruger dem i Java-program:
I JDBC ResultSet tutorial af JDBC tutorial-serie , lærte vi at bruge JDBC ResultSet til at hente data.
I denne vejledning diskuterer vi transaktionstyperne i JDBC. Vi har set en kort introduktion til transaktionstyperne i vores tidligere tutorials. Her vil vi se på en detaljeret måde. Vi vil også dække, hvad der er datatyperne i JDBC, og hvordan man bruger det i Java-programmet.
Databasen vil have forskellige datatyper, og Java vil have forskellige datatyper. JDBC administrerer denne differentiering. Lad os gøre os klar til at kende det vigtige emne i JDBC.
Hvad du lærer:
JDBC-transaktionsstyring
Handlingssekvensen (SQL-sætninger) behandles som en enkelt enhed, der er kendt som en transaktion. Transaktionsstyring er vigtig for RDBMS-orienterede applikationer for at opretholde dataintegritet og konsistens.
Under udførelsen af transaktionen bruger vi getXXX og setXXX metoder til at hente og indstille dataene i ResultSet-objektet. XXX repræsenterer datatyperne for kolonnerne. Vi diskuterer transaktion og datatyper af JDBC i denne vejledning.
Transaktionstyper
I JDBC vil hver SQL-forespørgsel blive betragtet som en transaktion. Når vi opretter en databaseforbindelse i JDBC, kører den i auto-commit-tilstand (auto-commit-værdi er SAND). Efter udførelsen af SQL-erklæringen vil den blive begået automatisk.
Nogle gange vil vi muligvis begå transaktionen efter udførelsen af nogle flere SQL-sætninger. På det tidspunkt er vi nødt til at indstille værdien auto-commit til False. Så disse data begås ikke, før alle forespørgsler udføres. Hvis vi får en undtagelse i transaktionen, kan vi tilbageføre () ændringer og gøre det som før. Transaktionsstyring kan forklares godt ved hjælp af ACID-egenskaber.
SUR betyder
- A – Atomicitet -> Hvis alle forespørgsler udføres med succes, vil data blive begået, ellers ikke.
- C – Konsistens -> DB skal være i en ensartet tilstand efter enhver transaktion.
- I– Isolation -> Transaktion er isoleret fra andre transaktioner.
- D – holdbarhed -> Hvis transaktionen begås en gang, forbliver den altid begået.
Der er tre vigtigste funktioner i Transaction Management. De er:
hvad er den bedste app til download af youtube-videoer
- Begå: Efter udførelsen af SQL-udsagnene ønsker vi at gøre ændringerne permanente i databasen. Vi skal kalde commit () -metoden. Normalt betyder hvad der er forpligtet, at det vil foretage ændringer permanent i databasen. Vi kan ikke fortryde / tilbagekalde ændringerne. Men vi kan ændre dataene i databasen.
- Tilbageførsel: Tilbagekaldelse fortryder ændringerne indtil den sidste forpligtelse eller den nævnte savepoint. Nogle gange vil vi måske fortryde ændringerne. For eksempel, Vi har en indlejret forespørgsel, den ene del er blevet udført med succes, og den anden har givet en undtagelse. På det tidspunkt vil vi fortryde de ændringer, der er foretaget af den første del, vi skal kalde Rollback () -metoden for at gøre det, hvis der er opstået en undtagelse.
- Savepoint: Savepoint hjælper med at oprette kontrolpunkt i en transaktion, og det giver mulighed for at udføre en tilbageførsel til det pågældende savepoint. Ethvert gemepunkt, der er oprettet til en transaktion, destrueres automatisk og bliver ugyldigt, når transaktionen er begået eller rullet tilbage.
Indtil nu har vi set, hvad der er commit, tilbageførsel og savepoint og dets operationer. Nedenfor ser vi metoderne til det, og hvordan man bruger det i programmet.
Metoder til transaktionsstyring
Forbindelsesgrænsefladen giver 5 metoder til transaktionsstyring. De er som følger:
# 1) setAutoCommit () metode
Som standard er værdien for AutoCommit-værdi SAND. Efter udførelsen af SQL-erklæringen vil den blive begået automatisk. Ved at bruge metoden setAutoCommit () kan vi indstille værdien til AutoCommit.
# 2) Forpligtelse () Metode
Forpligtelsesmetoden bruges til at begå dataene. Efter udførelsen af SQL-sætningen kan vi kalde commit (). Det vil begå de ændringer, der foretages af SQL-sætningen.
Syntaks: conn.commit ();
# 3) Metode til tilbageførsel ()
Tilbageførselsmetoden bruges til at fortryde ændringerne, indtil den sidste forpligtelse er sket. Hvis vi står over for et problem eller en undtagelse i udførelsen af SQL-sætningerne, kan vi muligvis tilbageføre transaktionen.
Syntaks: conn.rollback ();
# 4) setSavepoint () metode
Savepoint giver dig yderligere kontrol over transaktionen. Når du indstiller et gemepunkt i transaktionen (en gruppe af SQL-udsagn), kan du bruge tilbagekaldelsesmetoden () til at fortryde alle ændringer indtil gemelsespunktet eller efter gemelsespunktet (). setSavepoint () -metoden bruges til at oprette et nyt savepoint.
# 5) releaseSavepoint () Metode
Det bruges til at slette det oprettede savepoint.
I nedenstående program får du mere at vide om disse metoder og lærer også, hvordan du bruger det i Java-programmet.
I denne vejledning er alle programmer skrevet i Java. Vi har brugt Java 8-versionen og Oracle DB.
>> Klik her for at downloade Oracle-softwaren.
>> Klik her for at downloade Java version 8.
Det har den trinvise Java-installationsproces.
Transaktionseksempelprogram
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); } } }
Produktion:
Forklaring:
Hvad vi har gjort i ovenstående transaktionsstyringsprogram er at opdatere værdierne for den givne medarbejder i tabellen EMPLOYEE_DETAILS og begå dataene. Hvis der er opstået en fejl eller undtagelse, har vi foretaget tilbagekobling (). Nu skal vi se den fulde forklaring på programmet.
# 1) Oprettet 2 Vælg forespørgsel til 2 medarbejdere baseret på deres EMPID
Nedenfor er de 2 valgte forespørgsler.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#to) Oprettet to opdateringsforespørgsler til 2 medarbejdere baseret på deres EMPID
To opdaterede forespørgsler:
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) Åbn Forbindelse, udfør valgforespørgslen og viste dataene for EMPNUM = 2001.
# 4) Brug metoden setAutoCommit () til at indstille værdien for autoCommit til false.
# 5) Udførte opdateringsforespørgslen af EMPNUM = 2001 og oprettede en anden forbindelse til den samme database og valgte værdien af EMPNUM = 2001.
# 6) De resulterende data for medarbejderen, hvis EMPNUM = 2001 ikke er de opdaterede data. Fordi vi ikke har udført handlingen commit (). Hvis du har brugt den samme forbindelse, som du har brugt den til at opdatere, ville den have vist dig de opdaterede data. Forpligtede nu dataene. Dataene er afspejlet i tabellen.
# 7) Oprettet et savepoint efter kommitteringsoperationen.
# 8) Brug af forespørgslen til at vise data for EMPNUM = 2002. Ændrede lønnen for den ansatte med en opdateringsforespørgsel. Derefter viste dataene fra EMPNUM = 2002 ved hjælp af den samme forbindelse. Det skal vise de opdaterede data.
# 9) Udført tilbageførsel til det sidste gemepunkt ved hjælp af tilbageføringsmetoden. Når vi nu har vist dataene for den medarbejder, der bruger den samme forbindelse, har de de gamle data, fordi tilbagekobling fortryder ændringerne indtil det sidste savepoint, hvis vi nævner savepoint andet til den sidste forpligtelse.
# 10) Vi har oprettet en metode, der viser dataene, fordi vi viser data mange gange her.
JDBC-datatyper
Databaser har SQL-datatyper, og Java har Java-datatyper. Der skal være en mekanisme til læsning og skrivning af data mellem en Java-applikation og en database. Forskellige databaser understøtter SQL-typer, men med nogle variationer i navnet.
For eksempel, de fleste databaser understøtter store binære værdier, Oracle kalder det LONG RAW, Sybase kalder det IMAGE, Informix kalder det BYTE, og DB2 kalder det LONG VARCHAR FOR BIT DATA.
Mens vi skriver JDBC-programmet, behøver vi ikke bekymre os om SQL-datatyper, der bruges af måldatabasen. JDBC har et sæt generiske SQL-typeidentifikatorer i klassen java.sql.Types. Disse typer er designet til at understøtte de fleste af de generiske SQL-datatyper. Mens vi skriver et JDBC-program, bruger vi kun JDBC-datatyper.
JDBC-driveren konverterer Java-datatyperne til databasedatatyper frem og tilbage. Du kan bruge java.sql.DatabaseMetaData.getTypeInfo-metoden til at kontrollere, hvilke SQL-typer der faktisk understøttes af en given database og derefter skrive et program. JDBC bruger en standardkortlægning for de fleste datatyper.
For eksempel, Java-strengen konverteres til en SQL VARCHAR-type.
Vi vil se, hvordan kortlægningen udføres i metoden setXXX, getXXX og updateXXX for den forberedte interface eller CallableStatement eller ResultSet-grænseflader i følgende tabel:
SQL TYPE | JAVA / JDBC TYPE | sætXXX | getXXX | opdaterXXX |
---|---|---|---|---|
HELTAL | int | sætInt | tonet | updateInt |
CHAR | java.lang.Streng | setString | getString | updateString |
VARCHAR | java.lang.Streng | setString | getString | updateString |
LONGVARCHAR | java.lang.Streng | setString | getString | updateString |
BIT | boolsk | sætBoolean | getBoolean | updateBoolean |
NUMERISK | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALLINT | kort | sætShort | getShort | updateShort |
STOR | lang | sætLang | getLong | updateLong |
ÆGTE | flyde | sætFloat | getFloat | updateFloat |
FLYDE | flyde | sætFloat | getFloat | updateFloat |
DOBBELT | dobbelt | sæt Dobbelt | getDouble | updateDouble |
BINÆR | byte () | setBytes | getBytes | updateBytes |
DATO | java.sql.dato | setDate | getDate | updateDate |
TID | java.sql.Time | fastsat tidspunkt | getTime | opdateringstid |
TIDSSTEMPEL | java.sql.Tidsstempel | sætTidsstempel | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
ARRAY | Array | sætArray | getArray | updateArray |
XML | Xml | sætSQLXML | getSQLXML | opdaterSQLXML |
Struktureret type | Objekt | setObject | getObject | updateObject |
Vi har setXXX, getXXX og updateXXX-metoden til grundlæggende datatyper i vores tidligere tutorials. Du kan henvise til det.
Her har vi forklaret clob- og blob-typer i det følgende eksempel.
BLOB Eksempelprogram
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(); } } }
Produktion:
Filen er gemt med succes i den givne sti.
Forklaring:
I ovenstående program er det, vi har lavet, først, at vi har oprettet / gemt et billede i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC' . Denne placering er bare for eksempel. Du kan oprette din egen filsti i dit system. Navnet på filen er et softwaretestbillede. Derefter oprettede vi et Java-program til at gemme det billede i DB-tabellen og hente billedet fra tabellen og gemme det i det lokale system.
Indtil nu har vi diskuteret oversigten over opgaven. Nu vil vi se, hvordan vi opnåede det i programmet.
# 1) Opret en tabel i DB for at gemme billedet.
Syntaks:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
I ovenstående forespørgsel har vi 2 kolonner.
- PicName - varchar2 -> Det bruges til at gemme navnet på billedet
- billede - BLOB -> Det bruges til at gemme billedet i tabel.
BLOB-datatype bruges til at gemme billedet / billedet i DB-tabellen.
#to) Forbindelse og erklæring er oprettet og kaldes udfør metode til at udføre CREATE Query.
statemnt1.execute(QUERY);
# 3) Dernæst har vi oprettet indsætningsforespørgslen og udført den ved hjælp af PreparedStatement.
PreparedStatement syntaks:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Brug af setString () - indstil navnet på billedet.
# 5) For at indstille billedet skal du bruge FileInputStream-klassen til at passere billedplaceringen.
Syntaks:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Derefter kan vi ved hjælp af setBlob () -metoden indstille billedet i objektet PreparedStatement. Derefter kaldes den eksekveringsmetode for PreparedStatement. Dette indsætter de givne data i tabellen.
Efter udførelse af indsætningsforespørgslen henter vi dataene fra tabel ved hjælp af ResultSet-objekt (ved hjælp af Vælg forespørgsel).
# 6) Ved at bruge getString-metoden kan vi få værdien af PicName-kolonnen.
# 7) Følg nedenstående trin for at få billedet:
- Opret Blob-objekt, og tildel returværdierne for getBlob-metoden for ResultSet-objekt.
- Syntaks for det er: Blob blob1 = rs.getBlob ();
- Opret et byte-array-objekt, og få værdien af Blob-objektet som bytes.
- Opret objekt FileOutputStream-objekt, og send den fulde sti for at gemme billedet i den sti. Opkaldsskrivningsmetode () for FileOutputStream-objekt - der gemmer billedet.
- Derefter er programmet udført med succes.
# 8) Gå til placeringen af outputbilledet, og kontroller, om input og output er de samme.
CLOB Eksempelprogram
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(); } } }
Produktion:
Indtastningsfil:
Filen er gemt med succes i den givne sti.
Outputfil:
Forklaring:
I ovenstående program er det, vi har gjort, først, at vi har oprettet / gemt en tekstfil 'file1.txt' i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC'. Denne placering er bare for eksempel. Du kan oprette din egen filsti i dit system. Derefter oprettede vi et Java-program til at gemme den fil i DB-tabellen og hente den fil fra tabellen og gemme den i det lokale system.
Indtil nu har vi diskuteret oversigten over opgaven. Nu vil vi se, hvordan vi opnåede det i programmet.
# 1) Opret en tabel i DB for at gemme billedet.
Nedenfor er syntaksen for CREATE TABLE-forespørgslen:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
I ovenstående forespørgsel har vi 2 kolonner.
- FileName - varchar2 -> Det bruges til at gemme navnet på billedet.
- StoreFile - CLOB -> Det bruges til at gemme filen i tabel.
CLOB-datatype bruges til at gemme karaktertypen for binære data i DB-tabellen
#to) Forbindelse og erklæring er oprettet og kaldes udfør metode til at udføre CREATE Query.
statemnt1.execute(QUERY);
# 3) Dernæst har vi oprettet indsætningsforespørgslen og udført den ved hjælp af PreparedStatement.
PreparedStatement syntaks:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Brug af setString () - indstil navnet på filnavnet.
# 5) For at indstille / gemme filen skal du bruge FileReader-klassen til at sende filen med udfyldningsplacering.
Syntaks:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Derefter kan vi bruge setClob () -metoden til at indstille filen i objektet PreparedStatement. Derefter kaldte den udførelsesmetode for PreparedStatement. Dette indsætter de givne data i tabellen.
Efter udførelse af indsætningsforespørgslen ved hjælp af ResultSet-objekt henter vi dataene fra tabel (ved hjælp af Select Query).
Vælg forespørgsel:
'select * from Clob_Sample_Example'
# 6) Ved hjælp af getString-metoden kan vi få værdien af kolonnen FileName.
# 7) For at hente filen, vi har fulgt nedenstående trin:
- Opret Clob-objekt, og tildel returværdierne for getClob-metoden for ResultSet-objekt.
- Syntaks for det er: Clob clob1 = rs.getClob ();
- Opret Reader-objekt, og få værdien af Clob-objekt som tegn.
- Opret objekt FileWriter-objekt, og send den fulde sti til at gemme filen i den sti. Opkaldsskrivningsmetode () for FileWrite-objekt - der skriver dataene i filen på stedet.
- Derefter er programmet udført med succes.
# 8) Gå til placeringen af outputfilen, og kontroller, om input- og outputfilerne er de samme.
Punkter at huske:
- ACID Properties forklarer Transaction Management i Database.
- Commit (), rollback () og savepoint er de vigtigste operationer i Transaction Management.
- Forpligtelse vil foretage ændringerne permanent i DB, Tilbagekaldelse fortryder ændringerne indtil den sidste forpligtelse eller det nævnte savepoint, og Savepoint hjælper med at oprette et kontrolpunkt.
- Database vedligeholder SQL-datatyper, og Java vedligeholder Java-datatyper. JDBC-driveren bruges til at håndtere denne konvertering.
- JDBC-driveren selv har nogle SQL-type identifikatorer, så programmøren behøver ikke bekymre sig om datatyper.
Ofte stillede spørgsmål
Q # 1) Hvad er JDBC-datatypen?
Svar: Java har sine datatyper, og databasen har sine datatyper. JDBC-driveren konverterer Java-datatypen til den relevante SQL-datatype, som accepteres af databasen. ResultSet-objekter giver også setXXX () -metoder og getXXX () -metoder tilgængelige for de relevante datatyper.
Q # 2) Hvad er datatypen for datoen i Java?
Svar: Datoen i Java er ikke kun en datatype, men en klasse. En dato i Java har datoen, klokkeslættet, året, navnet på dagen, ugedagen og tidszonen. Dataklasse har de passende metoder til at hente de relevante data.
Q # 3) Hvad er forskellen mellem java.util.Date og java.sql.Date?
Svar: Den største forskel er java.util.Date har også oplysninger om dato og klokkeslæt. Men java.sql.Date har kun oplysningerne om datoen. Dette er den største forskel, vi kan ikke kortlægge java.util.Date direkte med java.sql.Date.
Spørgsmål nr. 4) Har vi en klasse i Java til at repræsentere TIME og TIMESTAMP-typen til SQL?
Svar: Ja, vi har en klasse for TIME og TIMESTAMP-typen til SQL. java.sql.Time-klasse repræsenterer TIME-relateret information. java.sql.timestamp klasse repræsenterer TIMESTAMP relaterede oplysninger.
Spørgsmål nr. 5) Hvordan starter jeg en transaktion i JDBC?
Svar: JDBC-forbindelse starter med auto-commit-tilstand aktiveret, hvor hver SQL-sætning betragtes som en transaktion. Der er ingen specifik proces til at starte en transaktion i JDBC. Når du opretter en forbindelse og begynder at udføre SQL-sætningen, er det her transaktionen er startet.
Q # 6) Hvad er commit () -metoden i Java?
Svar: Commit () -metoden i Java bruges til at gemme de ændringer, der er foretaget siden sidste commit (). Commit () -metoden er tilgængelig i forbindelsesgrænsefladen. Ved hjælp af et forbindelsesobjekt kan vi kalde commit ().
Q # 7) Hvad er tilbageføringsmetoden i Java?
Svar: Efter den sidste forpligtelse (), hvis der er opstået problemer, kan vi ringe til rollback () -metoden for at gendanne alle de ændringer, der er foretaget, indtil den sidste commit.rollback () -metode er tilgængelig i forbindelsesgrænsefladen. Ved hjælp af et forbindelsesobjekt kan vi kalde rollback () -metoden.
Konklusion
Her har vi dækket datatyper i Java og DB, og hvordan JDBC-driveren håndterer det. Vi har diskuteret ACID-egenskaber. Det er vigtigst for bankområdet. Det vil være meget nyttigt for din karriere. I afsnittet Transaktionsstyring har vi diskuteret commit- og rollback-metoder såsom commit (), rollback (), setAutoCommit (), setSavepoint () og releaseSavepoint ().
Anbefalet læsning
- Java JDBC Tutorial: Hvad er JDBC (Java Database Connectivity)
- Java JDBC-forbindelsesvejledning med programmeringseksempel
- JDBC DriverManager, JDBC Forberedt Erklæring og erklæring
- JDBC ResultSet: Sådan bruges Java ResultSet til at hente data
- Java datatyper, sløjfer, arrays, switch og påstande
- Java strenglængde () Metode med eksempler
- Sådan bruges Java toString-metoden?
- Selenium Database Testing (Brug af WebDriver og JDBC API)