Advertisement
Guest User

Untitled

a guest
Jul 19th, 2017
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 18.73 KB | None | 0 0
  1. package JDBCProject1;
  2.  
  3. import java.sql.*;
  4.  
  5. import edu.uci.ics.pattis.introlib.*;
  6.  
  7. import java.util.*;
  8.  
  9. public class JDBCProject1 {
  10.  
  11. //Present menu and get user's choice
  12.  
  13. @SuppressWarnings("restriction")
  14. private static char menuPrompt () {
  15. System.out.println("FabFlix Commands: ");
  16. System.out.println(" p - Print out movies featuring a star");
  17. System.out.println(" s - Insert a new star into database");
  18. System.out.println(" c - Insert a customer into database");
  19. System.out.println(" d - Delete a customer from database");
  20. System.out.println(" m - Provide metadata of database");
  21. System.out.println(" x - Provide a SQL command");
  22. System.out.println(" u - Exit the menu");
  23. System.out.println(" z - Exit the program");
  24.  
  25. return Prompt.forChar("\nEnter Command","pscdmxuz");
  26. }
  27.  
  28.  
  29. @SuppressWarnings({ "restriction", "unused" })
  30. public static void main(String[] args) throws Exception {
  31. Connection conn = null;
  32. Statement stmt = null;
  33. Statement stmt1 = null;
  34. boolean loggedIn = false;
  35. ResultSet rs = null;
  36. ResultSet rsType = null;
  37.  
  38. String url = "jdbc:mysql:///moviedb";
  39.  
  40.  
  41. Class.forName("com.mysql.jdbc.Driver").newInstance();
  42. if (loggedIn == false) {
  43. for(;;) {
  44. System.out.println("Welcome to FabFlix! Please input user information below:");
  45. String username = Prompt.forString("Enter username");
  46. String password = Prompt.forString("Enter password");
  47.  
  48. if (username.equals("root") && password.equals("lakers")) {
  49. conn = DriverManager.getConnection(url, username, password);
  50. stmt = conn.createStatement();
  51. stmt1 = conn.createStatement();
  52. loggedIn = true;
  53. username = null;
  54. password = null;
  55. break;
  56. }
  57.  
  58. else
  59. System.out.println("Wrong username/password combination. Please try again.");
  60.  
  61.  
  62.  
  63. }
  64. }
  65.  
  66. for(;;) try {
  67. if (loggedIn == true) {
  68. char selection = menuPrompt();
  69. if (selection == 'p') {
  70. String firstName = Prompt.forString("Please enter first name");
  71. String lastName = Prompt.forString("Please enter last name");
  72. String identification = Prompt.forString("Please enter ID");
  73. if (firstName.equals("") && !lastName.isEmpty()) {
  74. rs = stmt.executeQuery("SELECT m.id, m.title, m.year, m.director, m.banner_url, m.trailer_url FROM movies as m, stars as s, stars_in_movies as t" +
  75. " WHERE m.id = t.movie_id and s.id = t.star_id and s.last_name = " + "'" + lastName + "'");
  76. ResultSetMetaData rsmd = rs.getMetaData();
  77. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  78. System.out.print(rsmd.getColumnName(i) + "\t");
  79. }
  80. System.out.println();
  81.  
  82. while (rs.next()) {
  83. int id = rs.getInt("id");
  84. String title = rs.getString("title");
  85. int year = rs.getInt("year");
  86. String director = rs.getString("director");
  87. String banner = rs.getString("banner_url");
  88. String trailer = rs.getString("trailer_url");
  89. System.out.println(id + "\t" + title + "\t" + year + "\t" + director + "\t" + banner + "\t" + trailer);
  90. }
  91. }
  92. else if (lastName.equals("") && !firstName.isEmpty()){ //Have: First name/Don't Have: Last name or ID
  93. rs = stmt.executeQuery("SELECT m.id, m.title, m.year, m.director, m.banner_url, m.trailer_url FROM movies as m, stars as s, stars_in_movies as t" +
  94. " WHERE m.id = t.movie_id and s.id = t.star_id and s.first_name = " + "'" + firstName + "'");
  95. ResultSetMetaData rsmd = rs.getMetaData();
  96. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  97. System.out.print(rsmd.getColumnName(i) + "\t");
  98. }
  99. System.out.println();
  100. while (rs.next()) {
  101. int id = rs.getInt("id");
  102. String title = rs.getString("title");
  103. int year = rs.getInt("year");
  104. String director = rs.getString("director");
  105. String banner = rs.getString("banner_url");
  106. String trailer = rs.getString("trailer_url");
  107. System.out.println(id + "\t" + title + "\t" + year + "\t" + director + "\t" + banner + "\t" + trailer);
  108. }
  109. }
  110. else if (firstName.equals("") && lastName.equals("")) {
  111. int newID = Integer.parseInt(identification);
  112. rs = stmt.executeQuery("SELECT m.id, m.title, m.year, m.director, m.banner_url, m.trailer_url FROM movies as m, stars as s, stars_in_movies as t " +
  113. " WHERE m.id=t.movie_id and s.id=t.star_id and s.id = " + newID);
  114. System.out.println("got here 1");
  115. ResultSetMetaData rsmd = rs.getMetaData();
  116. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  117. System.out.print(rsmd.getColumnName(i) + "\t");
  118. }
  119. System.out.println();
  120.  
  121. while (rs.next()) {
  122. int id = rs.getInt("id");
  123. String title = rs.getString("title");
  124. int year = rs.getInt("year");
  125. String director = rs.getString("director");
  126. String banner = rs.getString("banner_url");
  127. String trailer = rs.getString("trailer_url");
  128. System.out.println(id + "\t" + title + "\t" + year + "\t" + director + "\t" + banner + "\t" + trailer);
  129. }
  130. }
  131. else {
  132. rs = stmt.executeQuery("SELECT m.id, m.title, m.year, m.director, m.banner_url, m.trailer_url FROM movies as m, stars as s, stars_in_movies as t" +
  133. " WHERE m.id = t.movie_id and s.id = t.star_id and s.first_name = " + "'" + firstName + "'" + " and s.last_name = " + "'" +lastName +"'");
  134. ResultSetMetaData rsmd = rs.getMetaData();
  135. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  136. System.out.print(rsmd.getColumnName(i) + "\t");
  137. }
  138. System.out.println();
  139.  
  140. while (rs.next()) {
  141. int id = rs.getInt("id");
  142. String title = rs.getString("title");
  143. int year = rs.getInt("year");
  144. String director = rs.getString("director");
  145. String banner = rs.getString("banner_url");
  146. String trailer = rs.getString("trailer_url");
  147. System.out.println(id + "\t" + title + "\t" + year + "\t" + director + "\t" + banner + "\t" + trailer);
  148. }
  149. }
  150. }
  151. else if (selection == 's') {
  152. Boolean singleName = Prompt.forBoolean("Does he/she have a single name?");
  153. if (singleName == true) {
  154. int id = Prompt.forInt("Enter ID number");
  155. String lastName = Prompt.forString("Enter name");
  156. String firstName = "";
  157. String dob = Prompt.forString("Enter DOB");
  158. String photo_url = Prompt.forString("Enter photo_url");
  159. int insert = stmt.executeUpdate("INSERT INTO stars (id, first_name, last_name, dob, photo_url) " +
  160. "VALUES('"+ id +"', '"+ firstName +"','"+
  161. lastName +"','"+ dob + "', '"+ photo_url +"');");
  162. System.out.println("1 record added into the Stars table.");
  163. }
  164. else {
  165. int id = Prompt.forInt("Enter ID number");
  166. String firstName = Prompt.forString("Enter first name");
  167. String lastName = Prompt.forString("Enter last name");
  168. String dob = Prompt.forString("Enter DOB");
  169. String photo_url = Prompt.forString("Enter photo_url");
  170. int insert = stmt.executeUpdate("INSERT INTO stars (id, first_name, last_name, dob, photo_url) " +
  171. "VALUES('"+ id +"', '"+ firstName +"','"+
  172. lastName +"','"+ dob + "', '"+ photo_url +"');");
  173. System.out.println("1 record added into the Stars table.");
  174. }
  175.  
  176. }
  177. else if (selection == 'c') {
  178. Boolean singleName = Prompt.forBoolean("Does he/she have a single name?");
  179. if (singleName == true) {
  180. int id = Prompt.forInt("Enter customer ID");
  181. String firstName = "";
  182. String lastName = Prompt.forString("Enter name");
  183. String cc_id = Prompt.forString("Enter credit card number");
  184. String address = Prompt.forString("Enter address");
  185. String email = Prompt.forString("Enter email");
  186. String password = Prompt.forString("Set a password");
  187. // Checking with credit card data table
  188. rs = stmt.executeQuery("SELECT c.id FROM creditcards as c");
  189. while (rs.next()) {
  190. String credID = rs.getString("id");
  191. if (credID.equals(cc_id)) {
  192. int insert = stmt.executeUpdate("INSERT INTO customers (id, first_name, last_name, cc_id, address, email, password) " +
  193. "VALUES('"+ id +"', '"+ firstName +"','"+
  194. lastName +"','"+ cc_id + "','"+ address +"','"+ email +"','"+ password+"');");
  195. System.out.println("1 row added to customers table.");
  196. break;
  197. }
  198.  
  199. }
  200. }
  201. else
  202. {
  203. int id = Prompt.forInt("Enter customer ID");
  204. String firstName = Prompt.forString("Enter first name");
  205. String lastName = Prompt.forString("Enter last name");
  206. String cc_id = Prompt.forString("Enter credit card number");
  207. String address = Prompt.forString("Enter address");
  208. String email = Prompt.forString("Enter email");
  209. String password = Prompt.forString("Set a password");
  210. // Checking with credit card data table
  211. rs = stmt.executeQuery("SELECT c.id FROM creditcards as c");
  212. while (rs.next()) {
  213. String credID = rs.getString("id");
  214. if (credID.equals((String)cc_id)) {
  215. int insert = stmt.executeUpdate("INSERT INTO customers (id, first_name, last_name, cc_id, address, email, password) " +
  216. "VALUES('"+ id +"', '"+ firstName +"','"+
  217. lastName +"','"+ cc_id + "','"+ address +"','"+ email +"','"+ password+"');");
  218. System.out.println("1 row added to customers table.");
  219. System.out.println();
  220. break;
  221. }
  222.  
  223. }
  224. }
  225. }
  226. else if (selection == 'd') {
  227. int id = Prompt.forInt("Enter ID number for customer removal");
  228. int delete= stmt.executeUpdate("delete from customers WHERE id = " + id);
  229. System.out.println("1 row affected");
  230. }
  231. else if (selection == 'u') {
  232. loggedIn = false;
  233.  
  234.  
  235. if (rs != null) {
  236. try {
  237. rs.close();
  238. } catch (SQLException sqlEx) {
  239. } // ignore
  240.  
  241. rs = null;
  242. }
  243.  
  244. if (rsType != null) {
  245. try {
  246. rsType.close();
  247. } catch (SQLException sqlEx) {
  248. } // ignore
  249.  
  250. rsType = null;
  251. }
  252.  
  253.  
  254. if (stmt != null) {
  255. try {
  256. stmt.close();
  257. } catch (SQLException sqlEx) {
  258. } // ignore
  259.  
  260. stmt = null;
  261. }
  262.  
  263. if (conn != null) {
  264. try {
  265. conn.close();
  266. } catch (SQLException sqlEx) {
  267. } // ignore
  268.  
  269. conn = null;
  270. }
  271.  
  272. Class.forName("com.mysql.jdbc.Driver").newInstance();
  273.  
  274. for(;;) {
  275. System.out.println("Welcome to FabFlix! Please input user information below:");
  276. String username = Prompt.forString("Enter username");
  277. String password = Prompt.forString("Enter password");
  278.  
  279. if (username.equals("root") && password.equals("lakers")) {
  280. conn = DriverManager.getConnection(url, username, password);
  281. stmt = conn.createStatement();
  282. stmt1 = conn.createStatement();
  283. loggedIn = true;
  284. username = null;
  285. password = null;
  286. break;
  287. }
  288.  
  289. else
  290. System.out.println("Wrong username/password combination. Please try again.");
  291.  
  292. }
  293.  
  294.  
  295. }
  296.  
  297. else if (selection == 'x') {
  298. boolean output = Prompt.forBoolean("Will this command return an output? (true or false)");
  299. if (output == true) {
  300. String select = Prompt.forString("SELECT");
  301. String from = Prompt.forString("FROM");
  302. String where = Prompt.forString("WHERE");
  303. if (!where.isEmpty()){
  304. rs = stmt.executeQuery("select " + select + " from " + from + " where " + where);
  305. }
  306. else {
  307. rs = stmt.executeQuery("select " + select + " from " + from);
  308. }
  309.  
  310. ResultSetMetaData rsmd = rs.getMetaData();
  311. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  312. System.out.print(rsmd.getColumnName(i) + "\t");
  313. }
  314. System.out.println();
  315. System.out.println();
  316. String t = "";
  317. for (int i = 1; i<= rsmd.getColumnCount(); i++) {
  318. String s = rsmd.getColumnName(i) + ", ";
  319. t = t + s;
  320. }
  321. String s2 = t;
  322. StringTokenizer st = new StringTokenizer(s2, ", "); // To grab the "new" attributes
  323.  
  324. while (rs.next()) {
  325. while (st.hasMoreTokens()) {
  326. Object o = rs.getObject(st.nextToken());
  327. System.out.print(o + "\t");
  328. }
  329. st = new StringTokenizer(s2, ", ");
  330. System.out.println();
  331. }
  332. }
  333. else {
  334. String option = Prompt.forString("Enter update, insert, or delete");
  335. if (option.equals("update")) {
  336. String update = Prompt.forString("UPDATE");
  337. String set = Prompt.forString("SET");
  338. String where = Prompt.forString("WHERE");
  339. int updateExecute = stmt.executeUpdate("update " + update + " set " + set + " where " + where);
  340. System.out.println("The information has been updated in the " + update+ " table");
  341. }
  342. else if (option.equals("insert")) {
  343. String insertInto = Prompt.forString("INSERT INTO:");
  344. rsType = stmt1.executeQuery("desc "+ insertInto);
  345. String attributes ="(";
  346. while(rsType.next()) {
  347. String field = rsType.getString("field");
  348. if (rsType.isLast())
  349. attributes = attributes + field;
  350. else
  351. attributes = attributes + field + ", ";
  352.  
  353. }
  354. String values = Prompt.forString("VALUES:");
  355. int insertExecute = stmt.executeUpdate("insert into "+ insertInto+ attributes+")"+ " values" + values);
  356. System.out.println("The information has been inserted into the " + insertInto+ " table");
  357. }
  358.  
  359. else if (option.equals("delete")) {
  360. String deleteFrom = Prompt.forString("DELETE FROM");
  361. String where = Prompt.forString("WHERE");
  362. int deleteExecute = stmt.executeUpdate("delete from " + deleteFrom + " where " + where);
  363. System.out.println("The information inputted has deleted the corresponding records");
  364. }
  365. else
  366. System.out.println("Error: You have entered a nonvalid option");
  367. }
  368. }
  369.  
  370.  
  371. else if (selection == 'm') {
  372. // Print Movie Metadata
  373. System.out.println("Movies :");
  374. rs = stmt.executeQuery("SELECT * FROM movies");
  375. rsType = stmt1.executeQuery("desc movies"); // Data table about movie table
  376. ResultSetMetaData rsmd = rs.getMetaData();
  377. for (int i = 1; i <= rsmd.getColumnCount(); i++) {
  378. System.out.print(rsmd.getColumnName(i));
  379. if (rsType.next()) {
  380. String type = rsType.getString("type");
  381. System.out.println( " "+ "("+ type +")" + "\t");
  382. }
  383. }
  384. System.out.println();
  385.  
  386. // Print Stars Metadata
  387. System.out.println("Stars :");
  388. rs = stmt.executeQuery("SELECT * FROM stars");
  389. rsType = stmt1.executeQuery("desc stars");
  390. ResultSetMetaData rsmd1 = rs.getMetaData();
  391. for (int i = 1; i <= rsmd1.getColumnCount(); i++) {
  392. System.out.print(rsmd1.getColumnName(i));
  393. if (rsType.next()) {
  394. String type = rsType.getString("type");
  395. System.out.println( " "+ "("+ type +")" + "\t");
  396. }
  397. }
  398. System.out.println();
  399.  
  400. // Print stars_in_movies metadata
  401. System.out.println("stars_in_movies");
  402. rs = stmt.executeQuery("SELECT * FROM stars_in_movies");
  403. rsType = stmt1.executeQuery("desc stars_in_movies");
  404. ResultSetMetaData rsmd2 = rs.getMetaData();
  405. for (int i = 1; i <= rsmd2.getColumnCount(); i++) {
  406. System.out.print(rsmd2.getColumnName(i));
  407. if (rsType.next()) {
  408. String type = rsType.getString("type");
  409. System.out.println( " "+ "("+ type +")" + "\t");
  410. }
  411. }
  412. System.out.println();
  413.  
  414. // Print genres metadata
  415. System.out.println("genres");
  416. rs = stmt.executeQuery("SELECT * FROM genres");
  417. rsType = stmt1.executeQuery("desc genres");
  418. ResultSetMetaData rsmd3 = rs.getMetaData();
  419. for (int i = 1; i <= rsmd3.getColumnCount(); i++) {
  420. System.out.print(rsmd3.getColumnName(i));
  421. if (rsType.next()) {
  422. String type = rsType.getString("type");
  423. System.out.println( " "+ "("+ type +")" + "\t");
  424. }
  425. }
  426. System.out.println();
  427.  
  428. // Print genres_in_movies metadata
  429. System.out.println("genres_in_movies");
  430. rs = stmt.executeQuery("SELECT * FROM genre_in_movies");
  431. rsType = stmt1.executeQuery("desc genre_in_movies");
  432. ResultSetMetaData rsmd4 = rs.getMetaData();
  433. for (int i = 1; i <= rsmd4.getColumnCount(); i++) {
  434. System.out.print(rsmd4.getColumnName(i));
  435. if (rsType.next()) {
  436. String type = rsType.getString("type");
  437. System.out.println( " "+ "("+ type +")" + "\t");
  438. }
  439. }
  440. System.out.println();
  441.  
  442. // Print customers metadata
  443. System.out.println("customers");
  444. rs = stmt.executeQuery("SELECT * FROM customers");
  445. rsType = stmt1.executeQuery("desc customers");
  446. ResultSetMetaData rsmd5 = rs.getMetaData();
  447. for (int i = 1; i <= rsmd5.getColumnCount(); i++) {
  448. System.out.print(rsmd5.getColumnName(i));
  449. if (rsType.next()) {
  450. String type = rsType.getString("type");
  451. System.out.println( " "+ "("+ type +")" + "\t");
  452. }
  453. }
  454. System.out.println();
  455.  
  456. // Print sales metadata
  457. System.out.println("sales");
  458. rs = stmt.executeQuery("SELECT * FROM sales");
  459. rsType = stmt1.executeQuery("desc sales");
  460. ResultSetMetaData rsmd6 = rs.getMetaData();
  461. for (int i = 1; i <= rsmd6.getColumnCount(); i++) {
  462. System.out.print(rsmd6.getColumnName(i));
  463. if (rsType.next()) {
  464. String type = rsType.getString("type");
  465. System.out.println( " "+ "("+ type +")" + "\t");
  466. }
  467. }
  468. System.out.println();
  469.  
  470. // Print creditcards metadata
  471. System.out.println("creditcards");
  472. rs = stmt.executeQuery("SELECT * FROM creditcards");
  473. rsType = stmt1.executeQuery("desc creditcards");
  474. ResultSetMetaData rsmd7 = rs.getMetaData();
  475. for (int i = 1; i <= rsmd7.getColumnCount(); i++) {
  476. System.out.print(rsmd7.getColumnName(i));
  477. if (rsType.next()) {
  478. String type = rsType.getString("type");
  479. System.out.println( " "+ "("+ type +")" + "\t");
  480. }
  481. }
  482. System.out.println();
  483. }
  484.  
  485. else if (selection == 'z') {
  486. break;
  487. }
  488. else
  489. System.out.println(selection + " is an unknown command") ;
  490.  
  491. } }
  492.  
  493. catch (Exception e) {
  494. e.printStackTrace();
  495.  
  496. }
  497.  
  498. // finally NICE! {
  499. //
  500. // if (rs != null) {
  501. // try {
  502. // rs.close();
  503. // } catch (SQLException sqlEx) {
  504. // } // ignore
  505. //
  506. // rs = null;
  507. // }
  508. //
  509. // if (rsType != null) {
  510. // try {
  511. // rsType.close();
  512. // } catch (SQLException sqlEx) {
  513. // } // ignore
  514. //
  515. // rsType = null;
  516. // }
  517. //
  518. //
  519. // if (stmt != null) {
  520. // try {
  521. // stmt.close();
  522. // } catch (SQLException sqlEx) {
  523. // } // ignore
  524. //
  525. // stmt = null;
  526. // }
  527. //
  528. // if (conn != null) {
  529. // try {
  530. // conn.close();
  531. // } catch (SQLException sqlEx) {
  532. // } // ignore
  533. //
  534. // conn = null;
  535. // }
  536. // }
  537.  
  538. }
  539. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement