Ahoj mam v Jave tuto funkci:
public Film getPosledni() {
Film film = null;
try {
ResultSet rs = statement.executeQuery("SELECT FROM APP.FILMY WHERE F_ID = 100");
while(rs.next()) {
film = new Film(rs.getInt(1), rs.getString(2), rs.getString(3), rs.getString(4), rs.getInt(5));
}
} catch (SQLException ex) {
ex.printStackTrace();
}
return film;
}
jedna se o funkci, ktera mi z tabulky vybere posledni polozku(ta na nejvyssi Id).
MAm problem vtom, jak hodnotu nejvyssiho ID predat(mam ji ulozenou jako int) .....?
Vim, ze existuje neco jako:
String queryString = "DELETE FROM APP.FILMY WHERE F_ID = ?";
preparedStatement = getConnection().prepareStatement(queryString);
preparedStatement.setInt(1, film.getId());
ale nevim, jak to implementovat do teto funkce....
Moc diky za rady :-)
Fórum › Java
Java SQL a Derby
Parametr executeQuery je String. Když něvíš, jak používat monst aparát na tvorbu query, tak pořád ještě můžeš ten String tvořit "ručně":
String q = new String();
Integer max = 1000;
q = "SELECT FROM APP.FILMY WHERE F_ID = " + max.toString();
To Aress :
Pomocou PreparedStatement by si to mohol robiť takto, a pokial viem, je to aj odporúčaný spôsob:
PreparedStatement ps = con.prepareStatement("SELECT * FROM APP.FILMY WHERE F_ID = ?");
ps.setInt(1, max);
ResultSet rs =ps.executeQuery();
Myslím že hlavnou výhodou je, že sa argumenty správne ošetria. Okrem toho si ten preparedStatement môžeš uložiť a nemusíš ho vytvárať stále nanovo, čím sa aplikácia kapik zrýchli (ak voláš jeden statement často dokola len s inými argumentami).
Ja používam niečo také:
PreparedStatement ps = Statements.getSelectAllFromFilmyById();
ps.setInt(1, max);
ResultSet rs =ps.executeQuery();
Statements je v mojom prípade statická trieda, ktorej metódy mi vytvoria prepared statement ak ešte neexistuje, ak existuje, tak ho len vrátia.
Prípadne, si to vieš ešte zjednodusiť takto:
ResultSet rs = Statements.openSelectAllFromFilmyById(max);
To liborb :
Čo myslíš pod "monst aparát na tvorbu query" ?
Občas by som fakt potreboval poskladať stringove query (tak aby boli argumenty priamo vňom, aj správne ošetrené), no nikde som nezistil, ako na to.
Niektoré drivre podporujú niečo ako PreparedStatement.toString(), no keď som to potreboval, riešil som práve Derby, a tam som sa riešenia nedopátral.
To Aress :
Pri Derby som sa tiež nedočítal, ako zvoliť default schému, tak aby nebolo potrebné písať APP.[TABULKA], nakoniec mi zafungovalo, hneď po pripojení zavolať:
conn = java.sql.DriverManager.getConnection("jdbc:derby://....");
conn.prepareCall("set schema APP").execute();
...
con.prepareStatement("select * from FILMY where F_ID = ?");
To Prog. : Co myslím tím "monstr aparát"? Někdy mám pocit, že pokud na určitý problém neexistuje třída nebo alespoň funkce, tak je pro řadu lidí neřešitelný. Pro les nejsou vidět stromy. Na jednoduché problémy se pak chodí s kanónem. Tak jako v tomto případě. Ale jinak proti gustu ...
Přidej příspěvek
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku
×Vložení zdrojáku
×Vložení obrázku
×Vložení videa
Uživatelé prohlížející si toto vlákno
Podobná vlákna
Java Derby - nefunguje — založil joe
Java + SQL — založil Tomas
Java a SQL — založil Nicolas
Java, MS SQL Programátor (junior) D005 — založil MKT.Praha
Accenture - Application Operation Specialist (Java, SQL) — založil PavolToth
Moderátoři diskuze