Podpora vícenásobných výsledkových sad (více dotazů oddělených středníkem). Omezení zobrazované historie na 20 posledních.
1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.sql.xml Fri May 29 03:44:35 2009 +0200
1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/HistorieDAO.sql.xml Fri May 29 04:09:58 2009 +0200
1.3 @@ -3,7 +3,11 @@
1.4 <properties>
1.5 <entry key="NACTI">
1.6 <![CDATA[
1.7 - SELECT * FROM historie WHERE id_sezeni = ?
1.8 + SELECT *
1.9 + FROM historie
1.10 + WHERE id_sezeni = ?
1.11 + ORDER BY id DESC
1.12 + LIMIT 20
1.13 ]]>
1.14 </entry>
1.15 <entry key="ULOZ">
2.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Fri May 29 03:44:35 2009 +0200
2.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java Fri May 29 04:09:58 2009 +0200
2.3 @@ -25,15 +25,6 @@
2.4 VysledekSQL v = new VysledekSQL();
2.5 if (historie.ulozPrikaz(sql, uzivatel)) {
2.6
2.7 -
2.8 -
2.9 -
2.10 -
2.11 -
2.12 - Tabulka t = new Tabulka();
2.13 -
2.14 -
2.15 -
2.16 Connection db = getSpojeni(DATABAZE.PISKOVISTE);
2.17 if (db == null) {
2.18 v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
2.19 @@ -42,28 +33,19 @@
2.20 ResultSet rs = null;
2.21 try {
2.22 ps = db.prepareStatement(sql);
2.23 - rs = ps.executeQuery();
2.24 + boolean isRS = ps.execute();
2.25
2.26 - int pocetSloupecku = rs.getMetaData().getColumnCount();
2.27 - String[] zahlavi = new String[pocetSloupecku];
2.28 - t.setZahlavi(zahlavi);
2.29 - for (int i = 0; i < pocetSloupecku; i++) {
2.30 - zahlavi[i] = rs.getMetaData().getColumnName(i + 1);
2.31 - }
2.32 + if (isRS) {
2.33 + rs = ps.getResultSet();
2.34 + v.getTabulky().add(zpracujVysledek(rs));
2.35
2.36 - while (rs.next()) {
2.37 - Object[] hodnoty = new Object[pocetSloupecku];
2.38 - for (int i = 0; i < pocetSloupecku; i++) {
2.39 - hodnoty[i] = rs.getObject(i + 1);
2.40 + while (ps.getMoreResults()) {
2.41 + rs = ps.getResultSet();
2.42 + v.getTabulky().add(zpracujVysledek(rs));
2.43 }
2.44 - t.getHodnoty().add(hodnoty);
2.45 - }
2.46 -
2.47 - if (t.getHodnoty().size() > 0 && pocetSloupecku > 0) {
2.48 -
2.49 - v.getTabulky().add(t);
2.50 } else {
2.51 - v.getHlasky().add(new Hlaska("SQL příkaz byl proveden.", Typ.OK));
2.52 + /** TODO: zobrazit počet aktualizovaných? */
2.53 + v.getHlasky().add(new Hlaska("SQL příkaz byl proveden, ale nevrátil žádná data.", Typ.Varovani));
2.54 }
2.55
2.56 } catch (SQLException e) {
2.57 @@ -79,13 +61,30 @@
2.58
2.59 v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
2.60
2.61 -
2.62 -
2.63 -
2.64 -
2.65 } else {
2.66 v.getHlasky().add(new Hlaska("Došlo k chybě historie.", Typ.Chyba));
2.67 }
2.68 return v;
2.69 }
2.70 +
2.71 + private Tabulka zpracujVysledek(ResultSet rs) throws SQLException {
2.72 + Tabulka t = new Tabulka();
2.73 +
2.74 + int pocetSloupecku = rs.getMetaData().getColumnCount();
2.75 + String[] zahlavi = new String[pocetSloupecku];
2.76 + t.setZahlavi(zahlavi);
2.77 + for (int i = 0; i < pocetSloupecku; i++) {
2.78 + zahlavi[i] = rs.getMetaData().getColumnName(i + 1);
2.79 + }
2.80 +
2.81 + while (rs.next()) {
2.82 + Object[] hodnoty = new Object[pocetSloupecku];
2.83 + for (int i = 0; i < pocetSloupecku; i++) {
2.84 + hodnoty[i] = rs.getObject(i + 1);
2.85 + }
2.86 + t.getHodnoty().add(hodnoty);
2.87 + }
2.88 +
2.89 + return t;
2.90 + }
2.91 }