java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java
author František Kučera <franta-hg@frantovo.cz>
Fri May 29 03:44:35 2009 +0200 (2009-05-29)
changeset 16 9acb74ac7346
child 17 08cd160ec1c6
permissions -rw-r--r--
Databázová vrstva: vykonávání příkazů a ukládání a načítání historie.
     1 package cz.frantovo.sql.vyuka.dao;
     2 
     3 import cz.frantovo.sql.vyuka.dao.VyukaSuperDAO.DATABAZE;
     4 import cz.frantovo.sql.vyuka.dto.Hlaska;
     5 import cz.frantovo.sql.vyuka.dto.Hlaska.Typ;
     6 import cz.frantovo.sql.vyuka.dto.Tabulka;
     7 import cz.frantovo.sql.vyuka.dto.Uzivatel;
     8 import cz.frantovo.sql.vyuka.dto.VysledekSQL;
     9 import java.sql.Connection;
    10 import java.sql.PreparedStatement;
    11 import java.sql.ResultSet;
    12 import java.sql.SQLException;
    13 import java.util.logging.Level;
    14 
    15 /**
    16  * Pro spouštění uživatelových příkazů.
    17  * @author fiki
    18  */
    19 public class PiskovisteDAO extends VyukaSuperDAO {
    20 
    21     TipyDAO tipy = new TipyDAO();
    22     HistorieDAO historie = new HistorieDAO();
    23 
    24     public VysledekSQL vykonejSQL(String sql, Uzivatel uzivatel) {
    25         VysledekSQL v = new VysledekSQL();
    26         if (historie.ulozPrikaz(sql, uzivatel)) {
    27 
    28 
    29 
    30 
    31 
    32 
    33             Tabulka t = new Tabulka();
    34 
    35 
    36 
    37             Connection db = getSpojeni(DATABAZE.PISKOVISTE);
    38             if (db == null) {
    39                 v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
    40             } else {
    41                 PreparedStatement ps = null;
    42                 ResultSet rs = null;
    43                 try {
    44                     ps = db.prepareStatement(sql);
    45                     rs = ps.executeQuery();
    46 
    47                     int pocetSloupecku = rs.getMetaData().getColumnCount();
    48                     String[] zahlavi = new String[pocetSloupecku];
    49                     t.setZahlavi(zahlavi);
    50                     for (int i = 0; i < pocetSloupecku; i++) {
    51                         zahlavi[i] = rs.getMetaData().getColumnName(i + 1);
    52                     }
    53 
    54                     while (rs.next()) {
    55                         Object[] hodnoty = new Object[pocetSloupecku];
    56                         for (int i = 0; i < pocetSloupecku; i++) {
    57                             hodnoty[i] = rs.getObject(i + 1);
    58                         }
    59                         t.getHodnoty().add(hodnoty);
    60                     }
    61 
    62                     if (t.getHodnoty().size() > 0 && pocetSloupecku > 0) {
    63 
    64                         v.getTabulky().add(t);
    65                     } else {
    66                         v.getHlasky().add(new Hlaska("SQL příkaz byl proveden.", Typ.OK));
    67                     }
    68 
    69                 } catch (SQLException e) {
    70                     log.log(Level.SEVERE, "SQL chyba při vykonávání uživatelského dotazu.", e);
    71                     v.getHlasky().add(new Hlaska("Chybné SQL: " + e.getMessage(), Typ.Chyba));
    72                 } catch (Exception e) {
    73                     log.log(Level.SEVERE, "Chyba při vykonávání uživatelského dotazu.", e);
    74                     v.getHlasky().add(new Hlaska("Došlo k chybě dotazu.", Typ.Chyba));
    75                 } finally {
    76                     zavri(db, ps, rs);
    77                 }
    78             }
    79 
    80             v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
    81 
    82 
    83 
    84 
    85 
    86         } else {
    87             v.getHlasky().add(new Hlaska("Došlo k chybě historie.", Typ.Chyba));
    88         }
    89         return v;
    90     }
    91 }