Databázová vrstva: vykonávání příkazů a ukládání a načítání historie.
1 package cz.frantovo.sql.vyuka.dao;
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;
16 * Pro spouštění uživatelových příkazů.
19 public class PiskovisteDAO extends VyukaSuperDAO {
21 TipyDAO tipy = new TipyDAO();
22 HistorieDAO historie = new HistorieDAO();
24 public VysledekSQL vykonejSQL(String sql, Uzivatel uzivatel) {
25 VysledekSQL v = new VysledekSQL();
26 if (historie.ulozPrikaz(sql, uzivatel)) {
33 Tabulka t = new Tabulka();
37 Connection db = getSpojeni(DATABAZE.PISKOVISTE);
39 v.getHlasky().add(new Hlaska("Došlo k chybě spojení.", Typ.Chyba));
41 PreparedStatement ps = null;
44 ps = db.prepareStatement(sql);
45 rs = ps.executeQuery();
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);
55 Object[] hodnoty = new Object[pocetSloupecku];
56 for (int i = 0; i < pocetSloupecku; i++) {
57 hodnoty[i] = rs.getObject(i + 1);
59 t.getHodnoty().add(hodnoty);
62 if (t.getHodnoty().size() > 0 && pocetSloupecku > 0) {
64 v.getTabulky().add(t);
66 v.getHlasky().add(new Hlaska("SQL příkaz byl proveden.", Typ.OK));
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));
80 v.getHlasky().add(new Hlaska(tipy.getTip(), Typ.Tip, false));
87 v.getHlasky().add(new Hlaska("Došlo k chybě historie.", Typ.Chyba));