Advertisement
Guest User

Untitled

a guest
Mar 31st, 2017
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.13 KB | None | 0 0
  1. /*
  2. * To change this license header, choose License Headers in Project Properties.
  3. * To change this template file, choose Tools | Templates
  4. * and open the template in the editor.
  5. */
  6. package Exercise_3_db;
  7.  
  8. import java.sql.Connection;
  9. import java.sql.DriverManager;
  10. import java.sql.PreparedStatement;
  11. import java.sql.ResultSet;
  12. import java.sql.SQLException;
  13. import java.sql.Statement;
  14. import java.util.ArrayList;
  15. import java.util.logging.Level;
  16. import java.util.logging.Logger;
  17.  
  18. public class QueriesMysql {
  19.  
  20. private Connection con;
  21. private PreparedStatement st;
  22. private ResultSet rs;
  23.  
  24. private String url;
  25. private String user;
  26. private String password;
  27. long startTime, stopTime;
  28. double elapsedTime;
  29.  
  30. public QueriesMysql() {
  31. con = null;
  32. st = null;
  33. rs = null;
  34.  
  35. url = "jdbc:mysql://localhost:3306/social_network_db?autoReconnect=true&useSSL=false";
  36. user = "root";
  37. password = "pwd";
  38. }
  39.  
  40. public double findPersonEndorsesTaskA(String name) throws SQLException {
  41.  
  42. String query = "SELECT DISTINCT testb.name FROM social_network_db.t_user"
  43. + " LEFT JOIN t_endorses AS testa ON testa.source_node_id = t_user.id"
  44. + " LEFT JOIN t_user AS testb ON testa.target_node_id = testb.id"
  45. + " WHERE t_user.name = ?";
  46.  
  47. startTime = System.currentTimeMillis();
  48. ResultSet rsFromQ = getQuery(query, name, true);
  49.  
  50. stopTime = System.currentTimeMillis();
  51. elapsedTime = stopTime - startTime;
  52. /* while (rsFromQ.next()) {
  53. System.out.println(rsFromQ.getString(1));
  54. }*/
  55. closeConnection();
  56. return elapsedTime;
  57. }
  58.  
  59. public double findPersonEndorsesTaskB(String name) throws SQLException {
  60. String query = "SELECT DISTINCT t_user_2.name FROM social_network_db.t_user\n"
  61. + "LEFT JOIN t_endorses AS t_endorses_1 ON t_endorses_1.source_node_id = t_user.id\n"
  62. + "LEFT JOIN t_user AS t_user_1 ON t_endorses_1.target_node_id = t_user_1.id\n"
  63. + "LEFT JOIN t_endorses AS t_endorses_2 ON t_endorses_2.source_node_id = t_user_1.id\n"
  64. + "LEFT JOIN t_user AS t_user_2 ON t_endorses_2.target_node_id = t_user_2.id\n"
  65. + "WHERE t_user.name = ?";
  66. startTime = System.currentTimeMillis();
  67. ResultSet rsFromQ = getQuery(query, name, true);
  68. stopTime = System.currentTimeMillis();
  69. elapsedTime = stopTime - startTime;
  70. /*while (rsFromQ.next()) {
  71. System.out.println(rsFromQ.getString(1));
  72. }*/
  73. closeConnection();
  74. return elapsedTime;
  75. }
  76.  
  77. public double findPersonEndorsesTaskC(String name) throws SQLException {
  78. String query = "SELECT DISTINCT t_user_3.name FROM social_network_db.t_user\n"
  79. + "LEFT JOIN t_endorses AS t_endorses_1 ON t_endorses_1.source_node_id = t_user.id\n"
  80. + "LEFT JOIN t_user AS t_user_1 ON t_endorses_1.target_node_id = t_user_1.id\n"
  81. + "LEFT JOIN t_endorses AS t_endorses_2 ON t_endorses_2.source_node_id = t_user_1.id\n"
  82. + "LEFT JOIN t_user AS t_user_2 ON t_endorses_2.target_node_id = t_user_2.id\n"
  83. + "LEFT JOIN t_endorses AS t_endorses_3 ON t_endorses_3.source_node_id = t_user_2.id\n"
  84. + "LEFT JOIN t_user AS t_user_3 ON t_endorses_3.target_node_id = t_user_3.id\n"
  85. + "WHERE t_user.name = ?";
  86. startTime = System.currentTimeMillis();
  87. ResultSet rsFromQ = getQuery(query, name, true);
  88. stopTime = System.currentTimeMillis();
  89. elapsedTime = stopTime - startTime;
  90.  
  91. /*while (rsFromQ.next()) {
  92. System.out.println(rsFromQ.getString(1));
  93. }*/
  94. closeConnection();
  95. return elapsedTime;
  96. }
  97.  
  98. public double findPersonEndorsesTaskD(String name) throws SQLException {
  99. String query = "SELECT DISTINCT t_user_4.name FROM social_network_db.t_user\n"
  100. + "LEFT JOIN t_endorses AS t_endorses_1 ON t_endorses_1.source_node_id = t_user.id\n"
  101. + "LEFT JOIN t_user AS t_user_1 ON t_endorses_1.target_node_id = t_user_1.id\n"
  102. + "LEFT JOIN t_endorses AS t_endorses_2 ON t_endorses_2.source_node_id = t_user_1.id\n"
  103. + "LEFT JOIN t_user AS t_user_2 ON t_endorses_2.target_node_id = t_user_2.id\n"
  104. + "LEFT JOIN t_endorses AS t_endorses_3 ON t_endorses_3.source_node_id = t_user_2.id\n"
  105. + "LEFT JOIN t_user AS t_user_3 ON t_endorses_3.target_node_id = t_user_3.id\n"
  106. + "LEFT JOIN t_endorses AS t_endorses_4 ON t_endorses_4.source_node_id = t_user_3.id\n"
  107. + "LEFT JOIN t_user AS t_user_4 ON t_endorses_4.target_node_id = t_user_4.id\n"
  108. + "WHERE t_user.name = ?";
  109. startTime = System.currentTimeMillis();
  110. ResultSet rsFromQ = getQuery(query, name, true);
  111. stopTime = System.currentTimeMillis();
  112. elapsedTime = stopTime - startTime;
  113.  
  114.  
  115. /* while (rsFromQ.next()) {
  116. System.out.println(rsFromQ.getString(1));
  117. }*/
  118. closeConnection();
  119. return elapsedTime;
  120. }
  121.  
  122. public double findPersonEndorsesTaskE(String name) throws SQLException {
  123. String query = "SELECT DISTINCT t_user_5.name FROM social_network_db.t_user\n"
  124. + "LEFT JOIN t_endorses AS t_endorses_1 ON t_endorses_1.source_node_id = t_user.id\n"
  125. + "LEFT JOIN t_user AS t_user_1 ON t_endorses_1.target_node_id = t_user_1.id\n"
  126. + "LEFT JOIN t_endorses AS t_endorses_2 ON t_endorses_2.source_node_id = t_user_1.id\n"
  127. + "LEFT JOIN t_user AS t_user_2 ON t_endorses_2.target_node_id = t_user_2.id\n"
  128. + "LEFT JOIN t_endorses AS t_endorses_3 ON t_endorses_3.source_node_id = t_user_2.id\n"
  129. + "LEFT JOIN t_user AS t_user_3 ON t_endorses_3.target_node_id = t_user_3.id\n"
  130. + "LEFT JOIN t_endorses AS t_endorses_4 ON t_endorses_4.source_node_id = t_user_3.id\n"
  131. + "LEFT JOIN t_user AS t_user_4 ON t_endorses_4.target_node_id = t_user_4.id\n"
  132. + "LEFT JOIN t_endorses AS t_endorses_5 ON t_endorses_5.source_node_id = t_user_4.id\n"
  133. + "LEFT JOIN t_user AS t_user_5 ON t_endorses_5.target_node_id = t_user_5.id\n"
  134. + "WHERE t_user.name = ?";
  135. startTime = System.currentTimeMillis();
  136. ResultSet rsFromQ = getQuery(query, name, true);
  137. stopTime = System.currentTimeMillis();
  138. elapsedTime = stopTime - startTime;
  139.  
  140. /* while (rsFromQ.next()) {
  141. System.out.println(rsFromQ.getString(1));
  142. }*/
  143. closeConnection();
  144. return elapsedTime;
  145. }
  146.  
  147. public ArrayList<String> get20RandomUsersName(){
  148. String query = "SELECT name FROM t_user ORDER BY RAND() LIMIT 20";
  149. ResultSet rsFromQ = getQuery(query, null, false);
  150. ArrayList<String> arrNames = new ArrayList<String>();
  151. try {
  152. while (rsFromQ.next()) {
  153. arrNames.add(rsFromQ.getString(1));
  154. //System.out.println(rsFromQ.getString(1));
  155. }
  156. } catch (SQLException ex) {
  157. Logger.getLogger(QueriesMysql.class.getName()).log(Level.SEVERE, null, ex);
  158. }
  159. closeConnection();
  160. return arrNames;
  161. }
  162.  
  163. private ResultSet getQuery(String query, String parmName, boolean isFindEndorses) {
  164.  
  165. try {
  166. con = DriverManager.getConnection(url, user, password);
  167.  
  168. st = con.prepareStatement(query);
  169. if(isFindEndorses)
  170. st.setString(1, parmName);
  171. rs = st.executeQuery();
  172.  
  173. } catch (SQLException ex) {
  174. System.err.println(ex.getMessage());
  175. System.err.println(ex);
  176. return null;
  177. }
  178. return rs;
  179. }
  180.  
  181. private void closeConnection() {
  182. try {
  183. if (rs != null) {
  184. rs.close();
  185. }
  186. if (st != null) {
  187. st.close();
  188. }
  189. if (con != null) {
  190. con.close();
  191. }
  192. } catch (SQLException ex) {
  193. System.err.println(ex.getMessage());
  194. System.err.println(ex);
  195. }
  196. }
  197. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement