java jdbc transaction management with example
Tento výukový program vysvětluje typy transakcí JDBC, datové typy, metody správy transakcí a způsob jejich použití v programu Java:
V Sada výsledků JDBC návod na Série výukových programů JDBC , jsme se naučili používat JDBC ResultSet k načítání dat.
V tomto kurzu probereme typy transakcí v JDBC. V našich předchozích cvičeních jsme viděli krátký úvod do typů transakcí. Zde uvidíme podrobně. Také se budeme zabývat tím, jaké jsou datové typy v JDBC a jak je používat v programu Java.
Databáze bude mít různé datové typy a Java bude mít různé datové typy. Toto rozlišení bude spravovat JDBC. Připravme se na důležité téma v JDBC.
Co se naučíte:
Správa transakcí JDBC
Sekvence akcí (příkazy SQL) je považována za jednu jednotku, která je známá jako transakce. Správa transakcí je pro aplikace orientované na RDBMS důležitá pro zachování integrity a konzistence dat.
Při provádění transakce použijeme metody getXXX a setXXX k načtení a nastavení dat v objektu ResultSet. XXX představuje datové typy sloupců. V tomto kurzu probereme transakční a datové typy JDBC.
Typy transakcí
V JDBC bude každý dotaz SQL považován za transakci. Když vytvoříme připojení k databázi v JDBC, bude spuštěno v režimu automatického potvrzení (hodnota automatického potvrzení je PRAVDA). Po provedení příkazu SQL bude potvrzen automaticky.
Někdy můžeme chtít transakci potvrdit po provedení některých dalších příkazů SQL. V té době musíme nastavit hodnotu automatického potvrzení na False. Tato data tedy nebudou potvrzena před provedením všech dotazů. Pokud v transakci získáme výjimku, můžeme vrátit změny () a provést ji jako dříve. Správa transakcí lze vysvětlit dobře - pomocí vlastností ACID.
KYSELINA znamená
- A – Atomicita -> Pokud budou všechny dotazy úspěšně provedeny, budou data potvrzena, jinak nebudou.
- C – Konzistence -> DB musí být po jakékoli transakci v konzistentním stavu.
- I– Izolace -> Transakce je izolována od ostatních transakcí.
- D – Trvanlivost -> Pokud je transakce potvrzena jednou, zůstane vždy potvrzena.
Ve správě transakcí jsou tři nejdůležitější funkce. Oni jsou:
jak otevřít SWF s Adobe Flash Player
- Spáchat: Po provedení příkazů SQL chceme provést změny trvalé v databázi. Měli bychom zavolat metodu commit (). Normálně to, co je potvrzení, znamená, že provede změny trvale v databázi. Změny nemůžeme vrátit / odvolat. Ale můžeme změnit data v databázi.
- Rollback: Vrátit zpět vrátí změny až do posledního potvrzení nebo zmíněného bodu uložení. Někdy můžeme chtít změny vrátit zpět. Například, máme jeden vnořený dotaz, jedna část byla úspěšně provedena a druhá vyvolala nějakou výjimku. V té době chceme vrátit zpět změny provedené první částí, měli bychom zavolat metodu Rollback (), abychom to udělali, pokud došlo k výjimce.
- Bod uložení: Savepoint pomáhá vytvořit kontrolní bod v transakci a umožňuje provést vrácení zpět k danému konkrétnímu bodu uložení. Jakýkoli bod uložení, který byl vytvořen pro transakci, bude automaticky zničen a stane se neplatným, jakmile bude transakce potvrzena nebo vrácena zpět.
Doposud jsme viděli, co je commit, rollback a savepoint a jeho operace. Níže uvidíme jeho metody a použití v programu.
Metody řízení transakcí
Rozhraní připojení poskytuje 5 metod pro správu transakcí. Jsou to následující:
# 1) metoda setAutoCommit ()
Ve výchozím nastavení je hodnota hodnoty AutoCommit TRUE. Po provedení příkazu SQL bude potvrzen automaticky. Pomocí metody setAutoCommit () můžeme nastavit hodnotu na AutoCommit.
# 2) Metoda potvrzení ()
K potvrzení dat se používá metoda potvrzení. Po provedení příkazu SQL můžeme zavolat commit (). Potvrdí změny provedené příkazem SQL.
Syntax: conn.commit ();
# 3) Metoda vrácení zpět ()
Metoda vrácení zpět se používá k vrácení změn, dokud nedošlo k poslednímu potvrzení. Pokud narazíme na jakýkoli problém nebo výjimku v průběhu provádění příkazů SQL, můžeme transakci vrátit zpět.
Syntax: conn.rollback ();
# 4) Metoda setSavepoint ()
Savepoint vám dává další kontrolu nad transakcí. Když v transakci nastavíte bod uložení (skupina příkazů SQL), můžete pomocí metody rollback () vrátit všechny změny až do bodu uložení nebo po bodu uložení (). Metoda setSavepoint () se používá k vytvoření nového bodu uložení.
# 5) metoda releaseSavepoint ()
Slouží k odstranění vytvořeného bodu uložení.
V níže uvedeném programu se dozvíte více o těchto metodách a také se naučíte, jak je používat v programu Java.
V tomto výukovém programu jsou všechny programy napsány v jazyce Java. Použili jsme verzi Java 8 a Oracle DB.
>> Klikněte tady stáhnout software Oracle.
>> Klikněte tady ke stažení Java verze 8.
Má postup instalace Java krok za krokem.
Příklad transakčního programu
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); } } }
Výstup:
Vysvětlení:
Ve výše uvedeném programu správy transakcí jsme provedli aktualizaci hodnot daného zaměstnance v tabulce EMPLOYEE_DETAILS a potvrzení dat. Pokud došlo k nějaké chybě nebo výjimce, provedli jsme operaci rollback (). Nyní uvidíme úplné vysvětlení programu.
# 1) Vytvořeno 2 Vyberte dotaz pro 2 zaměstnance na základě jejich EMPID
Níže jsou 2 vybrané dotazy.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#dva) Vytvořili dva aktualizační dotazy pro 2 zaměstnance na základě jejich EMPID
Dva aktualizované dotazy:
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) Otevřete připojení, proveďte výběrový dotaz a zobrazte data EMPNUM = 2001.
# 4) Pomocí metody setAutoCommit () nastavte hodnotu autoCommit na hodnotu false.
# 5) Provedl aktualizační dotaz EMPNUM = 2001 a vytvořil další připojení pro stejnou databázi a vybral hodnotu EMPNUM = 2001.
# 6) Výsledná data zaměstnance, jehož EMPNUM = 2001 není aktualizovaným údajem. Protože jsme neprovedli operaci commit (). Pokud jste použili stejné připojení, kde jste jej použili k aktualizaci, zobrazí se vám aktualizovaná Data. Nyní potvrzena data. Data byla zohledněna v tabulce.
# 7) Po operaci potvrzení byl vytvořen jeden bod uložení.
# 8) Použití výběrového dotazu k zobrazení dat EMPNUM = 2002. Změněn plat daného zaměstnance pomocí aktualizačního dotazu. Poté se zobrazila data EMPNUM = 2002 při použití stejného připojení. Mělo by se zobrazit aktualizovaná data.
# 9) Hotovo vrácení zpět do posledního bodu uložení pomocí metody vrácení zpět. Nyní, když jsme zobrazili data tohoto zaměstnance pomocí stejného připojení, má stará data, protože vrácení zpět zruší změny až do posledního bodu uložení, pokud zmíníme bod uložení jiný k poslednímu potvrzení.
# 10) Vytvořili jsme jednu metodu, která bude zobrazovat data, protože zde zobrazujeme data mnohokrát.
Datové typy JDBC
Databáze mají datové typy SQL a Java má datové typy Java. Měl by existovat mechanismus pro čtení a zápis dat mezi aplikací Java a databází. Různé databáze podporují typy SQL, ale s některými variantami názvu.
Například, většina databází podporuje velké binární hodnoty, Oracle jej nazývá LONG RAW, Sybase jako IMAGE, Informix jako BYTE a DB2 jako LONG VARCHAR FOR BIT DATA.
Při psaní programu JDBC se nemusíme starat o datové typy SQL používané cílovou databází. JDBC má sadu obecných identifikátorů typu SQL ve třídě java.sql.Types. Tyto typy jsou navrženy tak, aby podporovaly většinu obecných datových typů SQL. Při psaní programu JDBC budeme používat pouze datové typy JDBC.
Ovladač JDBC převede datové typy Java na datové typy databáze tam a zpět. Pomocí metody java.sql.DatabaseMetaData.getTypeInfo můžete zkontrolovat, které typy SQL jsou danou databází skutečně podporovány, a poté napsat program. JDBC používá výchozí mapování pro většinu datových typů.
Například, řetězec Java bude převeden na typ SQL VARCHAR.
Uvidíme, jak se mapování provádí v metodách setXXX, getXXX a updateXXX pro rozhraní readyStatement nebo CallableStatement nebo ResultSet v následující tabulce:
TYP SQL | TYP JAVA / JDBC | setXXX | getXXX | updateXXX |
---|---|---|---|---|
CELÉ ČÍSLO | int | setInt | tónovaný | updateInt |
CHAR | řetězec java.lang | setString | getString | updateString |
VARCHAR | řetězec java.lang | setString | getString | updateString |
DLOUHODOBÝ | řetězec java.lang | setString | getString | updateString |
BIT | booleovský | setBoolean | getBoolean | updateBoolean |
NUMERICKÉ | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALLINT | krátký | nastavitKrátce | getShort | updateShort |
VELKÝ | dlouho | setLong | getLong | updateLong |
NEMOVITÝ | plovák | setfloat | getFloat | updateFloat |
PLOVÁK | plovák | setfloat | getFloat | updateFloat |
DVOJNÁSOBEK | dvojnásobek | setDouble | getDouble | updateDouble |
BINARY | byte() | setBytes | getBytes | updateBytes |
DATUM | java.sql.Date | setDate | getDate | updateDate |
ČAS | java.sql.Time | setTime | getTime | updateTime |
TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
KAPKA | java.sql.Blob | setBlob | getBlob | updateBlob |
POLE | Pole | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Strukturovaný typ | Objekt | setObject | getObject | updateObject |
V našich předchozích cvičeních máme metodu setXXX, getXXX a updateXXX pro základní datové typy. Můžete se na to odvolat.
Zde jsme v následujícím příkladu vysvětlili typy clob a blob.
Příklad programu 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(); } } }
Výstup:
Soubor byl úspěšně uložen na danou cestu.
Vysvětlení:
Ve výše uvedeném programu jsme udělali Nejprve jsme vytvořili / uložili jeden obrázek do složky 'D: \ Bhakiya \ Bhakiya \ JDBC' . Toto umístění je pouze pro příklad. Ve svém systému si můžete vytvořit vlastní cestu k souboru. Název souboru je obrázek pro testování softwaru. Poté jsme vytvořili jeden program Java pro uložení tohoto obrázku do tabulky DB a načtení obrázku z tabulky a jeho uložení do místního systému.
Až dosud jsme probrali přehled úkolu. Nyní uvidíme, jak jsme toho v programu dosáhli.
# 1) Vytvořte jednu tabulku v DB pro uložení obrázku.
Syntax:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
Ve výše uvedeném dotazu máme 2 sloupce.
- PicName - varchar2 -> Slouží k uložení názvu obrázku
- obrázek - BLOB -> Slouží k uložení obrázku v tabulce.
Datový typ BLOB se používá k uložení obrázku / obrázku v tabulce DB.
#dva) Pro spuštění CREATE Query bylo vytvořeno připojení a prohlášení a nazývá se metoda execute.
statemnt1.execute(QUERY);
# 3) Dále jsme vytvořili vkládací dotaz a provedli jej pomocí PreparedStatement.
Syntaxe PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Pomocí setString () - nastavte název obrázku.
# 5) Chcete-li nastavit obrázek, použijte třídu FileInputStream k předání umístění obrázku.
Syntax:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Potom pomocí metody setBlob () můžeme nastavit obrázek v objektu PreparedStatement. Poté se nazývá metoda provedení PreparedStatement. Tím vložíte zadaná data do tabulky.
Po provedení vkládacího dotazu pomocí objektu ResultSet načítáme data z tabulky (pomocí Select Query).
# 6) Pomocí metody getString můžeme získat hodnotu sloupce PicName.
# 7) Chcete-li získat obrázek, postupujte podle následujících kroků:
- Vytvořte objekt Blob a přiřaďte návratové hodnoty metody getBlob objektu ResultSet.
- Syntaxe pro toto je: Blob blob1 = rs.getBlob ();
- Vytvořte objekt bajtového pole a získejte hodnotu objektu Blob jako bajty.
- Vytvořte objekt FileOutputStream a předejte úplnou cestu k uložení obrázku do této cesty. Volejte metodu write () objektu FileOutputStream - který uloží obrázek.
- Poté byl program úspěšně proveden.
# 8) Přejděte do umístění výstupního obrázku a zkontrolujte, zda jsou vstup a výstup stejné.
Ukázkový program 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(); } } }
Výstup:
Vložte soubor:
Soubor byl úspěšně uložen na danou cestu.
Výstupní soubor:
Vysvětlení:
Ve výše uvedeném programu jsme nejprve vytvořili / uložili jeden textový soubor „file1.txt“ do složky „D: \ Bhakiya \ Bhakiya \ JDBC“. Toto umístění je pouze pro příklad. Ve svém systému si můžete vytvořit vlastní cestu k souboru. Poté jsme vytvořili jeden program Java pro uložení tohoto souboru do tabulky DB a načtení tohoto souboru z tabulky a jeho uložení do místního systému.
Až dosud jsme probrali přehled úkolu. Nyní uvidíme, jak jsme toho v programu dosáhli.
# 1) Vytvořte jednu tabulku v DB pro uložení obrázku.
Níže je uvedena syntaxe dotazu CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
Ve výše uvedeném dotazu máme 2 sloupce.
- FileName - varchar2 -> Slouží k uložení názvu obrázku.
- StoreFile - CLOB -> Slouží k uložení souboru v tabulce.
Datový typ CLOB se používá k ukládání typu znaků binárních dat v tabulce DB
#dva) Pro spuštění CREATE Query bylo vytvořeno připojení a prohlášení a nazývá se metoda execute.
statemnt1.execute(QUERY);
# 3) Dále jsme vytvořili vkládací dotaz a provedli jej pomocí PreparedStatement.
Syntaxe PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Pomocí setString () - nastavte název FileName.
# 5) Chcete-li nastavit / uložit soubor, použijte třídu FileReader k předání souboru s umístěním výplně.
Syntax:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Pak pomocí metody setClob () můžeme nastavit soubor v objektu PreparedStatement. Poté se nazývá metoda spuštění PreparedStatement. Tím vložíte zadaná data do tabulky.
Po provedení vkládacího dotazu pomocí objektu ResultSet načítáme data z tabulky (pomocí Select Query).
Vyberte dotaz:
'select * from Clob_Sample_Example'
# 6) Pomocí metody getString můžeme získat hodnotu sloupce FileName.
# 7) Chcete-li získat soubor, postupovali jsme podle následujících kroků:
- Vytvořte objekt Clob a přiřaďte návratové hodnoty metody getClob objektu ResultSet.
- Syntaxe pro toto je: Clob clob1 = rs.getClob ();
- Vytvořte objekt Reader a získejte hodnotu objektu Clob jako Character.
- Vytvořte objekt FileWriter objekt a předejte úplnou cestu k uložení souboru do této cesty. Volejte metodu write () objektu FileWrite - která zapíše data do souboru v umístění.
- Poté byl program úspěšně proveden.
# 8) Přejděte do umístění výstupního souboru a zkontrolujte, zda jsou vstupní a výstupní soubory stejné.
Body k zapamatování:
- Vlastnosti ACID vysvětlují správu transakcí v databázi.
- Commit (), rollback () a bod uložení jsou nejdůležitější operace ve správě transakcí.
- Commit provede změny trvale v DB, Rollback zruší změny až do posledního potvrzení nebo zmíněný Savepoint a Savepoint pomůže vytvořit kontrolní bod.
- Databáze udržuje datové typy SQL a Java udržuje datové typy Java. Pro zpracování tohoto převodu se používá ovladač JDBC.
- Samotný ovladač JDBC má nějaký identifikátor typu SQL, takže si programátor nemusí dělat starosti s datovými typy.
Často kladené otázky
Otázka č. 1) Co je datový typ JDBC?
Odpovědět: Java má své datové typy a databáze má své datové typy. Ovladač JDBC převádí datový typ Java na příslušný datový typ SQL, který bude akceptovat databáze. Objekty ResultSet také poskytují metody setXXX () a metody getXXX () dostupné pro příslušné datové typy.
Otázka 2) Jaký je datový typ pro datum v Javě?
Odpovědět: Datum v Javě není jen datový typ, ale i třída. Datum v Javě má datum, čas, rok, název dne, den v týdnu a časové pásmo. Třída Date má příslušné metody k načtení příslušných dat.
Otázka 3) Jaký je rozdíl mezi java.util.Date a java.sql.Date?
Odpovědět: Hlavní rozdíl je java.util.Date má také informace o datu a čase. Ale java.sql.Date má informace pouze o datu. To je hlavní rozdíl, který nemůžeme mapovat java.util.Date přímo s java.sql.Date.
Otázka č. 4) Máme v Javě třídu, která představuje typ TIME a TIMESTAMP pro SQL?
Odpovědět: Ano, máme třídu pro TIME a typ TIMESTAMP pro SQL. Třída java.sql.Time představuje informace související s TIME. Třída java.sql.timestamp představuje informace související s TIMESTAMP.
Otázka č. 5) Jak zahájit transakci v JDBC?
Odpovědět: Připojení JDBC začíná povoleným režimem automatického potvrzení, kde je každý příkaz SQL považován za transakci. Neexistuje žádný konkrétní proces pro zahájení transakce v JDBC. Když vytvoříte připojení a začnete spouštět příkaz SQL, tam začala transakce.
Otázka č. 6) Co je metoda commit () v Javě?
Odpovědět: Metoda Commit () v Javě se používá k uložení změn provedených od posledního potvrzení (). Metoda Commit () je k dispozici v rozhraní připojení. Pomocí objektu připojení můžeme zavolat commit ().
Otázka č. 7) Co je metoda vrácení zpět v Javě?
Odpovědět: Po posledním potvrzení (), pokud dojde k jakýmkoli problémům, můžeme zavolat metodu rollback () a vrátit všechny provedené změny, dokud není v rozhraní Connection k dispozici poslední metoda commit.rollback (). Pomocí objektu připojení můžeme zavolat metodu rollback ().
Závěr
Zde jsme pokryli datové typy v Javě a DB a jak s nimi ovladač JDBC zachází. Diskutovali jsme o vlastnostech kyselin. To je nejdůležitější pro oblast bankovnictví. Bude to velmi užitečné pro vaši kariéru. V části Správa transakcí jsme diskutovali o metodách potvrzení a vrácení, jako jsou commit (), rollback (), setAutoCommit (), setSavepoint () a releaseSavepoint ().
Doporučené čtení
- Výukový program Java JDBC: Co je JDBC (Java Database Connectivity)
- Výukový program pro připojení Java JDBC s příkladem programování
- JDBC DriverManager, JDBC PreparedStatement And Statement
- JDBC ResultSet: Jak používat sadu Java ResultSet k načtení dat
- Java DataTypes, Loops, Arrays, Switch a Assertions
- Metoda délky Java String () S příklady
- Jak používat metodu Java toString?
- Testování databáze selenu (pomocí WebDriver a JDBC API)