Advertisement
Guest User

Untitled

a guest
Jan 16th, 2017
127
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.89 KB | None | 0 0
  1. package Clases;
  2. import java.sql.CallableStatement;
  3. import java.sql.Connection;
  4. import java.sql.DriverManager;
  5. import java.sql.PreparedStatement;
  6. import java.sql.ResultSet;
  7. import java.sql.SQLException;
  8. import java.sql.Statement;
  9. import java.util.ArrayList;
  10. import java.util.HashMap;
  11.  
  12. import org.hsqldb.types.Types;
  13.  
  14. public class AccesMySQL {
  15. private Connection cn;
  16. private Statement st;
  17. private PreparedStatement psProduct;
  18. private PreparedStatement psInsertOrder;
  19. private PreparedStatement psGetOrder;
  20. private PreparedStatement psGetOrderDetail;
  21. private CallableStatement cs;
  22. public AccesMySQL (String dbName, String usuari, String password) throws ClassNotFoundException, SQLException
  23. {
  24. ResultSet taulesBaseDades;
  25. String[] tipus = {"TABLE"};
  26. //int i=1;
  27.  
  28. Class.forName("com.mysql.jdbc.Driver");
  29.  
  30. String url = "jdbc:mysql://+localhost:3306/"+dbName;
  31. cn = DriverManager.getConnection(url, usuari, password);
  32. st = cn.createStatement();
  33.  
  34. psProduct = cn.prepareStatement("INSERT INTO products "
  35. + "(productCode, productName, quantityInStock, buyPrice, msrp)"
  36. + "VALUES (?,?,?,?,?)");
  37. psInsertOrder = cn.prepareStatement("INSERT INTO orders "
  38. + "(orderNumber, orderDate, requiredDate, shippedDate, status, comments, customerNumber)"
  39. + "VALUES (?,?,?,?,?,?,?)");
  40. psGetOrder = cn.prepareStatement("SELECT orderNumber, orderDate, requiredDate, shippedDate, status, comments, customerNumber"
  41. + "FROM orders"
  42. + "WHERE orderNumber=?");
  43. psGetOrderDetail = cn.prepareStatement("SELECT orderNumber, productCode, quantityOrdered, priceEach, orderLineNumber"
  44. + "FROM orderdetails"
  45. + "WHERE orderNumber=?");
  46. }
  47.  
  48. public boolean InsertModel(Product p) throws SQLException
  49. {
  50. boolean resultat;
  51. psProduct.setString(1, p.getProductCode());
  52. psProduct.setString(2, p.getProductName());
  53. psProduct.setInt(3,p.getQuantityStock());
  54. psProduct.setDouble(4, p.getBuyPrice());
  55. psProduct.setDouble(5,p.getMsrp());
  56.  
  57. return psProduct.executeUpdate()!= 0;
  58. }
  59. public boolean InsertCustomer(Customer c) throws Exception
  60. {
  61. Boolean resultat;
  62. cs = cn.prepareCall("{call ExisteixCustomer(?, ?)}");
  63. cs.registerOutParameter(2, Types.BOOLEAN);
  64. cs.setInt(1,c.getNumber());
  65. cs.execute();
  66. if (!cs.getBoolean(2))
  67. {
  68. String sql = "INSERT INTO customers"
  69. + "(customerNumber,customerName,contactLastName,contactFirstName,"
  70. + "phone,addressLine1,addressLine2,city,state,"
  71. + "postalCode,country,salesRepEmployeeNumber,creditLimit)"
  72. + "VALUES ("+c.getNumber()+",'"+c.getName()+"','"
  73. +c.getContactLastName()+"','"+c.getContactFirstName()
  74. +"','"+c.getPhone()+"','"+c.getAddressLine1()+"',"
  75. +(c.getAddressLine2().equals("NULL")?
  76. "NULL" :"'"+c.getAddressLine2()+"'")
  77. +",'"+c.getCity()+"',"
  78. +(c.getState().equals("NULL")?
  79. "NULL":"'"+c.getState()+"'")
  80. +",'"+c.getPostalCode()+"','"+c.getCountry()
  81. +"',"+ (c.getEmployeeNumber()==-1 ?
  82. "NULL":String.valueOf(c.getEmployeeNumber()))
  83. +","+(c.getCreditLimit()==-1 ?
  84. "NULL":String.valueOf(c.getCreditLimit())+")");
  85. //System.out.println(sql);
  86. resultat = st.executeUpdate(sql) != 0;
  87. }
  88. else
  89. throw new Exception("Aquest customer ja existeix");
  90. return resultat;
  91.  
  92.  
  93. }
  94.  
  95. public boolean InsertComanda(Order o, OrderDetail od) throws SQLException
  96. {
  97. boolean resultat = true;
  98. try
  99. {
  100. cn.setAutoCommit(false);
  101.  
  102. cs = cn.prepareCall("{call ExisteixCustomer(?, ?)}");
  103. cs.registerOutParameter(2, Types.BOOLEAN);
  104. cs.setInt(1, o.getCustomerNumber());
  105. cs.execute();
  106. if (cs.getBoolean(2))
  107. {
  108. if (!InsertOrder(o))
  109. throw new Exception("Order no s'ha pogut inserir");
  110.  
  111. if (!InsertOrderDetail(od))
  112. throw new Exception("Order Detail no s'ha pogut inserir");
  113. }
  114. else
  115. throw new Exception("Aquest customer no existeix");
  116.  
  117. cn.commit();
  118. }
  119. catch (Exception err)
  120. {
  121. System.out.println(err.getMessage());
  122. resultat = false;
  123. //cn.rollback();
  124. }
  125. finally
  126. {
  127. cn.setAutoCommit(true);
  128. }
  129.  
  130. return resultat;
  131. }
  132. private boolean InsertOrder(Order o) throws Exception
  133. {
  134. boolean resultat;
  135. cs = cn.prepareCall("{call ExisteixOrder(?, ?)}");
  136. cs.registerOutParameter(2, Types.BOOLEAN);
  137. cs.setInt(1, o.getNumber());
  138. cs.execute();
  139. if (!cs.getBoolean(2))//No Existeix codi Order
  140. {
  141. psInsertOrder.setInt(1, o.getNumber());
  142. psInsertOrder.setString(2, o.getDate());
  143. psInsertOrder.setString(3, o.getRequiredDate());
  144. psInsertOrder.setString(4,
  145. (o.getShippedDate().equals("NULL")?
  146. null:o.getShippedDate()));
  147. psInsertOrder.setString(5, o.getStatus());
  148. psInsertOrder.setString(6,
  149. (o.getComments().equals("NULL")?
  150. null:o.getComments()));
  151. psInsertOrder.setInt(7, o.getCustomerNumber());
  152. }
  153. else
  154. return false;
  155. resultat = psInsertOrder.executeUpdate() != 0;
  156. return resultat;
  157. }
  158. private boolean InsertOrderDetail(OrderDetail od) throws Exception
  159. {
  160. cs = cn.prepareCall("{call ExisteixOrder(?, ?)}");
  161. cs.registerOutParameter(2, Types.BOOLEAN);
  162. cs.setInt(1, od.getNumber());
  163. cs.execute();
  164. if (cs.getBoolean(2))//Existeix codi Order
  165. {
  166. for(LineOrder lo : od.getLineOrders())
  167. {
  168. String sql = "INSERT INTO orderDetails "
  169. + "(orderNumber, productCode, quantityOrdered,"
  170. + " priceEach, orderLineNumber)"
  171. + " VALUES (" + od.getNumber() + ",'" + lo.getProductCode()+"',"
  172. + lo.getQuantityOrdered() + "," + lo.getPriceEach()+ ","
  173. + lo.getOrderLineNumber() + ")";
  174. //System.out.println(sql);
  175. if (st.executeUpdate(sql)==0)
  176. throw new Exception("No s'ha pogut insertar line order: "+lo.getOrderLineNumber());
  177. }
  178. }
  179. else
  180. return false;
  181.  
  182. return true;
  183. }
  184.  
  185. public Order GetOrder(int codiComanda) throws SQLException
  186. {
  187. Order order = null;
  188. psGetOrder.setInt(1, codiComanda);
  189. ResultSet rs = psGetOrder.executeQuery();
  190. if(rs.next())
  191. {
  192. order = new Order(rs.getInt("orderNumber"),
  193. rs.getString("orderDate"),
  194. rs.getString("requiredDate"),
  195. rs.getString("shippedDate"),
  196. rs.getString("status"),
  197. rs.getString("comments"),
  198. rs.getInt("customerNumber"));
  199. }
  200. return order;
  201. }
  202. public OrderDetail GetOrderDetail(int codiComanda) throws SQLException
  203. {
  204. OrderDetail detallOrdre = null;
  205. ArrayList<LineOrder> lineOrders;
  206. int i = 0;
  207. psGetOrder.setInt(1, codiComanda);
  208. ResultSet rs = psGetOrder.executeQuery();
  209. lineOrders = new ArrayList<LineOrder>();
  210. while(rs.next())
  211. {
  212. lineOrders.set(i, new LineOrder(rs.getString("productCode"),
  213. rs.getInt("quantityOrdered"),
  214. rs.getDouble("priceEach"),
  215. rs.getInt("orderLineNumber"),
  216. rs.getInt("orderNumber")));
  217. i++;
  218. }
  219. detallOrdre = new OrderDetail(rs.getInt("orderNumber"), lineOrders);
  220. return detallOrdre;
  221. }
  222. public double GetTotalOrder(int codiComanda) throws SQLException
  223. {
  224. double resultat = 0;
  225. cs = cn.prepareCall("{call ImportTotal(?, ?)}");
  226. cs.registerOutParameter(2, Types.DOUBLE);
  227. cs.setInt(1, codiComanda);
  228. cs.execute();
  229. return cs.getDouble(2);
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement