java jdbc transaction management with example
Ta vadnica razlaga vrste transakcij JDBC, vrste podatkov, metode upravljanja transakcij in kako jih uporabiti v programu Java:
V JDBC ResultSet vadnica Serija vadnic JDBC smo se naučili uporabljati JDBC ResultSet za pridobivanje podatkov.
V tej vadnici bomo obravnavali vrste transakcij v JDBC. V naših prejšnjih vajah smo videli kratek uvod v vrste transakcij. Tu bomo videli podrobno. Pokrili bomo tudi, kateri so podatkovni tipi v JDBC in kako jih uporabiti v programu Java.
Baza podatkov bo imela različne vrste podatkov, Java pa bo imela različne vrste podatkov. JDBC bo vodil to razlikovanje. Pripravimo se na spoznavanje pomembne teme v JDBC.
Kaj se boste naučili:
Upravljanje transakcij JDBC
Zaporedje dejanj (stavki SQL) se obravnava kot ena enota, ki je znana kot transakcija. Upravljanje transakcij je za aplikacije, usmerjene v RDBMS, pomembno za ohranjanje celovitosti in doslednosti podatkov.
Med izvajanjem transakcije bomo za pridobivanje in nastavitev podatkov v objektu ResultSet uporabili metodi getXXX in setXXX. XXX predstavlja podatkovne vrste stolpcev. V tej vadnici bomo razpravljali o vrstah transakcij in podatkovnih vrstah JDBC.
Vrste transakcij
V JDBC bo vsaka poizvedba SQL obravnavana kot transakcija. Ko v JDBC ustvarimo povezavo z zbirko podatkov, se bo izvajala v načinu samodejnega sprejemanja (vrednost samodejnega sprejemanja je TRUE). Po izvedbi stavka SQL bo samodejno dodeljen.
Včasih bomo morda želeli transakcijo odobriti po izvedbi še nekaterih stavkov SQL. Takrat moramo vrednost samodejne odobritve nastaviti na False. Tako podatki ne bodo zajeti pred izvajanjem vseh poizvedb. Če v transakciji dobimo izjemo, lahko spremembe () povrnemo in naredimo kot prej. Upravljanje transakcij je mogoče dobro razložiti z uporabo lastnosti ACID.
KISLINA pomeni
- A – Atomicnost -> Če se vse poizvedbe uspešno izvedejo, bodo podatki zajeti, sicer pa ne.
- C – Doslednost -> DB mora biti po kateri koli transakciji v konsistentnem stanju.
- I– Izolacija -> Transakcija je ločena od drugih transakcij.
- D – Trajnost -> Če je transakcija storjena enkrat, bo ostala vedno zavezana.
V upravljanju transakcij so tri najpomembnejše funkcije. To so:
vprašanja in odgovori za tehnično podporo za svežje
- Zaveži: Po izvedbi stavkov SQL želimo spremembe narediti trajne v zbirki podatkov. Poklicati bi morali metodo commit (). Običajno pomeni, da je zaveza, da bo spremembe trajno izvedel v zbirki podatkov. Sprememb ne moremo razveljaviti / preklicati. Lahko pa spremenimo podatke v zbirki podatkov.
- Povrat: Povratek razveljavi spremembe do zadnjega urejanja ali omenjene točke shranjevanja. Včasih bomo morda želeli razveljaviti spremembe. Na primer, imamo eno ugnezdeno poizvedbo, en del je bil uspešno izveden, drugi pa je vrgel nekaj izjeme. Takrat želimo razveljaviti spremembe, ki jih je naredil prvi del, zato moramo poklicati metodo Rollback (), če je prišlo do izjeme.
- Savepoint: Savepoint pomaga ustvariti kontrolno točko v transakciji in omogoča vrnitev na to določeno shrambeno točko. Vsaka shranjevalna točka, ki je bila ustvarjena za transakcijo, se samodejno uniči in postane neveljavna, ko je transakcija zavezana ali zavrnjena.
Do zdaj smo videli, kaj je objava, povratno kopiranje in točka shranjevanja ter njene operacije. Spodaj bomo videli metode tega in kako ga uporabiti v programu.
Metode upravljanja transakcij
Povezovalni vmesnik ponuja 5 načinov za upravljanje transakcij. Ti so naslednji:
# 1) metoda SetAutoCommit ()
Privzeto je vrednost vrednosti AutoCommit TRUE. Po izvedbi stavka SQL bo samodejno dodeljen. Z metodo setAutoCommit () lahko vrednost nastavimo na AutoCommit.
# 2) Metoda commit ()
Za predajo podatkov se uporablja metoda predaje. Po izvedbi stavka SQL lahko pokličemo commit (). Zavezal bo spremembe, ki jih naredi stavek SQL.
Sintaksa: conn.commit ();
# 3) Metoda vračanja ()
Metoda povratka se uporablja za razveljavitev sprememb, dokler se ne zgodi zadnja odobritev. Če se pri poteku izvrševanja stavkov SQL srečamo s kakršno koli težavo ali izjemo, lahko transakcijo povrnemo nazaj.
Sintaksa: conn.rollback ();
# 4) metoda setSavepoint ()
Savepoint vam daje dodaten nadzor nad transakcijo. Ko v transakciji nastavite točko shranjevanja (skupina stavkov SQL), lahko z metodo rollback () razveljavite vse spremembe do točke shranjevanja ali po njej (). metoda setSavepoint () se uporablja za ustvarjanje nove točke shranjevanja.
# 5) Metoda releaseSavepoint ()
Uporablja se za brisanje ustvarjene točke shranjevanja.
V spodnjem programu boste izvedeli več o teh metodah in se naučili tudi, kako jo uporabljati v programu Java.
V tej vadnici so vsi programi napisani v Javi. Uporabili smo različico Java 8 in Oracle DB.
>> Kliknite tukaj za prenos programske opreme Oracle.
>> Kliknite tukaj da prenesete različico Java 8.
Ima postopek namestitve Jave po korakih.
Primer transakcijskega programa
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); } } } Izhod:

