java jdbc transaction management with example
Ovaj vodič objašnjava JDBC vrste transakcija, tipove podataka, metode upravljanja transakcijama i kako ih koristiti u Java programu:
U JDBC rezultat vodič za JDBC serija lekcija , naučili smo koristiti JDBC ResultSet za dohvaćanje podataka.
U ovom uputstvu razgovarat ćemo o vrstama transakcija u JDBC. Kratki uvod u vrste transakcija vidjeli smo u našim prethodnim vodičima. Ovdje ćemo vidjeti na detaljan način. Također ćemo pokriti koje su vrste podataka u JDBC-u i kako ih koristiti u Java programu.
Baza podataka imat će različite tipove podataka, a Java će imati različite tipove podataka. JDBC će upravljati ovom diferencijacijom. Pripremimo se za upoznavanje važne teme u JDBC-u.
Što ćete naučiti:
JDBC upravljanje transakcijama
Slijed radnji (SQL navodi) tretira se kao jedna jedinica koja je poznata kao transakcija. Upravljanje transakcijama važno je za aplikacije usmjerene na RDBMS radi održavanja integriteta i dosljednosti podataka.
Tijekom izvođenja transakcije koristit ćemo metode getXXX i setXXX za dohvaćanje i postavljanje podataka u objektu ResultSet. XXX predstavlja vrste podataka stupaca. U ovom uputstvu razmotrit ćemo transakcije i tipove podataka JDBC.
Vrste transakcija
U JDBC-u svaki SQL upit smatrat će se transakcijom. Kada stvorimo vezu baze podataka u JDBC, ona će se izvoditi u načinu automatskog urezivanja (vrijednost automatskog predavanja je TRUE). Nakon izvršavanja SQL izraza, automatski će se izvršiti.
Ponekad ćemo možda htjeti izvršiti transakciju nakon izvršavanja još nekih SQL izraza. Tada moramo vrijednost automatskog urezivanja postaviti na False. Tako se podaci neće izvršiti prije izvršavanja svih upita. Ako u transakciji dobijemo iznimku, možemo povući () promjene i učiniti ih kao prije. Upravljanje transakcijama može se dobro objasniti - korištenjem ACID svojstava.
KISELINA znači
- A – Atomicnost -> Ako se svi upiti uspješno izvrše, podaci će se predati, u suprotnom neće.
- C – Konzistentnost -> DB mora biti u dosljednom stanju nakon bilo koje transakcije.
- I– Izolacija -> Transakcija je izolirana od ostalih transakcija.
- D – Trajnost -> Ako je transakcija počinjena jednom, ostat će uvijek počinjena.
Tri su najvažnije funkcije u upravljanju transakcijama. Oni su:
qa pitanja i odgovori za automatizacijski intervju
- Počiniti: Nakon izvršavanja SQL izraza, želimo promjene učiniti trajnim u bazi podataka. Trebali bismo pozvati metodu commit (). Ono što je commit obično znači da će trajno unositi promjene u bazu podataka. Ne možemo poništiti / opozvati promjene. Ali možemo promijeniti podatke u bazi podataka.
- Povrat: Vraćanje poništava promjene do zadnjeg urezivanja ili spomenute točke spremanja. Ponekad bismo mogli poništiti promjene. Na primjer, imamo jedan ugniježđeni upit, jedan je dio uspješno izveden, a drugi je izuzeo. U to vrijeme želimo poništiti promjene učinjene u prvom dijelu, trebali bismo pozvati metodu Rollback () da to učinimo ako se dogodila iznimka.
- Točka spremanja: Savepoint pomaže stvoriti kontrolnu točku u transakciji i omogućuje izvršavanje vraćanja na tu određenu točku spremanja. Svaka točka spremanja koja je stvorena za transakciju automatski će se uništiti i postati nevaljanom kada se transakcija izvrši ili vrati.
Do sada smo vidjeli što je predavanje, vraćanje i spremište i njegove operacije. U nastavku ćemo vidjeti metode i kako ga koristiti u programu.
Metode upravljanja transakcijama
Sučelje za povezivanje pruža 5 metoda za upravljanje transakcijama. Oni su sljedeći:
# 1) metoda setAutoCommit ()
Prema zadanim postavkama vrijednost vrijednosti AutoCommit je TRUE. Nakon izvršavanja SQL izraza, automatski će se izvršiti. Korištenjem metode setAutoCommit () možemo postaviti vrijednost na AutoCommit.
# 2) Način predavanja ()
Za predavanje podataka koristi se metoda predavanja. Nakon izvršenja SQL izraza, možemo nazvati commit (). Založit će promjene koje su izvršene SQL izrazom.
Sintaksa: conn.commit ();
# 3) Metoda vraćanja ()
Metoda vraćanja koristi se za poništavanje promjena do posljednjeg urezivanja. Ako se suočimo s bilo kojim problemom ili iznimkom u tijeku izvršavanja SQL izraza, možemo vratiti transakciju.
Sintaksa: conn.rollback ();
# 4) Metoda setSavepoint ()
Savepoint vam daje dodatnu kontrolu nad transakcijom. Kada u transakciji postavite točku spremanja (grupa SQL izraza), možete koristiti metodu vraćanja () da poništite sve promjene do točke spremanja ili nakon točke spremanja (). metoda setSavepoint () koristi se za stvaranje nove točke spremanja.
# 5) releaseSavepoint () metoda
Koristi se za brisanje stvorene točke spremanja.
U donjem programu saznat ćete više o ovim metodama, a također ćete naučiti kako ih koristiti u programu Java.
U ovom su uputstvu svi programi napisani na Javi. Koristili smo Javu 8 verziju i Oracle DB.
>> Kliknite ovdje za preuzimanje softvera Oracle.
>> Kliknite ovdje za preuzimanje Java verzije 8.
Ima korak-po-korak instalacijskog postupka Java.
Program primjera transakcije
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); } } }
Izlaz:
Obrazloženje:
Ono što smo učinili u gore navedenom programu za upravljanje transakcijama je ažuriranje vrijednosti zadanog zaposlenika u tablici EMPLOYEE_DETAILS i predavanje podataka. Ako se dogodila bilo kakva pogreška ili iznimka, izvršili smo operaciju vraćanja (). Sad ćemo vidjeti potpuno objašnjenje programa.
# 1) Stvoren je 2 odabrani upit za 2 zaposlenika na temelju njihovog EMPID-a
Ispod su 2 odabrana upita.
String QUERY = 'select * from employee_details where empNum = 2001'; String QUERY1 = 'select * from employee_details where empNum = 2002';
#dva) Stvorio je dva upita za ažuriranje za 2 zaposlenika na temelju njihovog EMPID-a
Dva ažurirana upita:
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) Otvorite vezu, izvršite odabrani upit i prikazali podatke EMPNUM = 2001.
# 4) Pomoću metode setAutoCommit () postavite vrijednost autoCommit na false.
# 5) Izvršio je upit za ažuriranje EMPNUM = 2001 i stvorio drugu vezu za istu bazu podataka i odabrao vrijednost EMPNUM = 2001.
# 6) Rezultirajući podaci zaposlenika čiji EMPNUM = 2001 nisu ažurirani podaci. Budući da nismo izvršili operaciju commit (). Ako ste koristili istu vezu na kojoj ste je koristili za ažuriranje, prikazala bi vam ažurirane podatke. Sada su predani podaci. Podaci su prikazani u tablici.
# 7) Stvorio jednu točku spremanja nakon operacije urezivanja.
# 8) Upotreba upita za odabir za prikaz podataka EMPNUM = 2002. Promijenjena je plaća tog zaposlenika pomoću upita za ažuriranje. Nakon toga prikazani su podaci EMPNUM = 2002, koristeći istu vezu. Trebao bi prikazivati ažurirane podatke.
# 9) Izvršeno vraćanje do zadnje točke spremanja metodom vraćanja. Sad kad smo prikazali podatke tog zaposlenika koji koristi istu vezu, oni imaju stare podatke jer vraćanje poništava promjene do posljednje točke spremanja ako spomenemo točku spremanja ostalo do zadnjeg urezivanja.
# 10) Stvorili smo jednu metodu koja će prikazati podatke jer ovdje prikazujemo podatke mnogo puta.
Vrste podataka JDBC
Baze podataka imaju SQL tipove podataka, a Java ima Java tipove podataka. Trebao bi postojati mehanizam za čitanje i pisanje podataka između Java aplikacije i baze podataka. Različite baze podataka podržavaju tipove SQL, ali s nekim varijacijama u nazivu.
Na primjer, većina baza podataka podržava velike binarne vrijednosti, Oracle je naziva LONG RAW, Sybase naziva IMAGE, Informix naziva BYTE, a DB2 naziva LONG VARCHAR FOR BIT DATA.
Tijekom pisanja JDBC programa, ne trebamo brinuti o SQL vrstama podataka koje koristi ciljana baza podataka. JDBC ima skup generičkih identifikatora SQL tipa u klasi java.sql.Types. Ti su tipovi dizajnirani za podršku većini generičkih SQL tipova podataka. Tijekom pisanja JDBC programa koristit ćemo samo JDBC vrste podataka.
JDBC upravljački program pretvorit će tipove podataka Java u tipove podataka baze podataka naprijed-nazad. Možete koristiti metodu java.sql.DatabaseMetaData.getTypeInfo da biste provjerili koje vrste SQL zapravo podržava data baza, a zatim napisali program. JDBC koristi zadano mapiranje za većinu tipova podataka.
Na primjer, Java niz pretvorit će se u SQL VARCHAR tip.
Vidjet ćemo kako se mapiranje vrši u metodi setXXX, getXXX i updateXXX pripremljenogStatement ili CallableStatement ili ResultSet sučelja u sljedećoj tablici:
TIP SQL | TIP JAVA / JDBC | setXXX | getXXX | updateXXX |
---|---|---|---|---|
CIJELI | int | setInt | zatamnjena | updateInt |
CHAR | java.lang.String | setString | getString | updateString |
VARCHAR | java.lang.String | setString | getString | updateString |
LONGVARCHAR | java.lang.String | setString | getString | updateString |
BIT | boolean | setBoolean | getBoolean | updateBoolean |
NUMERIČKI | java.math.BigDecimal | setBigDecimal | getBigDecimal | UpdateBigDecimal |
SMALI | kratak | setShort | getShort | updateShort |
VELIKO | dugo | setLong | getLong | updateLong |
STVARAN | plutati | setFloat | getFloat | updateFloat |
PLUTATI | plutati | setFloat | getFloat | updateFloat |
DVOSTRUKO | dvostruko | setDouble | getDouble | updateDouble |
BINARNI | bajt[] | setBytes | getBytes | updateBytes |
DATUM | java.sql.Date | setDate | getDate | updateDate |
VRIJEME | java.sql.Vrijeme | Postavi vrijeme | getTime | updateTime |
VREMENSKI KAMP | java.sql.Timestamp | setTimestamp | getTimestamp | updateTimeStamp |
KLOB | java.sql.Clob | setClob | getClob | updateClob |
BLOB | java.sql.Blob | setBlob | getBlob | updateBlob |
NIZ | Niz | setArray | getArray | updateArray |
XML | Xml | setSQLXML | getSQLXML | updateSQLXML |
Strukturirani tip | Objekt | setObject | getObject | updateObject |
U našim smo prethodnim vodičima postavili metodUXXX, getXXX i updateXXX za osnovne tipove podataka. Možete se pozvati na to.
Ovdje smo objasnili vrste clob i blob u sljedećem primjeru.
Primjer programa 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(); } } }
Izlaz:
Datoteka je uspješno spremljena na zadani put.
Obrazloženje:
U gore navedenom programu prvo smo stvorili / spremili jednu sliku u mapu 'D: \ Bhakiya \ Bhakiya \ JDBC' . Ovo je mjesto samo za primjer. Možete stvoriti vlastiti put do datoteke u vašem sustavu. Naziv datoteke je slika za testiranje softvera. Zatim smo stvorili jedan Java program za pohranu te slike u DB tablicu i dohvaćanje slike iz tablice i pohranjivanje u lokalni sustav.
Do sada smo razgovarali o pregledu zadatka. Sad ćemo vidjeti kako smo to postigli u programu.
# 1) Stvorite jednu tablicu u DB-u za pohranu slike.
Sintaksa:
String QUERY = 'Create table Blob_Sample_Example ( PicName varchar2(30), picture BLOB)';
U gornjem upitu imamo 2 stupca.
- PicName - varchar2 -> Koristi se za pohranu imena slike
- slika - BLOB -> Koristi se za spremanje slike u tablicu.
BLOB tip podataka koristi se za spremanje slike / slike u DB tablicu.
#dva) Veza i naredba su stvoreni i pozvani izvršnom metodom za izvršavanje CREATE upita.
statemnt1.execute(QUERY);
# 3) Zatim smo kreirali upit za umetanje i izvršili ga pomoću PreparedStatement.
Sintaksa PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Korištenjem setString () - postavite naziv slike.
# 5) Da biste postavili sliku, upotrijebite klasu FileInputStream da biste proslijedili mjesto slike.
Sintaksa:
FileInputStream inputStream = new FileInputStream('Picture Full Path');
Zatim, pomoću metode setBlob (), možemo postaviti sliku u objekt PreparedStatement. Nakon toga, naziva se izvršna metoda PreparedStatement. To će umetnuti zadane podatke u tablicu.
Nakon izvršavanja upita za umetanje, pomoću objekta ResultSet dohvaćamo podatke iz tablice (pomoću odabira upita).
# 6) Korištenjem metode getString možemo dobiti vrijednost stupca PicName.
# 7) Da biste dobili sliku, slijedite korake u nastavku:
- Stvorite Blob objekt i dodijelite povratne vrijednosti metode getBlob objekta ResultSet.
- Sintaksa za to je: Blob blob1 = rs.getBlob ();
- Stvorite objekt bajt polja i dobijte vrijednost Blob objekta kao bajtove.
- Stvorite objekt FileOutputStream objekt i proslijedite puni put za spremanje slike na taj put. Pozovite metodu write () objekta FileOutputStream - koja će pohraniti sliku.
- Nakon toga program je uspješno izveden.
# 8) Idite na mjesto izlazne slike i provjerite jesu li ulaz i izlaz jednaki.
Primjer 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(); } } }
Izlaz:
Ulazna datoteka:
Datoteka je uspješno spremljena na zadani put.
Izlazna datoteka:
Obrazloženje:
U gore navedenom programu prvo smo stvorili / spremili jednu tekstualnu datoteku 'file1.txt' u mapu 'D: \ Bhakiya \ Bhakiya \ JDBC'. Ovo je mjesto samo za primjer. Možete stvoriti vlastiti put do datoteke u vašem sustavu. Tada smo stvorili jedan Java program za pohranu te datoteke u DB tablicu i dohvaćanje te datoteke iz tablice i pohranjivanje u lokalni sustav.
Do sada smo razgovarali o pregledu zadatka. Sad ćemo vidjeti kako smo to postigli u programu.
# 1) Stvorite jednu tablicu u DB-u za pohranu slike.
Ispod je sintaksa upita CREATE TABLE:
String QUERY = 'Create table Clob_Sample_Example ( FileName varchar2(30), StoreFile CLOB)';
U gornjem upitu imamo 2 stupca.
- Ime datoteke - varchar2 -> Koristi se za pohranu imena slike.
- StoreFile - CLOB -> Koristi se za spremanje datoteke u tablicu.
CLOB tip podataka koristi se za spremanje tipa znakova binarnih podataka u DB tablicu
#dva) Veza i naredba su stvoreni i pozvani izvršnom metodom za izvršavanje CREATE upita.
statemnt1.execute(QUERY);
# 3) Dalje, stvorili smo upit za umetanje i izvršili ga pomoću PreparedStatement.
Sintaksa PreparedStatement:
PreparedStatement pstmnt = conn.prepareStatement(insert_query);
# 4) Korištenje setString () - postavite ime FileName.
# 5) Da biste postavili / pohranili datoteku, upotrijebite klasu FileReader za prosljeđivanje datoteke s mjestom popunjavanja.
Sintaksa:
FileReader fileRead = new FileReader('D:\Bhakiya\Bhakiya\JDBC\file1.txt');
Zatim pomoću metode setClob () možemo postaviti datoteku u objekt PreparedStatement. Nakon toga pozvana je metoda izvršenja PreparedStatement. To će umetnuti zadane podatke u tablicu.
Nakon izvršavanja upita za umetanje, pomoću ResultSet objekta dohvaćamo podatke iz tablice (pomoću odabranog upita).
Odaberite upit:
'select * from Clob_Sample_Example'
# 6) Pomoću metode getString možemo dobiti vrijednost stupca FileName.
# 7) Da biste dobili datoteku, slijedili smo korake u nastavku:
- Stvorite objekt Clob i dodijelite povratne vrijednosti metode getClob objekta ResultSet.
- Sintaksa za to je: Clob clob1 = rs.getClob ();
- Stvorite objekt Reader i dobijte vrijednost objekta Clob kao znak.
- Stvorite objekt FileWriter objekt i prenesite puni put za spremanje datoteke na tom putu. Pozovite metodu write () objekta FileWrite - koja će zapisati podatke u datoteku na mjestu.
- Nakon toga program je uspješno izveden.
# 8) Idite na mjesto izlazne datoteke i provjerite jesu li ulazne i izlazne datoteke iste.
Bodovi koje treba zapamtiti:
- ACID Properties objašnjava upravljanje transakcijama u bazi podataka.
- Porezivanje (), vraćanje () i spremište najvažnije su operacije u upravljanju transakcijama.
- Obrezivanje će trajno izvršiti promjene u DB-u, vraćanje će poništiti promjene do zadnjeg urezivanja ili spomenute točke spremanja, a točka spremanja pomaže stvoriti kontrolnu točku.
- Baza podataka održava SQL tipove podataka, a Java održava Java tipove podataka. Za obradu ove pretvorbe koristi se JDBC upravljački program.
- JDBC pokretač sam ima neku SQL vrstu identifikatora, tako da programer ne treba brinuti o vrstama podataka.
Često postavljana pitanja
P # 1) Koji je tip podataka JDBC?
Odgovor: Java ima svoje tipove podataka, a baza podataka ima svoje tipove podataka. JDBC pogonitelj pretvara Java tip podataka u odgovarajući SQL tip podataka koji će prihvatiti baza podataka. ResultSet objekti također pružaju metode setXXX () i getXXX () metode dostupne za odgovarajuće tipove podataka.
P # 2) Koji je tip podataka za datum u Javi?
Odgovor: Datum u Javi nije samo vrsta podataka već i klasa. Datum u Javi sadrži datum, vrijeme, godinu, naziv dana, dan u tjednu i vremensku zonu. Klasa datuma ima odgovarajuće metode za dohvaćanje relevantnih podataka.
P # 3) Koja je razlika između java.util.Date i java.sql.Date?
Odgovor: Glavna razlika je u tome što java.util.Date ima podatke i o datumu i vremenu. Ali java.sql.Date ima informacije samo o datumu. To je glavna razlika koju ne možemo mapirati java.util.Date izravno s java.sql.Date.
P # 4) Imamo li klasu u Javi koja predstavlja tip VRIJEME i VRIJEME za SQL?
Odgovor: Da, imamo klasu za TIME i TIMESTAMP tip za SQL. klasa java.sql.Time predstavlja podatke vezane uz VRIJEME. klasa java.sql.timestamp predstavlja informacije povezane s TIMESTAMP-om.
P # 5) Kako započeti transakciju u JDBC?
Odgovor: JDBC veza započinje s omogućenim načinom automatskog urezivanja, gdje se svaki SQL izraz smatra transakcijom. Ne postoji određeni postupak za pokretanje transakcije u JDBC. Kada stvorite vezu i počnete izvršavati SQL izraz, tu je započela transakcija.
P # 6) Što je metoda commit () u Javi?
Odgovor: Način predavanja () u Javi koristi se za spremanje promjena napravljenih od zadnjeg urezivanja (). Način commit () dostupan je u sučelju Connection. Koristeći objekt povezivanja možemo nazvati commit ().
P # 7) Što je metoda vraćanja u Javi?
Odgovor: Nakon zadnjeg urezivanja (), ako su se pojavili problemi, možemo pozvati metodu vraćanja () kako bismo vratili sve promjene učinjene do posljednjeg načina urezivanja.rollback () dostupan je u sučelju Connection. Pomoću objekta veze možemo nazvati metodu vraćanja ().
Zaključak
Ovdje smo obuhvatili tipove podataka u Javi i DB-u te kako upravlja JDBC upravljačkim programom. Raspravljali smo o svojstvima KISELINE. To je najvažnije za bankarsko područje. Bit će vrlo korisno za vašu karijeru. U odjeljku Upravljanje transakcijama razgovarali smo o metodama urezivanja i vraćanja, kao što su commit (), rollback (), setAutoCommit (), setSavepoint () i releaseSavepoint ().
Preporučena literatura
- Java JDBC Vodič: Što je JDBC (povezivanje Java baze podataka)
- Vodič za Java JDBC povezivanje s primjerom programiranja
- JDBC DriverManager, JDBC PreparedStatement and Statement
- JDBC ResultSet: Kako koristiti Java ResultSet za preuzimanje podataka
- Java tipovi podataka, petlje, nizovi, prekidači i tvrdnje
- Duljina Java niza () Metoda s primjerima
- Kako koristiti Java toString metodu?
- Ispitivanje baze podataka selena (pomoću WebDriver-a i JDBC API-ja)