Professional Documents
Culture Documents
06ResultSet PDF
06ResultSet PDF
ResultSet je klasa koja omoguava prihvat dijela podataka iz baze podataka koji su rezultat upita.
Prve verzije JDBC-a je omoguavala samo sekvencijalno itanje podataka iz uitanog skupa podataka.
Nove verzije JDBC-a omoguava vie naina itanja kao i auriranje podataka direktno u resultSet-u.
Da bi se kreirao resultSet potrebno je da se prvo kreira objekat klase Statement. Ako se eli napredni
rad sa resulSet-om tada se prilikom kreiranja objekta klase Statement moraju definisati osobine tog
objekta. Mogue osobine su:
Nain pretraivanja
o TYPE_FORWARD_ONLY itanje podataka se vri samo od poetka premu kraju; u
resultSet-u se vide samo podaci koji postoje u momentu izvrenja upita
o TYPE_SCROLL_INSENSITIVE omoguava itanje podataka naprijed, nazad, sa
preskocima; u resulSet-u se vide podaci u momentu izvrenja upita
o TYPE_SCROLL_SENSITIVE - omoguava itanje podataka naprijed, nazad, sa preskocima; u
resultSet-u se vide trenutni podaci iz baze podataka (promjene u bazi se reflektuju na
podatke u resultSet-u
Azuriranje resultSet-a
o CONCUR_READ_ONLY - podaci se mogu samo itati
o CONCUR_UPDATABLE - podaci se mogu aurirati u resultSet-u
Postojanost resultSet-a
o HOLD_CURSORS_OVER_COMMIT - resultSet opstaje i nakon commit-a
o CLOSE_CURSORS_AT_COMMIT - resulSet se zatvara sa commit-om
Metoda createResultSetStatement
Normalno prilikom rada se mora voditi rauna da rad sa resultSet-om definisanim na ovaj nain vie
optereuje rad sistema za upravljanje bazom podataka. Iz tih razloga se mora voditi rauna kakav se
oblik resultSet-a koristi.
Metoda createResultSet
Metoda prikaziRed
Postoji vie naina itanja redova iz resultSet-a. itanje se radi sa metodama klase ResultSet. Te
metode su:
next() pomjera kursor naprijed jedan red. Vraa true ako postoje podaci u tom redu, a ako ne
vraa false.
previous() pomjera kursor nazad jedan red. Vraa true ako postoji taj red, u protivnom vraa false.
first() postavlja kursor na prvi red u ResultSet-u. Vraa true ako prvi red postoji, u protivnom vraa
false.
last() postavlja kursor na zadnji red u ResultSet-u. Vraa true ako on postoji, u protivnom vraa false.
beforeFirst() pozicionira kursor ispred prvog reda. Ako resultSet nema redova ova metoda
nema efekta.
afterLast() postavlja kursor nakon zadnjeg reda u resultSet-u. Ako resultSet nema podataka
metoda nema efekta.
relative(int brojRedova) pomjera kursor relativno u odnosu na tekui red za vrijednost
parametra brojRedova. Ako je brojRedova nula kursor se ne pomjera. Ako je pozitivan broj kursor
se pomjera naprijed brojRedova redova, a ako je negativan pomjeranje se vri unazad. U sluaju
da nema toliko redova za koliko se treba pomjeriti kursor, kursor se pozicionira iza zadnjeg
odnosno prije prvog reda. Metoda vraa true ako red postoji, u protivnom vraa false. Ako je brojRedova
1 tada je ova metoda ista kao metoda next().
absolute(int brojReda) postavi kursor na red definisan sa vrijedosit brojReda od poetka ako je
brojReda pozitivan ili od kraja ako je brojReda negativan. U sluaju da u resultSet-u nema toliko
redova kursor se pozicionira poslije zadnjeg, odnosno prije prvog reda.
Normalno koritenje ovih metoda zavisi i od tipa objekta klase Statemet odnosno vrste dozvoljenih
pretraivanja.
Metoda printN
Metoda printN koristi metodu abslute() da pozicinira kursor na n-tu poziciju resultSet-a.
Metoda printNext
Metoda printNext koristi metodu next() da pozicinira kursor na slijedeu poziciju resultSet-a.
Metoda printNext sa dva parametra koristi metodu relativ() za pozicinira kursor na poziciju resultSet-
a koja je za n udaljena od tekue pozicije.
Metoda printPrior
Metoda printPrior koristi metodu privios() da pozicinira kursor na prethodni red u resultSet-a.
Metoda printPrior sa dva parametra koristi metodu relative za pomjeranje kursora za eljeni broja
redova unaprijed.
Metoda auriranja
Podaci u resultSet-u se mogu aurirati odnosno mogu se upisivati novi redovi, mijenjati i brisati
postojei. Normalno, da bi se ovo moglo raditi osobina naredbe sa kojom je kreiran kursor mora biti
CONCUR_UPDATABLE.
Metoda insertRow
Metoda insertRow upisuje red u resultSet odnosno upisuje red u tabelu baze podataka.
public void insertRow(ResultSet rs, int sifra, String ime, String prezime) {
try {
rs.moveToInsertRow();
rs.updateInt("korisnik_id", sifra);
rs.updateString("ime", ime);
rs.updateString("prezime", prezime);
rs.insertRow();
rs.moveToCurrentRow();
} catch (SQLException e) {
System.out.println("Greska insert reda..." + e.getMessage());
}
}
moveToInsertRow() postavlja kursor na prazan nov slog koji e se upisati u resultSet odnosno
tabelu u bazi podataka.
updateInt(nazivPolja, vrijednostPolja) aurira dato polje tekueg sloga u resultSet-u. Ovo polje
je tipa intger. Svaki tip podataka ima svoju odgovarajuu metodu.
updateString(nazivPolja, vrijednostPolja) aurira dato polje tekueg sloga u resultSet-u. Ovo
polje je tipa String.
insertRow() tekui pripremljeni slog upisuje u resultSet odnosno tabelu baze podataka
moveToCurruntRow() postavlja kursor na tekui (u ovom sluaju upisani) red
Metoda updateRow
Metoda updateRow mijenja red u resultSet odnosno aurira red u tabeli baze podataka.
U realizaciji ove metode koritene su metode klase ResultSet. Ovdje su prvi put koritene metode:
Metoda deleteRow
Metoda deleteRow brie red u resultSet odnosno brie red u tabeli baze podataka.
U realizaciji ove metode koritene su metode klase ResultSet. Ovdje je prvi put koritena metoda:
db.createStatement();
db.setAutoCommit(false);
db.printN(rs, 2);
db.printNext(rs);
db.printN(rs,4);
db.updateRow(rs, "NovoIme");
db.commit(konekcija);
db.printPrior(rs);
db.printN(rs, 5);
db.printPrior(rs, 2);
db.deleteRow(rs);
db.printN(rs, 20);
db.commit(konekcija);
db.stampajKorisnike("Sadraj na kraju rada", "");
rs.close;
db.closeConnection();
} catch (Exception e) {
e.printStackTrace();
}
}