TonyM87

DaoProdotto

Nov 17th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.05 KB | None | 0 0
  1. package model.dao;
  2.  
  3. import java.sql.CallableStatement;
  4.  
  5. import java.sql.Connection;
  6. import java.sql.DriverManager;
  7. import java.sql.PreparedStatement;
  8. import java.sql.ResultSet;
  9. import java.sql.SQLException;
  10. import java.util.ArrayList;
  11.  
  12. import model.Dto;
  13. import model.Prodotto;
  14.  
  15. public class DaoProdotto{
  16. static Connection conn; //attributo statico per la connessione
  17.  
  18. private ArrayList<Prodotto> tabellaProdotti = new ArrayList<>();
  19. private ArrayList<Dto> tabellaDto = new ArrayList<>();
  20.  
  21. public static void apriConnessione() {
  22. try {
  23. Class.forName("oracle.jdbc.driver.OracleDriver");
  24. conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:XE", "system", "suso");
  25. } catch (ClassNotFoundException e) {
  26. e.printStackTrace();
  27. } catch (SQLException e) {
  28. e.printStackTrace();
  29. }
  30. }
  31.  
  32. public void chiudiConnessione() {
  33. try {
  34. conn.close();
  35. Thread.sleep(4000);
  36. } catch(SQLException e) {
  37. e.printStackTrace();
  38. } catch (InterruptedException e) {
  39. // TODO Auto-generated catch block
  40. e.printStackTrace();
  41. }
  42. }
  43.  
  44. public void inserisci(Prodotto p) {
  45. PreparedStatement ps;
  46. String query = "INSERT INTO PRODOTTI(nomeprodotto, id_marca, id_categoria, descrizione, linkimmagine, id) VALUES(?,?,?,?,?, id.nextval)";
  47.  
  48. apriConnessione();
  49. try {
  50. ps = (PreparedStatement) conn.prepareStatement(query);
  51.  
  52. ps.setString(1, p.getNome_prodotto());
  53. ps.setString(2, p.getDescrizione());
  54. ps.setString(3, p.getPercorso_immagine());
  55. ps.setInt(4, p.getId_marca());
  56. ps.setInt(5, p.getId_categoria());
  57. ps.executeUpdate();
  58.  
  59. ps.close();
  60.  
  61. } catch(SQLException e) {
  62. e.printStackTrace();
  63. }
  64.  
  65. chiudiConnessione();
  66. }
  67.  
  68. public void inserisciConProcedura(Prodotto p) {
  69. apriConnessione();
  70.  
  71. try {
  72. CallableStatement cst = conn.prepareCall("{call INSERIMENTOPRODOTTI(?,?,?,?,?)}");
  73.  
  74. cst.setString(1, p.getNome_prodotto());
  75. cst.setString(2, p.getDescrizione());
  76. cst.setString(3, p.getPercorso_immagine());
  77. cst.setInt(4, p.getId_marca());
  78. cst.setInt(5, p.getId_categoria());
  79. cst.executeUpdate();
  80.  
  81. cst.close();
  82.  
  83.  
  84. } catch(SQLException e) {
  85. e.printStackTrace();
  86. }
  87. }
  88.  
  89.  
  90.  
  91. public Prodotto leggi(int index) {
  92. return this.tabellaProdotti.get(index);
  93. }
  94.  
  95.  
  96. public ArrayList<Prodotto> leggi() {
  97. String query = "SELECT * FROM PRODOTTI";
  98. apriConnessione();
  99.  
  100. try {
  101. PreparedStatement ps = (PreparedStatement) conn.prepareStatement(query);
  102. ResultSet rs = ps.executeQuery(query);
  103. while(rs.next()) {
  104. Prodotto p = new Prodotto(); //genera nuovo prodotto da inserirei nell'arraylist
  105. p.setId_prodotto(rs.getInt("id_prodotto"));
  106. p.setNome_prodotto(rs.getString("nome_prodotto"));
  107. p.setDescrizione(rs.getString("descrizione"));
  108. p.setPercorso_immagine(rs.getString("percorso_immagine"));
  109. p.setId_marca(rs.getInt("id_marca"));
  110. p.setId_categoria(rs.getInt("id_categoria"));
  111. tabellaProdotti.add(p); //aggiunge
  112. }
  113. ps.close();
  114. rs.close();
  115. } catch(SQLException e) {
  116. e.printStackTrace();
  117. }
  118. chiudiConnessione();
  119. return tabellaProdotti;
  120. }
  121.  
  122. public void modifica(Prodotto p){
  123. PreparedStatement ps = null;
  124. String query = "UPDATE prodotti SET NOMEPRODOTTO = ?, DESCRIZIONE = ?, LINKIMMAGINE = ?, IDMARCA = ?, IDCATEGORIA = ? WHERE ID = ?";
  125.  
  126. try {
  127. apriConnessione();
  128. ps = (PreparedStatement) conn.prepareStatement(query);
  129.  
  130. ps.setString(1, p.getNome_prodotto());
  131. ps.setString(2, p.getDescrizione());
  132. ps.setString(3, p.getPercorso_immagine());
  133. ps.setInt(4, p.getId_marca());
  134. ps.setInt(5, p.getId_categoria());
  135. ps.setInt(6, p.getId_prodotto());
  136.  
  137. ps.executeUpdate();
  138. ps.close();
  139. }catch(SQLException e) {
  140. e.printStackTrace();
  141. }
  142.  
  143. chiudiConnessione();
  144.  
  145. }
  146.  
  147. public void modificaConProcedura(Prodotto p) {
  148. apriConnessione();
  149.  
  150. try {
  151. CallableStatement cst = conn.prepareCall("{call MODIFICAPRODOTTI(?,?,?,?,?,?)}");
  152.  
  153. cst.setString(1, p.getNome_prodotto());
  154. cst.setString(2, p.getDescrizione());
  155. cst.setString(3, p.getPercorso_immagine());
  156. cst.setInt(4, p.getId_marca());
  157. cst.setInt(5, p.getId_categoria());
  158. cst.setInt(6, p.getId_prodotto());
  159. cst.executeUpdate();
  160.  
  161. cst.close();
  162.  
  163.  
  164. } catch(SQLException e) {
  165. e.printStackTrace();
  166. }
  167. }
  168.  
  169. public void cancella(Prodotto p) {
  170. apriConnessione();
  171. String query = "DELETE FROM PRODOTTI WHERE ID =" + p.getId_prodotto();
  172. PreparedStatement ps;
  173.  
  174. try {
  175. ps = (PreparedStatement) conn.prepareStatement(query);
  176. ps.executeUpdate(query); //effettua cancellazione dal DB
  177. } catch(SQLException e) {
  178. e.printStackTrace();
  179. }
  180.  
  181. chiudiConnessione();
  182. }
  183.  
  184. public void cancellaConProcedura(Prodotto p) {
  185. apriConnessione();
  186.  
  187. try {
  188. CallableStatement cst = conn.prepareCall("{call CANCELLAMENTOPRODOTTI(?)}");
  189. cst.setInt(1, p.getId_prodotto());
  190. cst.executeUpdate(); //effettua cancellazione dal DB
  191. } catch(SQLException e) {
  192. e.printStackTrace();
  193.  
  194. }
  195.  
  196. chiudiConnessione();
  197. }
  198.  
  199. public ArrayList<Dto> leggiDto() {
  200. return this.tabellaDto;
  201. }
  202.  
  203. public ArrayList<Dto> generaDto(){
  204. apriConnessione();
  205.  
  206. String query = ("SELECT ID, NOMEPRODOTTI, DESCRIZIONE, LINKIMMAGINE, NOMEMARCA, NOMECATEGORIA FROM PRODOTTI JOIN MARCHE ON PRODOTTI.IDMARCA = MARCHE.ID JOIN CATEGORIE ON PRODOTTI.IDCATEGORIA = CATEGORIE.ID");
  207. try {
  208. PreparedStatement ps = (PreparedStatement) conn.prepareStatement(query);
  209. ResultSet rs = ps.executeQuery();
  210. while(rs.next()) {
  211. Dto dto = new Dto(); //genera nuovo prodotto da inserirei nell'arraylist
  212. dto.setId_prodotto(rs.getInt("ID"));
  213. dto.setNome_prodotto(rs.getString("NOMEPRODOTTO"));
  214. dto.setDescrizione(rs.getString("DESCRIZIONI"));
  215. dto.setPercorso_immagine(rs.getString("LINKIMMAGINE"));
  216. dto.setNome_marca(rs.getString("NOMEMARCA"));
  217. dto.setNome_categoria(rs.getString("NOMECATEGORIA"));
  218. tabellaDto.add(dto); //aggiunge
  219. }
  220. ps.close();
  221. rs.close();
  222. } catch(SQLException e) {
  223. e.printStackTrace();
  224. }
  225. chiudiConnessione();
  226. return tabellaDto;
  227. }
  228.  
  229. public ArrayList<Prodotto> leggiConProcedura(){
  230. apriConnessione();
  231.  
  232. CallableStatement cst;
  233. String query = "{call leggiProdotti(?)}";
  234. try {
  235. cst = (CallableStatement) conn.prepareCall(query);
  236. cst.registerOutParameter(1, oracle.jdbc.OracleTypes.CURSOR);
  237. cst.execute();
  238.  
  239. ResultSet rs = (ResultSet) cst.getObject(1);
  240. while(rs.next()) {
  241. Prodotto p = new Prodotto();
  242. p.setId_prodotto(rs.getInt("ID"));
  243. p.setDescrizione(rs.getString("DESCRIZIONE"));
  244. p.setPercorso_immagine(rs.getString("LINKIMMAGINE"));
  245. p.setId_marca(rs.getInt("IDMARCA"));
  246. p.setId_categoria(rs.getInt("IDCATEGORIA"));
  247. tabellaProdotti.add(p); //aggiunge
  248. }
  249. cst.close();
  250. rs.close();
  251.  
  252. }catch(SQLException e) {
  253. e.printStackTrace();
  254. }
  255. chiudiConnessione();
  256. return tabellaProdotti;
  257. }
  258.  
  259. public DaoProdotto(){
  260. }
  261. }
Add Comment
Please, Sign In to add comment