root/java/sql-vyuka/src/java/cz/frantovo/sql/vyuka/dao/PiskovisteDAO.java @ 16:9acb74ac7346

Revision 16:9acb74ac7346, 2.9 KB (checked in by František Kučera <franta-hg@…>, 15 years ago)

Databázová vrstva: vykonávání příkazů a ukládání a načítání historie.

Line 
1package cz.frantovo.sql.vyuka.dao;
2
3import cz.frantovo.sql.vyuka.dao.VyukaSuperDAO.DATABAZE;
4import cz.frantovo.sql.vyuka.dto.Hlaska;
5import cz.frantovo.sql.vyuka.dto.Hlaska.Typ;
6import cz.frantovo.sql.vyuka.dto.Tabulka;
7import cz.frantovo.sql.vyuka.dto.Uzivatel;
8import cz.frantovo.sql.vyuka.dto.VysledekSQL;
9import java.sql.Connection;
10import java.sql.PreparedStatement;
11import java.sql.ResultSet;
12import java.sql.SQLException;
13import java.util.logging.Level;
14
15/**
16 * Pro spouštění uživatelových příkazů.
17 * @author fiki
18 */
19public 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}
Note: See TracBrowser for help on using the browser.