Ahoj,
odpovídám na zprávu z úterka, 21. února 2006,
kterou Michal Palička napsal(a) v 10:07:13:

   Ty DB Utils dělají pomoci takovéhoto vnoření až to zavírání.

   Já to hodlám dělat takto:

   QueryRunner qr = new QueryRunner(DataConn.getDataSource());
   List rv = (List)qr.query("SELECT name,value FROM data",new 
ArrayListHandler());

   A dostanu výsledek rovnou jako pole

   nebo

   QueryRunner qr = new QueryRunner(DataConn.getDataSource());
   qr.batch(sql,data);

   a importuju do Databáze x nových řádků

--------------------------- Původní zpráva ---------------------------
 Odesilatel: Michal Palička <[EMAIL PROTECTED]>
    Předmět: DataConnection pooling in Tomcat
      Datum: 21. února 2006, 10:07:13 (GMT +0100)
    Přílohy: <none>
      msgid:[EMAIL PROTECTED]
    
M> Dobry den,

M> ten ukazkovy kod vypada teda dost brutalne.

M> Mne se osvedcilo pouziti vnorenych try-finally bloku.
M> Myslim, ze je to prehlednejsi a elegantnejsi.

M> Priklad:

M> void myMethod() throws SQLexception {
M>     Connection con = ds.getConnection();
M>     try {
M>         Statement st = con.createStatement();
M>         try {
M>             ResultSet rs = st.executeQuery();   
M>             try {
M>                 ... // zpracovani dat z 'rs'    
M>             } finally {
M>                 rs.close();
M>             }
M>         } finally {
M>             st.close();
M>         }
M>     } finally {
M>         con.close();
M>     }
M> }

M> Vyse uvedeny kod predpoklada, ze objekt (con, st, rs) je bud vytvoren
M> uspesne anebo je vyhozena vyjimka (tj. nenastane situace, ze napr. metoda
M> ds.getConnection() sice skonci bez vyjimky, avsak vrati <null>).
M> To by u JDBC melo platit.

M> Osetreni vyhozene vyjimky (SQLException) muzete resit bud v metode volajici 
M> anebo cele telo metody myMethod obalit jeste jednim blokem (try-catch).

M> Pokud takovych metod budete mit vice, budou se v podstate lisit jenom kodem
M> v tom nejvnitrnejsim bloku. Opakujici se kod by se asi dal dale eliminovat.
M> ("template method" pattern, "command" pattern).

M> mp.


M> -----Original Message-----
M> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Tomáš 
Procházka
M> Sent: Sunday, February 19, 2006 1:08 PM
M> To: konference@java.cz
M> Subject: DataConnection pooling in Tomcat

M> Zdravím.

M> Na stránce:
M> http://tomcat.apache.org/tomcat-5.0-doc/jndi-datasource-examples-howto.html
M> je ukázka doporučeného kódu pro práci s Connection v kontejneru Tomcatu a 
musím říct,
M> že je to poměrně složitý postup (viz konec příspěvku).

M> Chtěl bych použít něco, co to zjednoduší, přemýšlel jsem o Jakrta Commons - 
DBUtils, jenže je tam jedna věc, které se bojím.

M> V té doporučené ukázce zavírají Connection na konco výkonného bloku a pak 
ještě ve finally bloku.

M> Jaký je rozdíl mezi:

M> try {
M>   conn.close()
M> } finnaly {
M>   conn.close()
M> }

M> a

M> try {
M>   
M> } finnaly {
M>   conn.close()
M> }

M> Tedy když se vynechá to uzavření ve výkonné části? Nebude pak docházet k 
vyčerpání zdrojů?
M> DBUtills veškeré uzavírání provádí právě až ve finnaly bloku.

M> Nebo existuje nějaké lepší řešení než DBUtils? Mě se tohle líbí právě pro 
svou
M> jednoduchost, nepotřebuji na to 10 MB knihoven.


M> Ukázka doporučeného použiti Connection v Tomcat kontejner:

M>  Connection conn = null;
M>   Statement stmt = null;  // Or PreparedStatement if needed
M>   ResultSet rs = null;
M>   try {
M>     conn = ... get connection from connection pool ...
M>     stmt = conn.createStatement("select ...");
M>     rs = stmt.executeQuery();
M>     ... iterate through the result set ...
M>     rs.close();
M>     rs = null;
M>     stmt.close();
M>     stmt = null;
M>     conn.close(); // Return to connection pool
M>     conn = null;  // Make sure we don't close it twice
M>   } catch (SQLException e) {
M>     ... deal with errors ...
M>   } finally {
M>     // Always make sure result sets and statements are closed,
M>     // and the connection is returned to the pool
M>     if (rs != null) {
M>       try { rs.close(); } catch (SQLException e) { ; }
M>       rs = null;
M>     }
M>     if (stmt != null) {
M>       try { stmt.close(); } catch (SQLException e) { ; }
M>       stmt = null;
M>     }
M>     if (conn != null) {
M>       try { conn.close(); } catch (SQLException e) { ; }
M>       conn = null;
M>     }
M>   }

M>    

M>    
M> Datum: 12:59:44    19. února 2006
M> --
M> ---------------------------------------------------------------------
M>  Tomáš Procházka


M>  E-mail: [EMAIL PROTECTED]
M>     WWW: http://atom.sf.cz
M>     ICQ: 87147320
M> ---------------------------------------------------------------------


------------------------ Konec původní zprávy ------------------------

-- 
---------------------------------------------------------------------
 Tomáš Procházka


 E-mail: [EMAIL PROTECTED]
    WWW: http://atom.sf.cz
    ICQ: 87147320
---------------------------------------------------------------------

Odpovedet emailem