java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java
changeset 51 bc821c6d090c
parent 44 8ce7c1ad5fde
child 52 0eeae8c247cc
     1.1 --- a/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java	Fri Jun 12 19:51:10 2009 +0200
     1.2 +++ b/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java	Sat Jul 18 17:16:41 2009 +0200
     1.3 @@ -54,10 +54,22 @@
     1.4                          v.getTabulky().add(zpracujVysledek(rs));
     1.5                      }
     1.6  
     1.7 -                    /** TODO: ošetřit případ, kdy vykonáme dva příkazy bez výsledkové sady a třetí příkaz ji už má (teď se nezobrazí výsledná tabulka). */
     1.8 -                    while (ps.getMoreResults()) {
     1.9 +                    /**
    1.10 +                     * Ošetříme případ, kdy uživatel zadá SQL příkaz, který nevrací výsledkovou sadu.
    1.11 +                     * Typicky nastavení výchozího schématu: SET search_path = '…';
    1.12 +                     * pokud bude pocetPokusu = 0 a první dotaz nevrátí výsledkovou sadu,
    1.13 +                     * procházení se ukončí a uživatel neuvidí žádnou tabulku (i když další příkazy už výsledkové sady vracely).
    1.14 +                     * Poznámka: jeden „SET search_path = '…'“ se obvykle předřazuje uživatelskému SQL (viz PiskovisteDAO.xml).
    1.15 +                     */
    1.16 +                    int pocetPokusuBezRS = 1;
    1.17 +                    while (ps.getMoreResults() || pocetPokusuBezRS > 0) {
    1.18 +                        pocetPokusuBezRS--;
    1.19                          rs = ps.getResultSet();
    1.20 -                        v.getTabulky().add(zpracujVysledek(rs));
    1.21 +                        if (rs == null) {
    1.22 +                            /** Jedná se buď o „update count“ nebo tu už žádná další výsledková sada není. */
    1.23 +                        } else {
    1.24 +                            v.getTabulky().add(zpracujVysledek(rs));
    1.25 +                        }
    1.26                      }
    1.27                      long dobaProvadeni = System.currentTimeMillis() - casPred;
    1.28