java jdbc transaction management with example
Tento výukový program vysvetľuje typy transakcií JDBC, typy údajov, metódy správy transakcií a spôsoby ich použitia v programe Java:
V Sada výsledkov JDBC návod na Séria výukových programov JDBC , sme sa naučili používať JDBC ResultSet na načítanie údajov.
V tomto tutoriáli sa budeme zaoberať typmi transakcií v JDBC. V našich predchádzajúcich tutoriáloch sme videli krátke predstavenie typov transakcií. Tu uvidíme podrobne. Ďalej sa budeme venovať tomu, čo sú dátové typy v JDBC a ako ich používať v programe Java.
Databáza bude mať rôzne dátové typy a Java bude mať rôzne dátové typy. Túto diferenciáciu bude spravovať JDBC. Poďme sa pripraviť na to, aby sme spoznali dôležitú tému v JDBC.
Čo sa dozviete:
Správa transakcií JDBC
Postupnosť akcií (príkazy SQL) sa považuje za jednu jednotku, ktorá sa označuje ako transakcia. Správa transakcií je dôležitá pre aplikácie orientované na RDBMS, aby sa zachovala integrita a konzistencia údajov.
Pri vykonávaní transakcie použijeme na získanie a nastavenie údajov v objekte ResultSet metódy getXXX a setXXX. XXX predstavuje dátové typy stĺpcov. V tomto výučbe sa budeme zaoberať transakčnými a dátovými typmi JDBC.
Typy transakcií
V JDBC sa každý dotaz SQL bude považovať za transakciu. Keď vytvoríme databázové pripojenie v JDBC, bude bežať v režime automatického potvrdenia (hodnota automatického potvrdenia je TRUE). Po vykonaní príkazu SQL bude vykonaný automaticky.
Niekedy môžeme transakciu chcieť vykonať po vykonaní ďalších príkazov SQL. V tom čase musíme nastaviť hodnotu automatického potvrdenia na False. Tieto údaje teda nebudú viazané pred vykonaním všetkých dotazov. Ak v transakcii dostaneme výnimku, môžeme zmeny vrátiť späť () a urobiť ich ako predtým. Správa transakcií sa dá dobre vysvetliť - pomocou vlastností ACID.
KYSELINA znamená
- A – Atomicita -> Ak sa všetky dotazy úspešne vykonajú, údaje budú potvrdené, inak nebudú.
- C – Konzistencia -> DB musí byť po každej transakcii v konzistentnom stave.
- I– Izolácia -> Transakcia je izolovaná od ostatných transakcií.
- D – Trvanlivosť -> Ak je transakcia vykonaná raz, zostane vždy vykonaná.
V správe transakcií sú tri najdôležitejšie funkcie. Oni sú:
implementácia triedenia bublín c ++
- Odovzdať: Po vykonaní príkazov SQL chceme vykonať zmeny natrvalo v databáze. Mali by sme zavolať metódu commit (). Čo je potvrdenie, zvyčajne znamená, že sa zmeny vykonajú natrvalo v databáze. Zmeny nemôžeme vrátiť / odvolať. Môžeme však zmeniť údaje v databáze.
- Vrátenie zmien: Vrátenie zmien späť vráti zmeny až do posledného potvrdenia alebo spomenutého bodu uloženia. Niekedy môžeme chcieť zmeny vrátiť späť. Napríklad, máme jeden vnorený dotaz, jedna časť bola úspešne vykonaná a druhá vyvolala určitú výnimku. V tom čase chceme vrátiť späť zmeny vykonané v prvej časti, mali by sme na to zavolať metódu Rollback (), ak by došlo k výnimke.
- Bod uloženia: Savepoint pomáha vytvárať kontrolný bod v transakcii a umožňuje vykonať rollback k danému konkrétnemu bodu uloženia. Akýkoľvek bod uloženia, ktorý bol vytvorený pre transakciu, bude automaticky zničený a stane sa neplatným, akonáhle bude transakcia potvrdená alebo vrátená späť.
Doteraz sme videli, čo je commit, rollback a savepoint a jeho operácie. Ďalej uvidíme jeho metódy a spôsob použitia v programe.
Metódy riadenia transakcií
Rozhranie pripojenia poskytuje 5 spôsobov správy transakcií. Sú to tieto:
# 1) metóda setAutoCommit ()
V predvolenom nastavení je hodnota hodnoty AutoCommit TRUE. Po vykonaní príkazu SQL bude vykonaný automaticky. Použitím metódy setAutoCommit () môžeme nastaviť hodnotu na AutoCommit.
# 2) Metóda Commit ()
Na potvrdenie údajov sa používa metóda potvrdenia. Po vykonaní príkazu SQL môžeme nazvať commit (). Vykoná zmeny, ktoré vykoná príkaz SQL.
Syntax: conn.commit ();
# 3) Metóda rollback ()
Na vrátenie zmien do posledného potvrdenia sa používa metóda vrátenia. Ak narazíme na akýkoľvek problém alebo výnimku v postupe vykonávania príkazov SQL, môžeme transakciu vrátiť späť.
Syntax: conn.rollback ();
# 4) Metóda setSavepoint ()
Savepoint vám dáva ďalšiu kontrolu nad transakciou. Keď v transakcii nastavíte bod uloženia (skupina príkazov SQL), môžete pomocou metódy rollback () vrátiť späť všetky zmeny až do bodu uloženia alebo za bod uloženia (). Metóda setSavepoint () sa používa na vytvorenie nového bodu uloženia.
# 5) metóda releaseSavepoint ()
Používa sa na odstránenie vytvoreného bodu uloženia.
V nižšie uvedenom programe sa dozviete viac o týchto metódach a tiež sa dozviete, ako ich používať v programe Java.
V tejto príručke sú všetky programy napísané v jazyku Java. Použili sme verziu Java 8 a Oracle DB.
>> Kliknite tu na stiahnutie softvéru Oracle.
>> Kliknite tu na stiahnutie Java verzie 8.
Má proces inštalácie Java krok za krokom.
Vzorový program transakcie
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ýkon:
Vysvetlenie:
To, čo sme vykonali vo vyššie uvedenom programe riadenia transakcií, je aktualizácia hodnôt daného zamestnanca v tabuľke EMPLOYEE_DETAILS a potvrdenie údajov. Ak sa vyskytla chyba alebo výnimka, vykonali sme operáciu rollback (). Teraz uvidíme úplné vysvetlenie programu.
# 1) Vytvorené 2 Vyberte dotaz pre 2 zamestnancov na základe ich EMPID
Nižšie sú uvedené 2 vybrané dotazy.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#dva) Vytvorili dva aktualizačné dotazy pre 2 zamestnancov na základe ich 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) Otvorte pripojenie, vykonajte výberový dopyt a zobrazte údaje EMPNUM = 2001.
# 4) Pomocou metódy setAutoCommit () nastavte hodnotu autoCommit na hodnotu false.
# 5) Vykonal aktualizačný dotaz EMPNUM = 2001 a vytvoril ďalšie pripojenie pre rovnakú databázu a vybral hodnotu EMPNUM = 2001.
# 6) Výsledné údaje zamestnanca, ktorého EMPNUM = 2001 nie je aktualizovaným údajom. Pretože sme neurobili operáciu commit (). Ak ste použili rovnaké pripojenie, ktoré ste použili na aktualizáciu, zobrazí sa vám aktualizované údaje. Teraz boli údaje zadané. Údaje sa prejavili v tabuľke.
# 7) Po operácii potvrdenia bol vytvorený jeden bod uloženia.
# 8) Použitie výberového dotazu na zobrazenie údajov EMPNUM = 2002. Zmenil sa plat tohto zamestnanca pomocou aktualizačného dotazu. Potom sa pomocou rovnakého pripojenia zobrazili údaje EMPNUM = 2002. Mal by zobrazovať aktualizované údaje.
# 9) Vykonajte vrátenie do posledného bodu uloženia pomocou metódy vrátenia späť. Teraz, keď sme zobrazili údaje tohto zamestnanca pomocou rovnakého pripojenia, majú staré údaje, pretože vrátenie späť vráti zmeny do posledného bodu uloženia, ak spomenieme miesto uloženia iné do posledného potvrdenia.
# 10) Vytvorili sme jednu metódu, ktorá bude zobrazovať údaje, pretože tu zobrazujeme údaje mnohokrát.
Dátové typy JDBC
Databázy majú dátové typy SQL a Java má dátové typy Java. Mal by existovať mechanizmus na čítanie a zápis údajov medzi aplikáciou Java a databázou. Rôzne databázy podporujú typy SQL, ale s náznakovými zmenami.
Napríklad, väčšina databáz podporuje veľké binárne hodnoty, Oracle ho nazýva LONG RAW, Sybase ako IMAGE, Informix ako BYTE a DB2 ako LONG VARCHAR PRE BITOVÉ ÚDAJE.
Pri písaní programu JDBC sa nemusíme starať o dátové typy SQL používané cieľovou databázou. JDBC má skupinu generických identifikátorov typu SQL v triede java.sql.Types. Tieto typy sú určené na podporu väčšiny všeobecných údajových typov SQL. Pri písaní programu JDBC budeme používať iba dátové typy JDBC.
Ovládač JDBC prevádza dátové typy Java tam a späť na dátové typy databázy. Pomocou metódy java.sql.DatabaseMetaData.getTypeInfo môžete skontrolovať, ktoré typy SQL sú danou databázou skutočne podporované, a potom napísať program. JDBC používa predvolené mapovanie pre väčšinu dátových typov.
Napríklad, reťazec Java sa prevedie na typ SQL VARCHAR.
Uvidíme, ako sa mapuje v metóde setXXX, getXXX a updateXXX pripraveného rozhrania ReadyStatement alebo CallableStatement alebo ResultSet v nasledujúcej tabuľke:
TYP SQL | TYP JAVA / JDBC | setXXX | getXXX | updateXXX |
---|---|---|---|---|
INTEGER | int | setInt | tónovaný | updateInt |
CHAR | java.lang.String | setString | getString | updateString |
VARCHAR | java.lang.String | setString | getString | updateString |
LONGVARCHAR | java.lang.String | setString | getString | updateString |
TROCHA | boolovský | setBoolean | getBoolean | updateBoolean |
NUMERICKÉ | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALLINT | krátky | setShort | getShort | updateShort |
VEĽKÝ | dlho | setLong | getLong | updateLong |
REÁLNY | plavák | setFloat | getFloat | updateFloat |
PLAVÁK | plavák | setFloat | getFloat | updateFloat |
DVOJNÁSOBNÝ | dvojitý | setDouble | getDouble | updateDouble |
BINÁRNY | bajt () | setBytes | getBytes | updateBytes |
DÁTUM | java.sql.Date | setDate | getDate | updateDate |
TIME | java.sql.Time | nastaviť čas | getTime | updateTime |
ČASOVÁ ZNAČKA | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
CLOB | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
POLE | Pole | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Štruktúrovaný typ | Objekt | setObject | getObject | updateObject |
V našich predchádzajúcich tutoriáloch sme pre základné dátové typy nastavili metódu setXXX, getXXX a updateXXX. Môžete sa na to odvolať.
Tu sme v nasledujúcom príklade vysvetlili typy clob a blob.
Vzorový program 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ýkon:
Súbor bol úspešne uložený na zadanú cestu.
Vysvetlenie:
Vo vyššie uvedenom programe je to, že najskôr sme vytvorili alebo uložili jeden obrázok do priečinka 'D: \ Bhakiya \ Bhakiya \ JDBC' . Toto umiestnenie je len napr. Vo svojom systéme si môžete vytvoriť vlastnú cestu k súboru. Názov súboru je Obrázok testovania softvéru. Potom sme vytvorili jeden program Java na uloženie tohto obrázka do tabuľky DB a získanie obrázka z tabuľky a jeho uloženie do lokálneho systému.
Doteraz sme diskutovali o prehľade úlohy. Teraz uvidíme, ako sme to v programe dosiahli.
# 1) Vytvorte jednu tabuľku v DB na uloženie obrázka.
Syntax:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
Vo vyššie uvedenom dotaze máme 2 stĺpce.
- PicName - varchar2 -> Slúži na uloženie názvu obrázka
- obrázok - BLOB -> Slúži na uloženie obrázka v tabuľke.
Dátový typ BLOB sa používa na uloženie obrázka / obrázka do tabuľky DB.
#dva) Na vykonanie dotazu CREATE bolo vytvorené spojenie a vyhlásenie, ktoré bolo nazvané metóda spustenia.
statemnt1.execute(QUERY);
# 3) Ďalej sme vytvorili vkladací dotaz a vykonali ho pomocou PreparedStatement.
Syntax PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Pomocou setString () - nastavte názov obrázka.
# 5) Ak chcete nastaviť obrázok, použite triedu FileInputStream na odovzdanie umiestnenia obrázka.
Syntax:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Potom pomocou metódy setBlob () môžeme nastaviť obrázok v objekte PreparedStatement. Potom sa nazýva metóda vykonania PreparedStatement. Tým sa vložia dané údaje do tabuľky.
Po vykonaní vkladacieho dotazu pomocou objektu ResultSet načítame údaje z tabuľky (pomocou nástroja Select Query).
# 6) Použitím metódy getString môžeme získať hodnotu stĺpca PicName.
# 7) Ak chcete získať obrázok, postupujte podľa nasledujúcich krokov:
- Vytvorte objekt Blob a priraďte návratové hodnoty metódy getBlob objektu ResultSet.
- Syntax pre toto je: Blob blob1 = rs.getBlob ();
- Vytvorte objekt bajtového poľa a získajte hodnotu objektu Blob ako bajty.
- Vytvorte objekt FileOutputStream a odovzdajte celú cestu, aby ste uložili obrázok do tejto cesty. Zavolajte metódu write () objektu FileOutputStream - ktorá uloží obrázok.
- Potom bol program úspešne vykonaný.
# 8) Prejdite do umiestnenia výstupného obrázka a skontrolujte, či sú vstup a výstup rovnaké.
CLOB Vzorový program
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ýkon:
Vstupný súbor:
Súbor bol úspešne uložený na zadanú cestu.
Výstupný súbor:
Vysvetlenie:
Vo vyššie uvedenom programe sme najskôr vytvorili / uložili jeden textový súbor „file1.txt“ do priečinka „D: \ Bhakiya \ Bhakiya \ JDBC“. Toto umiestnenie je len napr. Vo svojom systéme si môžete vytvoriť vlastnú cestu k súboru. Potom sme vytvorili jeden program Java na uloženie tohto súboru do tabuľky DB a jeho získanie z tabuľky a jeho uloženie do lokálneho systému.
Doteraz sme diskutovali o prehľade úlohy. Teraz uvidíme, ako sme to v programe dosiahli.
# 1) Vytvorte jednu tabuľku v DB na uloženie obrázka.
Nižšie je uvedená syntax dotazu CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
Vo vyššie uvedenom dotaze máme 2 stĺpce.
- FileName - varchar2 -> Slúži na uloženie názvu obrázka.
- StoreFile - CLOB -> Slúži na uloženie súboru v tabuľke.
Dátový typ CLOB sa používa na ukladanie znakového typu binárnych údajov do tabuľky DB
#dva) Na vykonanie dotazu CREATE bolo vytvorené spojenie a vyhlásenie, ktoré bolo nazvané metóda spustenia.
statemnt1.execute(QUERY);
# 3) Ďalej sme vytvorili vkladací dotaz a vykonali ho pomocou PreparedStatement.
Syntax PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Pomocou setString () - nastavte názov FileName.
# 5) Ak chcete nastaviť / uložiť súbor, použite triedu FileReader na odovzdanie súboru s umiestnením výplne.
Syntax:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Potom pomocou metódy setClob () môžeme súbor nastaviť v objekte PreparedStatement. Potom sa volala metóda vykonania PreparedStatement. Tým sa vložia dané údaje do tabuľky.
Po vykonaní vkladacieho dotazu pomocou objektu ResultSet načítame údaje z tabuľky (pomocou nástroja Select Query).
Vyberte dopyt:
'select * from Clob_Sample_Example'
# 6) Pomocou metódy getString môžeme získať hodnotu stĺpca FileName.
# 7) Ak chcete získať súbor, postupovali sme podľa nasledujúcich krokov:
- Vytvorte objekt Clob a priraďte návratové hodnoty metódy getClob objektu ResultSet.
- Syntax pre toto je: Clob clob1 = rs.getClob ();
- Vytvorte objekt Reader a získajte hodnotu objektu Clob ako Character.
- Vytvorte objekt FileWriter objekt a zadajte úplnú cestu na uloženie súboru v tejto ceste. Zavolajte metódu write () objektu FileWrite - ktorá zapíše údaje do súboru na danom mieste.
- Potom bol program úspešne vykonaný.
# 8) Prejdite do umiestnenia výstupného súboru a skontrolujte, či sú vstupné a výstupné súbory rovnaké.
Body na zapamätanie:
- Vlastnosti ACID vysvetľujú správu transakcií v databáze.
- Commit (), rollback () a bod uloženia sú najdôležitejšie operácie v správe transakcií.
- Commit urobí zmeny natrvalo v DB, Rollback vráti zmeny späť až do posledného potvrdenia alebo spomínaného bodu uloženia a Savepoint pomôže vytvoriť kontrolný bod.
- Databáza udržiava dátové typy SQL a Java udržuje dátové typy Java. Na spracovanie tejto konverzie sa používa ovládač JDBC.
- Samotný ovládač JDBC má nejaký typ identifikátorov SQL, takže programátor si nemusí robiť starosti s dátovými typmi.
často kladené otázky
Otázka 1) Čo je dátový typ JDBC?
Odpoveď: Java má svoje dátové typy a databáza má svoje dátové typy. Ovládač JDBC prevádza údajový typ Java na vhodný údajový typ SQL, ktorý bude akceptovať databáza. Objekty ResultSet tiež poskytujú metódy setXXX () a getXXX () dostupné pre príslušné dátové typy.
Otázka 2) Aký je dátový typ pre dátum v Jave?
Odpoveď: Dátum v jazyku Java nie je iba údajový typ, ale aj trieda. Dátum v Jave má dátum, čas, rok, názov dňa, deň v týždni a časové pásmo. Trieda dátumu má príslušné metódy na získanie relevantných údajov.
Otázka 3) Aký je rozdiel medzi java.util.Date a java.sql.Date?
Odpoveď: Hlavný rozdiel je java.util.Date, ktorý obsahuje aj informácie o dátume a čase. Ale java.sql.Date má informácie iba o dátume. Toto je hlavný rozdiel, ktorý nemôžeme mapovať java.util.Date priamo s java.sql.Date.
Otázka č. 4) Máme v Jave triedu, ktorá predstavuje typ TIME a TIMESTAMP pre SQL?
Odpoveď: Áno, máme triedu pre TIME a typ TIMESTAMP pre SQL. java.sql.Time trieda predstavuje informácie súvisiace s TIME. trieda java.sql.timestamp predstavuje informácie súvisiace s TIMESTAMP.
Otázka č. 5) Ako začať transakciu v JDBC?
Odpoveď: Pripojenie JDBC sa začína povoleným režimom automatického potvrdenia, kde sa každý príkaz SQL považuje za transakciu. V JDBC neexistuje žiadny konkrétny proces na spustenie transakcie. Keď vytvoríte spojenie a začnete vykonávať príkaz SQL, tam sa transakcia začala.
Otázka 6) Čo je metóda commit () v Jave?
Odpoveď: Metóda Commit () v Jave sa používa na uloženie zmien vykonaných od posledného potvrdenia (). Metóda Commit () je k dispozícii v rozhraní Pripojenie. Pomocou objektu pripojenia môžeme nazvať commit ().
Otázka č. 7) Aká je metóda vrátenia v Jave?
Odpoveď: Po poslednom potvrdení (), ak sa vyskytnú nejaké problémy, môžeme zavolať metódu rollback (), ktorá vráti všetky vykonané zmeny, kým nebude k dispozícii posledná metóda commit.rollback () v rozhraní pripojenia. Pomocou objektu pripojenia môžeme nazvať metódu rollback ().
Záver
Tu sme pokryli dátové typy v Jave a DB a ako to ovládač JDBC spracováva. Diskutovali sme o vlastnostiach kyselín. To je najdôležitejšie pre oblasť bankovníctva. Bude to veľmi užitočné pre vašu kariéru. V časti Správa transakcií sme diskutovali o metódach potvrdenia a vrátenia, ako sú commit (), rollback (), setAutoCommit (), setSavepoint () a releaseSavepoint ().
Odporúčané čítanie
- Výukový program Java JDBC: Čo je JDBC (pripojenie k databáze Java)
- Výukový program pre pripojenie Java JDBC s príkladom programovania
- JDBC DriverManager, JDBC PreparedStatement And Statement
- JDBC ResultSet: Ako používať Java ResultSet na načítanie údajov
- Java dátové typy, slučky, polia, prepínače a tvrdenia
- Metóda Java String length () s príkladmi
- Ako používať metódu Java toString?
- Testovanie databázy selénu (pomocou WebDriver a JDBC API)