java jdbc transaction management with example
Denna handledning förklarar JDBC-transaktionstyper, datatyper, transaktionshanteringsmetoder och hur man använder dem i Java-program:
I JDBC ResultSet handledning av JDBC-handledningsserie , vi lärde oss att använda JDBC ResultSet för att hämta data.
I den här handledningen kommer vi att diskutera transaktionstyperna i JDBC. Vi har sett en kort introduktion till transaktionstyperna i våra tidigare självstudier. Här kommer vi att se på ett detaljerat sätt. Vi kommer också att beskriva vilka datatyper som finns i JDBC och hur man använder det i Java-programmet.
Databasen kommer att ha olika datatyper och Java kommer att ha olika datatyper. JDBC kommer att hantera denna differentiering. Låt oss göra oss redo att lära känna det viktiga ämnet i JDBC.
Vad du kommer att lära dig:
JDBC Transaction Management
Åtgärdssekvensen (SQL-satser) behandlas som en enda enhet som kallas en transaktion. Transaktionshantering är viktigt för RDBMS-orienterade applikationer för att upprätthålla dataintegritet och konsistens.
Under transaktionen använder vi getXXX och setXXX-metoder för att hämta och ställa in data i ResultSet-objektet. XXX representerar datatyperna för kolumnerna. Vi kommer att diskutera transaktions- och datatyperna för JDBC i denna handledning.
Transaktionstyper
I JDBC kommer varje SQL-fråga att betraktas som en transaktion. När vi skapar en databasanslutning i JDBC körs den i auto-commit-läge (auto-commit-värdet är SANT). Efter körningen av SQL-uttalandet kommer det att göras automatiskt.
Ibland kanske vi vill begå transaktionen efter genomförandet av några fler SQL-uttalanden. Vid den tiden måste vi ställa in värdet auto-commit till False. Så att data inte kommer att begås innan alla frågor utförs. Om vi får ett undantag i transaktionen kan vi återställa () ändringar och göra det som tidigare. Transaktionshantering kan förklaras väl med hjälp av ACID-egenskaper.
SUR betyder
- A – Atomicitet -> Om alla frågor utförs framgångsrikt kommer data att begås, annars kommer det inte att göras.
- C – Konsistens -> DB måste vara i ett konsekvent tillstånd efter varje transaktion.
- I– Isolation -> Transaktion är isolerad från andra transaktioner.
- D – hållbarhet -> Om transaktionen görs en gång, kommer den alltid att vara förpliktad.
Det finns tre viktigaste funktioner i Transaction Management. Dom är:
hur man spelar en shockwave-flashfil
- Begå: Efter körningen av SQL-uttalandena vill vi göra ändringarna permanenta i databasen. Vi bör ringa metoden commit (). Normalt betyder vad som är kommit att det kommer att göra ändringarna permanent i databasen. Vi kan inte ångra / återkalla ändringarna. Men vi kan ändra data i databasen.
- Rulla tillbaka: Återställningen ångrar ändringarna till den sista förpliktelsen eller nämnda sparpunkten. Ibland kanske vi vill ångra ändringarna. Till exempel, vi har en kapslad fråga, en del har körts framgångsrikt och den andra har visat något undantag. Vid den tiden vill vi ångra ändringarna som gjorts av den första delen, vi ska ringa Rollback () -metoden för att göra det om ett undantag har inträffat.
- Savepoint: Savepoint hjälper till att skapa kontrollpunkt i en transaktion och det gör det möjligt att utföra en återställning till den specifika sparpunkten. Alla sparpunkter som har skapats för en transaktion förstörs automatiskt och blir ogiltiga när transaktionen har begåtts eller rullats tillbaka.
Hittills har vi sett vad som är commit, rollback och savepoint och dess verksamhet. Nedan ser vi metoderna för det och hur man använder det i programmet.
Metoder för transaktionshantering
Anslutningsgränssnittet ger 5 metoder för transaktionshantering. De är som följer:
# 1) setAutoCommit () Metod
Som standard är värdet för AutoCommit-värdet SANT. Efter körningen av SQL-uttalandet kommer det att göras automatiskt. Genom att använda metoden setAutoCommit () kan vi ställa in värdet till AutoCommit.
# 2) Engagera () Metod
Commit-metoden används för att begå data. Efter körningen av SQL-satsen kan vi anropa commit (). Det gör de ändringar som görs av SQL-uttalandet.
Syntax: anslut.förbindelse ();
# 3) Metod för återställning ()
Återställningsmetoden används för att ångra ändringarna tills det senaste engagemanget har hänt. Om vi står inför något problem eller undantag i utförandet av SQL-uttalanden kan vi återställa transaktionen.
Syntax: anslut.rollback ();
# 4) setSavepoint () Metod
Savepoint ger dig ytterligare kontroll över transaktionen. När du ställer in en sparpunkt i transaktionen (en grupp av SQL-satser) kan du använda återställningsmetoden () för att ångra alla ändringar tills sparpunkten eller efter sparpunkten (). setSavepoint () -metoden används för att skapa en ny sparpunkt.
# 5) releaseSavepoint () Metod
Den används för att radera den skapade sparpunkten.
I programmet nedan får du veta mer om dessa metoder och lär dig också hur du använder det i Java-programmet.
I denna handledning är alla program skrivna i Java. Vi har använt Java 8-versionen och Oracle DB.
>> Klicka här för att ladda ner Oracle-programvaran.
>> Klicka här för att ladda ner Java version 8.
Den har den stegvisa Java-installationsprocessen.
Transaktionsexempelprogram
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:
Förklaring:
Vad vi har gjort i ovanstående transaktionshanteringsprogram är att uppdatera värdena för den givna medarbetaren i tabellen EMPLOYEE_DETAILS och begå data. Om något fel eller undantag har inträffat har vi gjort återställning (). Nu ska vi se den fullständiga förklaringen av programmet.
# 1) Skapad 2 Select-fråga för 2 anställda baserat på deras EMPID
Nedan följer de två utvalda frågorna.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#två) Skapade två uppdateringsfrågor för 2 anställda baserat på deras EMPID
Två uppdaterade frågor:
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) Öppna Connection, kör väljfrågan och visa data för EMPNUM = 2001.
# 4) Använd metoden setAutoCommit () och ställ in värdet för autoCommit till false.
# 5) Utförde uppdateringsfrågan för EMPNUM = 2001 och skapade en annan anslutning för samma databas och valde värdet för EMPNUM = 2001.
# 6) De resulterande uppgifterna från den anställde vars EMPNUM = 2001 inte är de uppdaterade uppgifterna. Eftersom vi inte har gjort commit () -operationen. Om du har använt samma anslutning som du har använt den för att uppdatera, skulle den ha visat dig de uppdaterade uppgifterna. Nu begått data. Uppgifterna har återspeglats i tabellen.
# 7) Skapade en sparpunkt efter kommitåtgärden.
# 8) Använda urvalsfrågan för att visa data för EMPNUM = 2002. Ändrade lönen för den anställde med hjälp av en uppdateringsfråga. Därefter visas data från EMPNUM = 2002 med samma anslutning. Den ska visa de uppdaterade uppgifterna.
# 9) Gjort återställningen till den sista sparpunkten med återställningsmetoden. Nu när vi har visat data för den anställde som använder samma anslutning, har den gamla data eftersom återställning ångrar ändringarna till den sista sparpunkten om vi nämner savepoint annat till det senaste engagemanget.
# 10) Vi har skapat en metod som visar data eftersom vi visar data många gånger här.
JDBC-datatyper
Databaser har SQL-datatyper och Java har Java-datatyper. Det bör finnas en mekanism för att läsa och skriva data mellan ett Java-program och en databas. Olika databaser stöder SQL-typer, men med vissa variationer i namnet.
Till exempel, de flesta databaser stöder stora binära värden, Oracle kallar det LONG RAW, Sybase kallar det IMAGE, Informix kallar det BYTE och DB2 kallar det LONG VARCHAR FOR BIT DATA.
När vi skriver JDBC-programmet behöver vi inte oroa oss för SQL-datatyper som används av måldatabasen. JDBC har en uppsättning generiska SQL-typidentifierare i klassen java.sql.Types. Dessa typer är utformade för att stödja de flesta generiska SQL-datatyper. När vi skriver ett JDBC-program kommer vi endast att använda JDBC-datatyper.
JDBC-drivrutinen kommer att konvertera Java-datatyperna till databasdatatyper fram och tillbaka. Du kan använda java.sql.DatabaseMetaData.getTypeInfo-metoden för att kontrollera vilka SQL-typer som faktiskt stöds av en given databas och sedan skriva ett program. JDBC använder en standardmappning för de flesta datatyper.
Till exempel, Java-strängen kommer att konverteras till en SQL VARCHAR-typ.
Vi kommer att se hur kartläggningen görs i metoden setXXX, getXXX och updateXXX för den prepareradeStatement- eller CallableStatement- eller ResultSet-gränssnitten i följande tabell:
SQL-TYP | JAVA / JDBC TYP | setXXX | getXXX | uppdateraXXX |
---|---|---|---|---|
HELTAL | int | ställa in | tonad | updateInt |
RÖDING | java.lang. sträng | setString | getString | updateString |
VARCHAR | java.lang. sträng | setString | getString | updateString |
LONGVARCHAR | java.lang. sträng | setString | getString | updateString |
BIT | booleska | setBoolean | getBoolean | updateBoolean |
NUMERISK | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALLINT | kort | setShort | getShort | updateShort |
STORA | lång | setLong | getLong | updateLong |
VERKLIG | flyta | setFloat | getFloat | updateFloat |
FLYTA | flyta | setFloat | getFloat | updateFloat |
DUBBEL | dubbel | setDouble | getDouble | updateDouble |
BINÄR | byte () | setBytes | getBytes | updateBytes |
DATUM | java.sql.Datum | bestämma datum | getDate | uppdatera datum |
TID | java.sql.Time | Ställ klockan | få tid | uppdaterings tid |
TIDSSTÄMPEL | java.sql.Tidsstämpel | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
KLICK | java.sql.Blob | setBlob | getBlob | updateBlob |
ARRAY | Array | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Strukturerad typ | Objekt | setObject | getObject | updateObject |
Vi har setXXX, getXXX och updateXXX-metoden för grundläggande datatyper i våra tidigare handledning. Du kan hänvisa till det.
Här har vi förklarat clob- och blob-typer i följande exempel.
BLOB Exempelprogram
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 har sparats framgångsrikt på den angivna sökvägen.
Förklaring:
I ovanstående program är vad vi har gjort Först har vi skapat / sparat en bild i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC' . Denna plats är bara till exempel. Du kan skapa din egen filsökväg i ditt system. Filens namn är en programvarutestning. Sedan skapade vi ett Java-program för att lagra den bilden i DB-tabellen och hämta bilden från tabellen och lagra den i det lokala systemet.
Hittills har vi diskuterat översikten över uppgiften. Nu får vi se hur vi uppnådde det i programmet.
# 1) Skapa en tabell i DB för att lagra bilden.
Syntax:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
I ovanstående fråga har vi två kolumner.
- PicName - varchar2 -> Den används för att lagra bildens namn
- bild - BLOB -> Den används för att lagra bilden i tabellen.
BLOB-datatyp används för att lagra bild / bild i DB-tabellen.
#två) Anslutning och uttalande har skapats och kallas execute-metod för att utföra CREATE Query.
statemnt1.execute(QUERY);
# 3) Därefter har vi skapat infogningsfrågan och kört den med PreparedStatement.
PreparedStatement syntax:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Använda setString () - ställ in namnet på bilden.
# 5) För att ställa in bilden, använd FileInputStream-klassen för att skicka bildplatsen.
Syntax:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Sedan kan vi använda setBlob () -metoden för att ställa in bilden i PreparedStatement-objektet. Därefter kallas execute-metoden för PreparedStatement. Det kommer att infoga de angivna uppgifterna i tabellen.
Efter att ha kört infogningsfrågan, med hjälp av ResultSet-objektet hämtar vi data från tabellen (med Select Query).
# 6) Genom att använda getString-metoden kan vi få värdet av PicName-kolumnen.
# 7) Följ stegen nedan för att få bilden:
- Skapa Blob-objekt och tilldela returvärdena för getBlob-metoden för ResultSet-objekt.
- Syntax för det är: Blob blob1 = rs.getBlob ();
- Skapa ett byte-arrayobjekt och få värdet på Blob-objektet som byte.
- Skapa objekt FileOutputStream-objekt och skicka hela sökvägen för att lagra bilden i den sökvägen. Metoden för samtalsskrivning () för FileOutputStream-objekt - som lagrar bilden.
- Därefter har programmet körts framgångsrikt.
# 8) Gå till platsen för utmatningsbilden och kontrollera om ingången och utgången är desamma.
CLOB Exempelprogram
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:
Indatafil:
Filen har sparats framgångsrikt på den angivna sökvägen.
Utdatafil:
Förklaring:
I ovanstående program har det vi gjort först att vi har skapat / sparat en textfil 'file1.txt' i mappen 'D: \ Bhakiya \ Bhakiya \ JDBC'. Denna plats är bara till exempel. Du kan skapa din egen filsökväg i ditt system. Sedan skapade vi ett Java-program för att lagra den filen i DB-tabellen och hämta den filen från tabellen och lagra den i det lokala systemet.
Hittills har vi diskuterat översikten över uppgiften. Nu får vi se hur vi uppnådde det i programmet.
# 1) Skapa en tabell i DB för att lagra bilden.
Nedan är syntaxen för CREATE TABLE-frågan:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
I ovanstående fråga har vi två kolumner.
- FileName - varchar2 -> Den används för att lagra bildens namn.
- StoreFile - CLOB -> Den används för att lagra filen i tabellen.
CLOB-datatyp används för att lagra karaktärstypen för binär data i DB-tabellen
#två) Anslutning och uttalande har skapats och kallas execute-metod för att utföra CREATE Query.
statemnt1.execute(QUERY);
# 3) Därefter har vi skapat infogningsfrågan och kört den med PreparedStatement.
PreparedStatement syntax:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Använda setString () - ställ in namnet på filnamnet.
# 5) För att ställa in / lagra filen, använd FileReader-klassen för att skicka filen med fyllningsplats.
Syntax:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Sedan kan vi använda setClob () -metoden för att ställa in filen i PreparedStatement-objektet. Därefter kallas execute-metoden för PreparedStatement. Det kommer att infoga de angivna uppgifterna i tabellen.
Efter att ha kört infogningsfrågan med hjälp av ResultSet-objekt hämtar vi data från tabellen (med hjälp av Select Query).
Välj fråga:
'select * from Clob_Sample_Example'
# 6) Med hjälp av getString-metoden kan vi få värdet av FileName-kolumnen.
# 7) För att få filen, vi har följt stegen nedan:
- Skapa Clob-objekt och tilldela returvärdena för getClob-metoden för ResultSet-objekt.
- Syntax för det är: Clob clob1 = rs.getClob ();
- Skapa Reader-objekt och få värdet av Clob-objektet som tecken.
- Skapa objekt FileWriter-objekt och skicka hela sökvägen för att lagra filen i den sökvägen. Metoden för samtalsskrivning () för FileWrite-objekt - som skriver informationen i filen på platsen.
- Därefter har programmet körts framgångsrikt.
# 8) Gå till platsen för utdatafilen och kontrollera om in- och utdatafilerna är desamma.
Poäng att komma ihåg:
- ACID Properties förklarar Transaction Management in Database.
- Commit (), rollback () och savepoint är de viktigaste operationerna i Transaction Management.
- Commit kommer att göra ändringarna permanent i DB, återställning ångrar ändringarna till det senaste engagemanget eller den nämnda sparpunkten och Savepoint hjälper till att skapa en kontrollpunkt.
- Databasen underhåller SQL-datatyper och Java underhåller Java-datatyper. JDBC-drivrutinen används för att hantera denna konvertering.
- JDBC-drivrutinen i sig har några SQL-typ av identifierare, så programmeraren behöver inte oroa sig för datatyper.
Vanliga frågor
F # 1) Vad är JDBC-datatypen?
Svar: Java har sina datatyper och databasen har sina datatyper. JDBC-drivrutinen konverterar Java-datatypen till lämplig SQL-datatyp som accepteras av databasen. ResultSet-objekt ger också setXXX () -metoder och getXXX () -metoder tillgängliga för lämpliga datatyper.
F # 2) Vad är datatypen för datumet i Java?
Svar: Datumet i Java är inte bara en datatyp utan en klass. Ett datum i Java har datumet, tiden, året, namnet på dagen, veckodagen och tidszonen. Datumklassen har lämpliga metoder för att hämta relevanta data.
F # 3) Vad är skillnaden mellan java.util.Date och java.sql.Date?
Svar: Den största skillnaden är java.util.Date har också information om datum och tid. Men java.sql.Date har endast information om datumet. Detta är den största skillnaden att vi inte kan mappa java.util.Date direkt med java.sql.Date.
F # 4) Har vi en klass i Java som representerar TID och TIMESTAMP-typ för SQL?
Svar: Ja, vi har en klass för TIME och TIMESTAMP-typ för SQL. java.sql.Time-klassen representerar TIME-relaterad information. java.sql.timestamp-klassen representerar TIMESTAMP-relaterad information.
F # 5) Hur startar jag en transaktion i JDBC?
Svar: JDBC-anslutning startar med auto-commit-läge aktiverat, där varje SQL-sats anses vara en transaktion. Det finns ingen specifik process för att starta en transaktion i JDBC. När du skapar en anslutning och börjar köra SQL-satsen är det där transaktionen har startat.
F # 6) Vad är commit () -metoden i Java?
Svar: Metoden Commit () i Java används för att spara ändringarna som gjordes sedan den senaste förpliktelsen (). Commit () -metoden är tillgänglig i anslutningsgränssnittet. Med hjälp av ett anslutningsobjekt kan vi ringa commit ().
F # 7) Vad är återställningsmetoden i Java?
Svar: Efter det senaste förpliktelsen (), om några problem har inträffat, kan vi ringa återställningsmetoden () för att återställa alla ändringar som gjorts tills den senaste förpliktelsen.rollback () är tillgänglig i anslutningsgränssnittet. Med hjälp av ett anslutningsobjekt kan vi ringa återgångsmetoden ().
Slutsats
Här har vi täckt datatyper i Java och DB och hur JDBC-drivrutinen hanterar det. Vi har diskuterat ACID-egenskaper. Det är viktigast för bankområdet. Det kommer att vara till stor hjälp för din karriär. I avsnittet Transaktionshantering har vi diskuterat commit- och rollback-metoder som commit (), rollback (), setAutoCommit (), setSavepoint () och releaseSavepoint ().
Rekommenderad läsning
- Java JDBC-handledning: Vad är JDBC (Java Database Connectivity)
- Java JDBC-anslutningshandledning med programmeringsexempel
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Hur man använder Java ResultSet för att hämta data
- Java datatyper, loopar, arrays, switch och påståenden
- Java Stränglängd () Metod med exempel
- Hur man använder Java toString Method?
- Selen Database Testing (med WebDriver och JDBC API)