java jdbc transaction management with example
Denne opplæringen forklarer JDBC-transaksjonstyper, datatyper, transaksjonsadministrasjonsmetoder og hvordan du bruker dem i Java-program:
I JDBC ResultSet opplæring av JDBC opplæringsserie , lærte vi å bruke JDBC ResultSet for å hente data.
I denne veiledningen vil vi diskutere transaksjonstyper i JDBC. Vi har sett en kort introduksjon til transaksjonstypene i våre tidligere veiledninger. Her vil vi se på en detaljert måte. Vi vil også dekke hva som er datatypene i JDBC og hvordan du bruker det i Java-programmet.
Databasen vil ha forskjellige datatyper og Java vil ha forskjellige datatyper. JDBC vil håndtere denne differensieringen. La oss gjøre oss kjent med det viktige emnet i JDBC.
Hva du vil lære:
JDBC Transaction Management
Handlingsrekkefølgen (SQL-setninger) behandles som en enkelt enhet som er kjent som en transaksjon. Transaksjonsadministrasjon er viktig for RDBMS-orienterte applikasjoner for å opprettholde dataintegritet og konsistens.
Mens vi utfører transaksjonen, vil vi bruke getXXX og setXXX-metoder for å hente og sette dataene i ResultSet-objektet. XXX representerer datatypene til kolonnene. Vi vil diskutere transaksjonen og datatypene til JDBC i denne opplæringen.
Transaksjonstyper
I JDBC vil hvert SQL-spørsmål bli betraktet som en transaksjon. Når vi oppretter en databaseforbindelse i JDBC, vil den kjøre i auto-commit-modus (auto-commit-verdien er SANT). Etter utførelsen av SQL-setningen vil den bli begått automatisk.
Noen ganger kan det være lurt å begå transaksjonen etter gjennomføring av noen flere SQL-setninger. På den tiden må vi sette verdien for automatisk forpliktelse til False. Slik at dataene ikke blir forpliktet før du utfører alle spørsmålene. Hvis vi får et unntak i transaksjonen, kan vi tilbakestille () endringer og gjøre det som før. Transaksjonsstyring kan forklares godt - ved hjelp av ACID-egenskaper.
SUR betyr
- A – Atomisitet -> Hvis alle spørsmål blir utført vellykket, blir data begått, ellers ikke.
- C – Konsistens -> DB må være i en konsistent tilstand etter en transaksjon.
- I– Isolasjon -> Transaksjonen er isolert fra andre transaksjoner.
- D – holdbarhet -> Hvis transaksjonen er begått en gang, vil den forbli alltid begått.
Det er tre viktigste funksjonene i Transaction Management. De er:
intervju spørsmål om nivå 1 i helpdesk
- Begå: Etter utførelsen av SQL-setningene ønsker vi å gjøre endringene permanente i databasen. Vi bør kalle commit () -metoden. Normalt betyr det som er forpliktet at det vil gjøre endringene permanent i databasen. Vi kan ikke angre / tilbakekalle endringene. Men vi kan endre dataene i databasen.
- Tilbakebetaling: Tilbakebetaling angrer endringene til siste kommisjon eller nevnte lagringspunkt. Noen ganger kan det være lurt å angre endringene. For eksempel, vi har ett nestet spørsmål, den ene delen er utført vellykket, og den andre har kastet noe unntak. På den tiden ønsker vi å angre endringene som ble gjort av den første delen. Vi bør kalle tilbakeføringsmetoden () for å gjøre det hvis et unntak har skjedd.
- Savepoint: Savepoint hjelper til med å opprette sjekkpunkt i en transaksjon, og det gjør det mulig å utføre tilbakestilling til det spesielle lagringspunktet. Ethvert lagringspunkt som er opprettet for en transaksjon, blir automatisk ødelagt og blir ugyldig når transaksjonen er begått eller rullet tilbake.
Inntil nå har vi sett hva som er forpliktelse, tilbakeføring og redning av punkt og dets virksomhet. Nedenfor ser vi metodene for det og hvordan du bruker det i programmet.
Metoder for transaksjonshåndtering
Tilkoblingsgrensesnittet gir 5 metoder for transaksjonsadministrasjon. De er som følger:
# 1) setAutoCommit () Metode
Som standard er verdien av AutoCommit-verdien SANN. Etter utførelsen av SQL-setningen vil den bli begått automatisk. Ved å bruke metoden setAutoCommit () kan vi sette verdien til AutoCommit.
# 2) Forplikt () Metode
Forpliktelsesmetoden brukes til å begå dataene. Etter utførelsen av SQL-setningen kan vi kalle commit (). Det vil forplikte endringene som er gjort av SQL-setningen.
Syntaks: conn.commit ();
# 3) Metode for tilbakestilling ()
Tilbakebetalingsmetoden brukes til å angre endringene til siste forpliktelse har skjedd. Hvis vi står overfor noe problem eller unntak i kjøringsflyten av SQL-setningene, kan vi trekke tilbake transaksjonen.
Syntaks: conn.rollback ();
# 4) setSavepoint () Metode
Savepoint gir deg ekstra kontroll over transaksjonen. Når du angir et lagringspunkt i transaksjonen (en gruppe SQL-setninger), kan du bruke tilbakeføringsmetoden () til å angre alle endringene til lagringspunktet eller etter lagringspunktet (). setSavepoint () -metoden brukes til å opprette et nytt lagringspunkt.
# 5) releaseSavepoint () Metode
Den brukes til å slette det opprettede lagringspunktet.
I programmet nedenfor får du vite mer om disse metodene, og vil også lære hvordan du bruker det i Java-programmet.
I denne opplæringen er alle programmene skrevet på Java. Vi har brukt Java 8-versjonen og Oracle DB.
>> Klikk her for å laste ned Oracle-programvaren.
>> Klikk her for å laste ned Java versjon 8.
Den har trinnvis Java-installasjonsprosess.
Transaksjonseksempelprogram
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); } } }
Produksjon:
Forklaring:
Det vi har gjort i ovennevnte transaksjonsstyringsprogram, er å oppdatere verdiene til den ansatte i tabellen EMPLOYEE_DETAILS og begå dataene. Hvis det har oppstått feil eller unntak, har vi gjort tilbakeføring (). Nå skal vi se den fulle forklaringen på programmet.
#1) Opprettet 2 Select-spørring for 2 ansatte basert på EMPID
Nedenfor er de 2 utvalgte spørsmålene.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#to) Opprettet to oppdateringsspørsmål for 2 ansatte basert på deres EMPID
To oppdaterte spørsmål:
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) Åpne Connection, utfør seleksjonsforespørselen og viste dataene til EMPNUM = 2001.
# 4) Bruk setAutoCommit () -metoden, og sett verdien til autoCommit til false.
# 5) Utførte oppdateringsspørringen av EMPNUM = 2001 og opprettet en annen forbindelse for den samme databasen og valgte verdien til EMPNUM = 2001.
# 6) De resulterende dataene til den ansatte hvis EMPNUM = 2001 ikke er de oppdaterte dataene. Fordi vi ikke har gjort commit () -operasjonen. Hvis du har brukt den samme tilkoblingen som du har brukt den til å oppdatere, ville den vist deg de oppdaterte dataene. Forpliktet nå dataene. Dataene er gjenspeilet i tabellen.
# 7) Opprettet ett lagringspunkt etter kommittoperasjonen.
# 8) Ved å bruke utvalgsspørringen for å vise data for EMPNUM = 2002. Endret lønnen til den ansatte ved hjelp av et oppdateringsspørsmål. Etter det viste dataene til EMPNUM = 2002, ved hjelp av samme tilkobling. Den skal vise de oppdaterte dataene.
# 9) Gjort tilbakestillingen til siste lagringspunkt ved hjelp av tilbakeføringsmetoden. Nå når vi har vist dataene til den ansatte ved hjelp av samme tilkobling, har de de gamle dataene fordi tilbakeføring angrer endringene til siste lagringspunkt hvis vi nevner lagringspunkt annet til siste forpliktelse.
# 10) Vi har laget en metode som viser dataene fordi vi viser data mange ganger her.
JDBC datatyper
Databaser har SQL-datatyper og Java har Java-datatyper. Det bør være en mekanisme for lesing og skriving av data mellom et Java-program og en database. Ulike databaser støtter SQL-typer, men med noen variasjoner i navnet.
For eksempel, de fleste databasene støtter store binære verdier, Oracle kaller det LONG RAW, Sybase kaller det BILDE, Informix kaller det BYTE, og DB2 kaller det LONG VARCHAR FOR BIT DATA.
Mens vi skriver JDBC-programmet, trenger vi ikke bekymre oss for SQL-datatyper som brukes av måldatabasen. JDBC har et sett med generiske SQL-typeidentifikatorer i klassen java.sql.Types. Disse typene er designet for å støtte de fleste av de generiske SQL-datatypene. Mens vi skriver et JDBC-program, bruker vi bare JDBC-datatyper.
JDBC-driveren konverterer Java-datatypene til databasedatatyper frem og tilbake. Du kan bruke java.sql.DatabaseMetaData.getTypeInfo-metoden for å sjekke hvilke SQL-typer som faktisk støttes av en gitt database og deretter skrive et program. JDBC bruker en standardkartlegging for de fleste datatypene.
For eksempel, Java-strengen blir konvertert til en SQL VARCHAR-type.
Vi får se hvordan kartleggingen gjøres i metoden setXXX, getXXX og updateXXX for den preparerteStatement- eller CallableStatement- eller ResultSet-grensesnittet i følgende tabell:
SQL TYPE | JAVA / JDBC TYPE | settXXX | getXXX | oppdateringXXX |
---|---|---|---|---|
INTEGER | int | settInt | tonet | updateInt |
CHAR | java.lang.String | setString | getString | updateString |
VARCHAR | java.lang.String | setString | getString | updateString |
LONGVARCHAR | java.lang.String | setString | getString | updateString |
BIT | boolsk | settBoolsk | getBoolean | updateBoolean |
NUMERISK | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALLINT | kort | setShort | getShort | updateShort |
STOR | lang | settLang | fåLang | updateLong |
EKTE | flyte | setFloat | getFloat | updateFloat |
FLYTE | flyte | setFloat | getFloat | updateFloat |
DOBBELT | dobbelt | setDouble | getDouble | updateDouble |
BINAR | byte () | setBytes | getBytes | updateBytes |
DATO | java.sql.dato | setDate | getDate | Oppdater dato |
TID | java.sql.Time | setTime | getTime | oppdateringstid |
TIDSTEMPEL | java.sql.Tidsstempel | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
ARRAY | Array | settArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Strukturert type | Gjenstand | setObject | getObject | updateObject |
Vi har settXXX, getXXX og updateXXX-metoden for grunnleggende datatyper i våre tidligere veiledninger. Du kan referere til det.
Her har vi forklart clob- og blob-typer i 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(); } } }
Produksjon:
Filen er lagret i den gitte banen.
Forklaring:
I det ovennevnte programmet er det vi har gjort først Vi har opprettet / lagret ett bilde i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC' . Denne plasseringen er bare for eksempel. Du kan opprette din egen filsti i systemet ditt. Navnet på filen er et programvare for testing av programvare. Så opprettet vi ett Java-program for å lagre det bildet i DB-tabellen og hente bildet fra bordet og lagre det i det lokale systemet.
Til nå har vi diskutert oversikten over oppgaven. Nå får vi se hvordan vi oppnådde det i programmet.
#1) Lag en tabell i DB for å lagre bildet.
Syntaks:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
I spørringen ovenfor har vi to kolonner.
- PicName - varchar2 -> Den brukes til å lagre navnet på bildet
- bilde - BLOB -> Den brukes til å lagre bildet i tabellen.
BLOB-datatype brukes til å lagre bilde / bilde i DB-tabellen.
#to) Tilkobling og uttalelse er opprettet og kalt execute-metode for å utføre CREATE Query.
statemnt1.execute(QUERY);
# 3) Deretter har vi laget innsettingsspørringen og utført den ved hjelp av PreparedStatement.
PreparedStatement syntaks:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Bruke setString () - angi navnet på bildet.
# 5) For å stille inn bildet, bruk FileInputStream-klassen til å passere bildeplasseringen.
Syntaks:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Deretter, ved hjelp av setBlob () -metoden, kan vi stille inn bildet i PreparedStatement-objektet. Etter det, kalt kjør metoden for PreparedStatement. Det vil sette inn gitte data i tabellen.
Etter å ha kjørt innsettingsspørringen, ved å bruke ResultSet-objektet, henter vi dataene fra tabellen (ved hjelp av Select Query).
# 6) Ved å bruke getString-metoden kan vi få verdien av PicName-kolonnen.
# 7) Følg trinnene nedenfor for å få bildet:
- Opprett Blob-objekt og tilordne returverdiene til getBlob-metoden for ResultSet-objekt.
- Syntaks for det er: Blob blob1 = rs.getBlob ();
- Lag et byte-array-objekt og få verdien av Blob-objektet som byte.
- Lag objekt FileOutputStream-objekt og pass hele banen for å lagre bildet i den banen. Call write () -metoden for FileOutputStream-objektet - som lagrer bildet.
- Etter det har programmet blitt kjørt med suksess.
# 8) Gå til plasseringen av utgangsbildet og sjekk om inngang og utgang 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(); } } }
Produksjon:
Inndatafil:
Filen er lagret i den gitte banen.
Output-fil:
Forklaring:
I det ovennevnte programmet er det vi har gjort først at vi har opprettet / lagret en tekstfil 'file1.txt' i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC'. Denne plasseringen er bare for eksempel. Du kan opprette din egen filsti i systemet ditt. Så opprettet vi ett Java-program for å lagre den filen i DB-tabellen og hente den filen fra tabellen og lagre den i det lokale systemet.
Til nå har vi diskutert oversikten over oppgaven. Nå får vi se hvordan vi oppnådde det i programmet.
#1) Lag en tabell i DB for å lagre bildet.
Nedenfor er syntaksen til CREATE TABLE Query:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
I spørringen ovenfor har vi to kolonner.
- FileName - varchar2 -> Den brukes til å lagre navnet på bildet.
- StoreFile - CLOB -> Den brukes til å lagre filen i tabellen.
CLOB-datatype brukes til å lagre karaktertypen binære data i DB-tabellen
#to) Tilkobling og uttalelse er opprettet og kalt execute-metode for å utføre CREATE Query.
statemnt1.execute(QUERY);
# 3) Deretter har vi opprettet innsettingsspørringen og utført den ved hjelp av PreparedStatement.
PreparedStatement syntaks:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Bruke setString () - angi navnet på filnavnet.
# 5) For å angi / lagre filen, bruk FileReader-klassen til å sende filen med fyllplassering.
Syntaks:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Deretter bruker vi metoden setClob (), og vi kan sette filen i PreparedStatement-objektet. Etter det kalt kjør metoden for PreparedStatement. Det vil sette inn gitte data i tabellen.
Etter å ha utført innsettingsspørsmålet, bruker vi ResultSet-objektet og henter dataene fra tabellen (ved hjelp av Select Query).
Velg spørring:
'select * from Clob_Sample_Example'
# 6) Ved hjelp av getString-metoden kan vi få verdien av FileName-kolonnen.
# 7) For å få filen, vi har fulgt trinnene nedenfor:
- Opprett Clob-objekt og tilordne returverdiene for getClob-metoden til ResultSet-objektet.
- Syntaks for det er: Clob clob1 = rs.getClob ();
- Lag Reader-objekt og få verdien av Clob-objektet som tegn.
- Lag objekt FileWriter-objekt og pass hele banen for å lagre filen i den banen. Kall skriv () -metoden for FileWrite-objektet - som vil skrive dataene i filen på stedet.
- Etter det har programmet blitt kjørt med suksess.
# 8) Gå til plasseringen av utdatafilen og sjekk om inn- og utdatafilene er de samme.
Poeng å huske:
- ACID Properties forklarer Transaction Management in Database.
- Commit (), rollback () og savepoint er de viktigste operasjonene i Transaction Management.
- Forpliktelse vil gjøre endringene permanent i DB, tilbakestilling vil angre endringene til siste forpliktelse eller nevnte lagringspunkt, og Savepoint hjelper til med å opprette et kontrollpunkt.
- Database vedlikeholder SQL-datatyper og Java vedlikeholder Java-datatyper. JDBC-driveren brukes til å håndtere denne konverteringen.
- JDBC-driveren selv har noen SQL-type identifikatorer, slik at programmereren ikke trenger å bekymre seg for datatyper.
ofte stilte spørsmål
Q # 1) Hva er JDBC-datatypen?
Svar: Java har datatypene, og databasen har datatypene. JDBC-driveren konverterer Java-datatypen til riktig SQL-datatype som aksepteres av databasen. ResultSet-objekter gir også setXXX () -metoder og getXXX () -metoder tilgjengelig for de aktuelle datatypene.
Q # 2) Hva er datatypen for datoen i Java?
Svar: Datoen i Java er ikke bare en datatype, men en klasse. En dato i Java har datoen, klokkeslettet, året, navnet på dagen, ukedagen og tidssonen. Datoklasse har de riktige metodene for å hente relevante data.
Q # 3) Hva er forskjellen mellom java.util.Date og java.sql.Date?
Svar: Hovedforskjellen er java.util.Date har også informasjon om dato og klokkeslett. Men java.sql.Date har kun informasjon om datoen. Dette er hovedforskjellen vi ikke kan kartlegge java.util.Date direkte med java.sql.Date.
Q # 4) Har vi en klasse i Java som representerer TIME og TIMESTAMP-typen for SQL?
Svar: Ja, vi har en klasse for TIME og TIMESTAMP-type for SQL. java.sql.Time-klasse representerer TIME-relatert informasjon. java.sql.timestamp klasse representerer TIMESTAMP relatert informasjon.
Sp # 5) Hvordan starte en transaksjon i JDBC?
Svar: JDBC-tilkobling starter med automatisk forpliktelsesmodus aktivert, der hver SQL-setning betraktes som en transaksjon. Det er ingen spesifikk prosess for å starte en transaksjon i JDBC. Når du oppretter en forbindelse og begynner å utføre SQL-setningen, er det der transaksjonen har startet.
Q # 6) Hva er commit () -metoden i Java?
Svar: Commit () -metoden i Java brukes til å lagre endringene som ble gjort siden siste forpliktelse (). Commit () -metoden er tilgjengelig i tilkoblingsgrensesnittet. Ved hjelp av et tilkoblingsobjekt kan vi kalle commit ().
Sp # 7) Hva er tilbakeføringsmetoden i Java?
Svar: Etter siste forpliktelse (), hvis det har oppstått problemer, kan vi ringe tilbakeføringsmetoden () for å tilbakestille alle endringene som er gjort til siste forpliktelse.rollback () er tilgjengelig i tilkoblingsgrensesnittet. Ved hjelp av et tilkoblingsobjekt kan vi kalle tilbakeføringsmetoden.
Konklusjon
Her har vi dekket datatyper i Java og DB og hvordan JDBC-driveren håndterer det. Vi har diskutert ACID-egenskaper. Det er viktigst for bankfeltet. Det vil være veldig nyttig for karrieren din. I Transaction Management-delen har vi diskutert commit- og tilbakeføringsmetoder som commit (), rollback (), setAutoCommit (), setSavepoint () og releaseSavepoint ().
Anbefalt lesing
- Java JDBC Tutorial: Hva er JDBC (Java Database Connectivity)
- Java JDBC-tilkoblingsveiledning med programmeringseksempel
- JDBC DriverManager, JDBC PreparedStatement And Statement
- JDBC ResultSet: Hvordan bruke Java ResultSet for å hente data
- Java datatyper, sløyfer, matriser, brytere og påstander
- Java strenglengde () Metode med eksempler
- Hvordan bruke Java toString Method?
- Selenium Database Testing (Bruk WebDriver og JDBC API)