Changeset 51:bc821c6d090c

Show
Ignore:
Timestamp:
07/18/09 17:16:41 (15 years ago)
Author:
František Kučera <franta-hg@…>
Branch:
default
Message:

Oprava #3 – uživatel může zadat příkaz, který nevrací výsledkovou sadu (typicky nastavení „search_path“), dříve se nezobrazovaly následné výsledky (tabulky) a proces procházení skončil.
Teď může uživatel zadar jeden příkaz, který nevrací výsledek a výsledky (tabulky) následujících dotazů se mu zobrazí správně.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java

    r44 r51  
    5555                    } 
    5656 
    57                     /** 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). */ 
    58                     while (ps.getMoreResults()) { 
     57                    /** 
     58                     * Ošetříme případ, kdy uživatel zadá SQL příkaz, který nevrací výsledkovou sadu. 
     59                     * Typicky nastavení výchozího schématu: SET search_path = '…'; 
     60                     * pokud bude pocetPokusu = 0 a první dotaz nevrátí výsledkovou sadu, 
     61                     * procházení se ukončí a uživatel neuvidí žádnou tabulku (i když další příkazy už výsledkové sady vracely). 
     62                     * Poznámka: jeden „SET search_path = '…'“ se obvykle předřazuje uživatelskému SQL (viz PiskovisteDAO.xml). 
     63                     */ 
     64                    int pocetPokusuBezRS = 1; 
     65                    while (ps.getMoreResults() || pocetPokusuBezRS > 0) { 
     66                        pocetPokusuBezRS--; 
    5967                        rs = ps.getResultSet(); 
    60                         v.getTabulky().add(zpracujVysledek(rs)); 
     68                        if (rs == null) { 
     69                            /** Jedná se buď o „update count“ nebo tu už žádná další výsledková sada není. */ 
     70                        } else { 
     71                            v.getTabulky().add(zpracujVysledek(rs)); 
     72                        } 
    6173                    } 
    6274                    long dobaProvadeni = System.currentTimeMillis() - casPred;