Pojasnilo:
Kar smo storili v zgornjem programu za upravljanje transakcij, je posodobitev vrednosti danega zaposlenega v tabeli EMPLOYEE_DETAILS in odobritev podatkov. Če je prišlo do kakršne koli napake ali izjeme, smo izvedli operacijo vračanja (). Zdaj bomo videli popolno razlago programa.
# 1) Ustvaril 2 Izberite poizvedbo za 2 zaposlena na podlagi njihove EMPID
Spodaj sta 2 izbrani poizvedbi.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';#two) Ustvaril dve poizvedbi za posodobitev za dva zaposlena na podlagi njihovega EMPID
Dve posodobljeni poizvedbi:
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) Odprite povezavo, izvedite izbrano poizvedbo in prikažite podatke EMPNUM = 2001.
# 4) Z metodo setAutoCommit () nastavite vrednost autoCommit na false.
# 5) Izvedeli smo poizvedbo za posodobitev EMPNUM = 2001 in ustvarili drugo povezavo za isto bazo podatkov ter izbrali vrednost EMPNUM = 2001.
# 6) Nastali podatki zaposlenega, katerega EMPNUM = 2001, niso posodobljeni podatki. Ker nismo izvedli operacije commit (). Če ste uporabili isto povezavo, kjer ste jo uporabili za posodobitev, bi vam pokazala posodobljene podatke. Zdaj so predani podatki. Podatki so prikazani v tabeli.
# 7) Po operaciji urejanja je ustvaril eno točko shranjevanja.
# 8) Uporaba poizvedbe select za prikaz podatkov EMPNUM = 2002. Spremenjena plača tega zaposlenega z uporabo poizvedbe za posodobitev. Po tem so prikazani podatki EMPNUM = 2002 z isto povezavo. Na njem naj bodo prikazani posodobljeni podatki.
# 9) Z vrnitvijo do zadnje točke shranjevanja izvedeno. Zdaj, ko smo prikazali podatke tega zaposlenega, ki uporablja isto povezavo, ima stare podatke, ker vrnitev nazaj razveljavi spremembe do zadnje točke shranjevanja, če omenimo točko shranjevanja else do zadnjega urejanja.
# 10) Ustvarili smo eno metodo, ki bo prikazala podatke, ker podatke tukaj prikazujemo večkrat.
Vrste podatkov JDBC
Podatkovne zbirke imajo podatkovne tipe SQL, Java pa podatkovne tipe Java. Moral bi obstajati mehanizem za branje in pisanje podatkov med aplikacijo Java in bazo podatkov. Različne zbirke podatkov podpirajo vrste SQL, vendar z nekaterimi različicami imena.
Na primer, večina baz podatkov podpira velike binarne vrednosti, Oracle jo imenuje LONG RAW, Sybase kot IMAGE, Informix kot BYTE, DB2 pa kot LONG VARCHAR ZA BITNE PODATKE.
Med pisanjem programa JDBC nam ni treba skrbeti za tipe podatkov SQL, ki jih uporablja ciljna baza podatkov. JDBC ima nabor splošnih identifikatorjev tipa SQL v razredu java.sql.Types. Ti tipi so zasnovani tako, da podpirajo večino splošnih podatkovnih tipov SQL. Med pisanjem programa JDBC bomo uporabili samo tipe podatkov JDBC.
Gonilnik JDBC bo pretvoril podatkovne tipe Java v podatkovne tipe zbirke podatkov naprej in nazaj. Z metodo java.sql.DatabaseMetaData.getTypeInfo lahko preverite, katere vrste SQL dejansko podpira določena baza podatkov, in nato napišete program. JDBC uporablja privzeto preslikavo za večino podatkovnih vrst.
Na primer, niz Java bo pretvorjen v tip SQL VARCHAR.
Kako poteka preslikava, bomo videli v metodi setXXX, getXXX in updateXXX vmesnikov pripravljenihStatment ali CallableStatement ali ResultSet v naslednji tabeli:
| VRSTA SQL | TIP JAVA / JDBC | setXXX | getXXX | posodobitevXXX |
|---|---|---|---|---|
| INTEGER | int | setInt | obarvan | updateInt |
| CHAR | java.lang.String | setString | getString | updateString |
| VARCHAR | java.lang.String | setString | getString | updateString |
| LONGVARCHAR | java.lang.String | setString | getString | updateString |
| BIT | logično | setBoolean | getBoolean | updateBoolean |
| ŠTEVILČNO | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
| TRAG | kratek | setShort | getShort | updateShort |
| VELIKO | dolga | setLong | getLong | updateLong |
| REALNO | float | setFloat | getFloat | updateFloat |
| FLOAT | float | setFloat | getFloat | updateFloat |
| DVOJNA | dvojno | setDouble | getDouble | updateDouble |
| BINARNA | bajt () | setBytes | getBytes | updateBytes |
| DATUM | java.sql.Date | setDate | getDate | updateDate |
| ČAS | java.sql.Time | nastavi čas | getTime | updateTime |
| TIMESTAMP | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
| CLOB | java.sql.Clob | setClob | getClob | updateClob |
| BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
| NIZ | Matrika | setArray | getArray | updateArray |
| XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
| Strukturiran tip | Predmet | setObject | getObject | updateObject |
V prejšnjih vajah smo za osnovne podatkovne tipe nastavili metodeXXX, getXXX in updateXXX. Lahko se sklicujete na to.
Tu smo v naslednjem primeru razložili vrste clob in blob.
Primer BLOB programa
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(); } } } Izhod:

Datoteka je bila uspešno shranjena na dani poti.

Pojasnilo:
V zgornjem programu smo najprej naredili / shranili eno sliko v mapo 'D: \ Bhakiya \ Bhakiya \ JDBC' . Ta lokacija je samo na primer. V svojem sistemu lahko ustvarite svojo datotečno pot. Ime datoteke je slika za preskušanje programske opreme. Nato smo ustvarili en program Java, ki je to sliko shranil v tabelo DB in sliko pridobil iz tabele ter shranil v lokalni sistem.
Do zdaj smo razpravljali o pregledu naloge. Zdaj bomo videli, kako smo to dosegli v programu.
# 1) V DB ustvarite eno tabelo za shranjevanje slike.
Sintaksa:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';V zgornji poizvedbi imamo 2 stolpca.
- PicName - varchar2 -> Uporablja se za shranjevanje imena slike
- slika - BLOB -> Uporablja se za shranjevanje slike v tabelo.
Podatkovni tip BLOB se uporablja za shranjevanje slike / slike v tabelo DB.
#two) Povezava in stavek sta bila ustvarjena in imenovana izvršna metoda za izvajanje poizvedbe CREATE.
statemnt1.execute(QUERY);# 3) Nato smo ustvarili poizvedbo za vstavljanje in jo izvedli s pomočjo PreparedStatement.
Sintaksa PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);# 4) S pomočjo setString () - nastavite ime slike.
# 5) Če želite nastaviti sliko, uporabite razred FileInputStream, da prenesete lokacijo slike.
Sintaksa:
FileInputStream inputStream = new FileInputStream('Picture Full Path');Nato lahko z metodo setBlob () nastavimo sliko v objektu PreparedStatement. Po tem se pokliče izvedbena metoda PreparedStatement. To bo vstavilo dane podatke v tabelo.
Po izvedbi poizvedbe za vstavljanje z uporabo predmeta ResultSet pridobimo podatke iz tabele (z uporabo poizvedbe za izbiro).
# 6) Z uporabo metode getString lahko dobimo vrednost stolpca PicName.
# 7) Če želite dobiti sliko, sledite spodnjim korakom:
- Ustvarite objekt Blob in dodelite vrnjene vrednosti metode getBlob predmeta ResultSet.
- Sintaksa za to je: Blob blob1 = rs.getBlob ();
- Ustvarite objekt bajtnega polja in dobite vrednost objekta Blob kot bajte.
- Ustvari objekt FileOutputStream in podaj celotno pot, da shraniš sliko na tej poti. Pokličite metodo write () predmeta FileOutputStream - ki bo shranila sliko.
- Po tem je bil program uspešno izveden.
# 8) Pojdite na mesto izhodne slike in preverite, ali sta vhod in izhod enaka.
Primer programa 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(); } } } Izhod:

Vhodna datoteka:

Datoteka je bila uspešno shranjena na dani poti.

Izhodna datoteka:

Pojasnilo:
V zgornjem programu smo najprej naredili / shranili eno besedilno datoteko 'file1.txt' v mapo 'D: \ Bhakiya \ Bhakiya \ JDBC'. Ta lokacija je samo na primer. V svojem sistemu lahko ustvarite svojo datotečno pot. Nato smo ustvarili en program Java, ki je to datoteko shranil v tabelo DB in jo potegnil iz tabele ter shranil v lokalni sistem.
Do zdaj smo razpravljali o pregledu naloge. Zdaj bomo videli, kako smo to dosegli v programu.
# 1) V DB ustvarite eno tabelo za shranjevanje slike.
Spodaj je sintaksa poizvedbe USTVARI TABELO:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';V zgornji poizvedbi imamo 2 stolpca.
- FileName - varchar2 -> Uporablja se za shranjevanje imena slike.
- StoreFile - CLOB -> Uporablja se za shranjevanje datoteke v tabelo.
Podatkovni tip CLOB se uporablja za shranjevanje vrste znakov binarnih podatkov v tabelo DB
#two) Povezava in stavek sta bila ustvarjena in imenovana izvršna metoda za izvajanje poizvedbe CREATE.
statemnt1.execute(QUERY);# 3) Nato smo ustvarili poizvedbo za vstavljanje in jo izvedli s pomočjo PreparedStatement.
Sintaksa PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);# 4) Uporaba setString () - nastavite ime FileName.
# 5) Če želite datoteko nastaviti / shraniti, uporabite razred FileReader, da datoteko prenesete z mestom zapolnitve.
Sintaksa:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');Nato lahko z metodo setClob () datoteko nastavimo v objektu PreparedStatement. Po tem se imenuje izvedbena metoda PreparedStatement. To bo vstavilo dane podatke v tabelo.
Po izvedbi poizvedbe za vstavljanje z uporabo predmeta ResultSet pridobimo podatke iz tabele (z uporabo poizvedbe za izbiro).
Izberite poizvedbo:
'select * from Clob_Sample_Example'# 6) Z metodo getString lahko dobimo vrednost stolpca FileName.
# 7) Če želite dobiti datoteko, upoštevali smo spodnje korake:
- Ustvari objekt Clob in dodeli vrnjene vrednosti metode getClob predmeta ResultSet.
- Sintaksa za to je: Clob clob1 = rs.getClob ();
- Ustvarite objekt Reader in pridobite vrednost predmeta Clob kot znak.
- Ustvarite objekt FileWriter in posredujte celotno pot za shranjevanje datoteke na tej poti. Pokličite metodo write () predmeta FileWrite - ki bo zapisal podatke v datoteko na lokaciji.
- Po tem je bil program uspešno izveden.
# 8) Pojdite na lokacijo izhodne datoteke in preverite, ali sta vhodna in izhodna datoteka enaki.
Pomembne točke:
- ACID Properties pojasnjuje upravljanje transakcij v zbirki podatkov.
- Obvezovanje (), vračanje () in točka shranjevanja so najpomembnejše operacije pri upravljanju transakcij.
- Obveznost bo spremembe trajno izvedla v DB, Rollback bo razveljavil spremembe do zadnjega urejanja ali omenjene točke shranjevanja, Savepoint pa pomaga ustvariti kontrolno točko.
- Baza podatkov vzdržuje podatkovne tipe SQL, Java pa Java. Za obdelavo te pretvorbe se uporablja gonilnik JDBC.
- Gonilnik JDBC ima nekaj identifikatorjev tipa SQL, zato programerju ni treba skrbeti za podatkovne tipe.
Pogosto zastavljena vprašanja
V # 1) Kakšen je podatkovni tip JDBC?
Odgovor: Java ima svoje tipe podatkov, baza podatkov pa svoje tipe podatkov. Gonilnik JDBC pretvori podatkovni tip Java v ustrezen podatkovni tip SQL, ki ga bo sprejela baza podatkov. Objekti ResultSet ponujajo tudi metode setXXX () in metode getXXX (), ki so na voljo za ustrezne vrste podatkov.
V # 2) Kakšen je podatkovni tip za datum v Javi?
Odgovor: Datum v Javi ni samo podatkovni tip, temveč tudi razred. Datum v Javi vsebuje datum, uro, leto, ime dneva, dan v tednu in časovni pas. Razred Date ima ustrezne metode za pridobivanje ustreznih podatkov.
V # 3) Kakšna je razlika med java.util.Date in java.sql.Date?
Odgovor: Glavna razlika je v java.util.Date vsebuje tudi podatke o datumu in času. Toda java.sql.Date ima informacije samo o datumu. To je glavna razlika, pri kateri java.util.Date ne moremo preslikati neposredno z java.sql.Date.
V # 4) Ali imamo v Javi razred, ki predstavlja tip TIME in TIMESTAMP za SQL?
Odgovor: Da, imamo razred za tip TIME in TIMESTAMP za SQL. Razred java.sql.Time predstavlja informacije, povezane s ČASOM. Razred java.sql.timestamp predstavlja informacije, povezane z TIMESTAMP.
V # 5) Kako začeti transakcijo v JDBC?
Odgovor: Povezava JDBC se začne z omogočenim načinom samodejne odobritve, kjer se vsak stavek SQL šteje za transakcijo. V JDBC ni posebnega postopka za zagon transakcije. Ko ustvarite povezavo in začnete izvajati stavek SQL, se je transakcija tam začela.
V # 6) Kaj je metoda commit () v Javi?
Odgovor: Način commit () v Javi se uporablja za shranjevanje sprememb, ki so bile izvedene od zadnje objave (). Način commit () je na voljo v vmesniku Connection. Z uporabo povezavnega predmeta lahko pokličemo commit ().
V # 7) Kakšen je način povratka v Javi?
Odgovor: Po zadnjem urejanju () lahko v primeru kakršnih koli težav pokličemo metodo rollback (), da povrnemo vse spremembe, opravljene do zadnjega načina commit.rollback (), ki je na voljo v vmesniku Connection. Z uporabo povezavnega predmeta lahko pokličemo metodo rollback ().
Zaključek
Tukaj smo zajeli vrste podatkov v Javi in DB ter kako gonilnik JDBC to obravnava. Razpravljali smo o lastnostih kisline. To je najpomembnejše za bančno področje. Zelo vam bo v pomoč v karieri. V razdelku Upravljanje transakcij smo razpravljali o metodah prevzema in vračanja, kot so commit (), rollback (), setAutoCommit (), setSavepoint () in releaseSavepoint ().
Priporočeno branje
- Java JDBC Vadnica: Kaj je JDBC (Java Database Connectivity)
- Vadnica za povezavo Java JDBC s primerom programiranja
- JDBC DriverManager, JDBC PreparedStatement In Statement
- JDBC ResultSet: Kako uporabiti Java ResultSet za pridobivanje podatkov
- Java vrste podatkov, zanke, nizi, stikala in trditve
- Dolžina niza Java () Metoda s primeri
- Kako uporabiti metodo Java toString?
- Testiranje baze podatkov o selenu (z uporabo WebDriver in JDBC API)