Advertisement
Guest User

Untitled

a guest
Jan 20th, 2019
81
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.63 KB | None | 0 0
  1. package pl.polsl.zti.db1.dao;
  2.  
  3. import java.sql.Connection;
  4. import java.sql.PreparedStatement;
  5. import java.sql.ResultSet;
  6. import java.sql.SQLException;
  7. import java.sql.Statement;
  8. import java.util.ArrayList;
  9. import java.util.List;
  10. import pl.polsl.zti.db1.domain.Client;
  11. import pl.polsl.zti.db1.util.JdbcUtils;
  12.  
  13. public class ClientDaoImplJdbc implements ClientDao {
  14.  
  15. @Override
  16. public Client getClient(int id) {
  17. Client client = null;
  18. Connection con = null;
  19. PreparedStatement preparedStatement = null; // polecenie prekompilowane
  20. try {
  21. con = JdbcUtils.getConnection();
  22. preparedStatement = con.prepareStatement("SELECT * FROM CLIENTS WHERE id = ?");
  23. preparedStatement.setInt(1, id); // ustawia wartość parametru
  24.  
  25. final ResultSet resultSet = preparedStatement.executeQuery();
  26. if (resultSet.next()) {
  27. client = readClient(resultSet);
  28. }
  29. } catch (SQLException ex) {
  30. JdbcUtils.handleSqlException(ex);
  31. } finally {
  32. JdbcUtils.closeSilently(preparedStatement, con);
  33. }
  34.  
  35. return client;
  36. }
  37.  
  38. @Override
  39. public List<Client> getClients() {
  40. // lista klientów do zwrócenia
  41. final List<Client> clients = new ArrayList<Client>();
  42.  
  43. Connection con = null;
  44. Statement stmt = null;
  45. try {
  46. con = JdbcUtils.getConnection();
  47. stmt = con.createStatement();
  48. final ResultSet resultSet = stmt.executeQuery("SELECT ID, CLIENT_NO, NAME, SSN, ADDRESS FROM CLIENTS");
  49. while (resultSet.next()) {
  50. // utwórz nowy obiekt typu Client
  51. final Client client = readClient(resultSet);
  52. // dodaj klienta do listy
  53. clients.add(client);
  54. }
  55. } catch (SQLException ex) {
  56. JdbcUtils.handleSqlException(ex);
  57. } finally {
  58. JdbcUtils.closeSilently(stmt, con);
  59. }
  60.  
  61. return clients;
  62. }
  63.  
  64. @Override
  65. public List<Client> getClients(String name) {
  66. // Zaimplementować pobieranie z bazy klientów według nazwy.
  67. // Znak '_' zastępuje dowolny znak we wzorcu,
  68. // znak '%' zastępuje dowolny ciąg znaków we wzorcu
  69. // (wykorzystać operator LIKE).
  70. // Wartość null w miejscu kryterium powoduje, ze nie jest ono brane pod uwagę.
  71. // Przykłady:
  72. // * wywołanie getClients(null) ma zwrócić wszystkich klientów
  73. // * wywołanie getClients("A%") ma zwrócić wszystkich klientów,
  74. // których nazwy zaczynają się na literę 'A'
  75.  
  76. final List<Client> clients = new ArrayList<Client>();
  77.  
  78. Connection con = null;
  79. Statement stmt = null;
  80. String command;
  81. if (name == null)
  82. command = "SELECT ID, CLIENT_NO, NAME, SSN, ADDRESS FROM CLIENTS";
  83. else
  84. command = "SELECT ID, CLIENT_NO, NAME, SSN, ADDRESS FROM CLIENTS WHERE NAME LIKE '" + name + "'";
  85. try {
  86. con = JdbcUtils.getConnection();
  87. stmt = con.createStatement();
  88. final ResultSet resultSet = stmt.executeQuery(command);
  89. while (resultSet.next()) {
  90. // utwórz nowy obiekt typu Client
  91. final Client client = readClient(resultSet);
  92. // dodaj klienta do listy
  93. clients.add(client);
  94. }
  95. } catch (SQLException ex) {
  96. JdbcUtils.handleSqlException(ex);
  97. } finally {
  98. JdbcUtils.closeSilently(stmt, con);
  99. }
  100.  
  101. return clients;
  102. }
  103.  
  104. private Client readClient(final ResultSet rs) throws SQLException {
  105. // utwórz nowy obiekt typu Client
  106. final Client client = new Client();
  107. // przypisz wartości do poszczególnych pól klienta
  108. client.setId(rs.getInt("ID"));
  109. client.setNo(rs.getInt("CLIENT_NO"));
  110. client.setName(rs.getString("NAME"));
  111. client.setSsn(rs.getString("SSN"));
  112. client.setAddress(rs.getString("ADDRESS"));
  113. return client;
  114. }
  115.  
  116. @Override
  117. public void insertClients(List<Client> clients) {
  118. // Zaimplementować wstawianie do bazy podanej listy klientów.
  119. // Wstawianie wszystkich klientów ma być przeprowadzone w ramach jednej transakcji.
  120. // Proszę wykorzystać polecenia prekompilowane.
  121.  
  122. Connection con = null;
  123. PreparedStatement pstmt = null;
  124. try {
  125. con = JdbcUtils.getConnection();
  126. pstmt = con.prepareStatement("INSERT INTO clients VALUES (?,?,?,?,?)");
  127. for (Client cln : clients) {
  128. con.setAutoCommit(false);
  129. pstmt.setInt(1, cln.getId());
  130. pstmt.setInt(2, cln.getNo());
  131. pstmt.setString(3, cln.getName());
  132. pstmt.setString(4, cln.getSsn());
  133. pstmt.setString(5, cln.getAddress());
  134. pstmt.executeUpdate();
  135. con.commit();
  136. }
  137. } catch (SQLException ex) {
  138. JdbcUtils.handleSqlException(ex);
  139. } finally {
  140. JdbcUtils.closeSilently(pstmt, con);
  141. }
  142. }
  143.  
  144. @Override
  145. public void updateClient(Client client) {
  146. // Zaimplementować aktualizację danych podanego klienta w bazie.
  147.  
  148. Connection con = null;
  149. PreparedStatement pstmt = null;
  150. try {
  151. con = JdbcUtils.getConnection();
  152. pstmt = con.prepareStatement("UPDATE clients SET CLIENT_NO=?, NAME=?, SSN=?, ADDRESS=? WHERE ID=?");
  153.  
  154. pstmt.setInt(1, client.getNo());
  155. pstmt.setString(2, client.getName());
  156. pstmt.setString(3, client.getSsn());
  157. pstmt.setString(4, client.getAddress());
  158. pstmt.setInt(5, client.getId());
  159. pstmt.executeUpdate();
  160.  
  161. } catch (SQLException ex) {
  162. JdbcUtils.handleSqlException(ex);
  163. } finally {
  164. JdbcUtils.closeSilently(pstmt, con);
  165. }
  166. }
  167.  
  168. @Override
  169. public void deleteClient(int id) {
  170. Connection con = null;
  171. Statement stmt = null;
  172. try {
  173. con = JdbcUtils.getConnection();
  174. stmt = con.createStatement();
  175. stmt.executeUpdate("DELETE FROM CLIENTS WHERE id = " + id);
  176. } catch (SQLException ex) {
  177. JdbcUtils.handleSqlException(ex);
  178. } finally {
  179. JdbcUtils.closeSilently(stmt, con);
  180. }
  181. }
  182.  
  183. @Override
  184. public void deleteClient(Client client) {
  185. deleteClient(client.getId());
  186. }
  187. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement