Advertisement
Guest User

Untitled

a guest
Dec 3rd, 2018
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.58 KB | None | 0 0
  1. // JDBC: Online-Supermarkt
  2.  
  3. // Downloaden: in eine Datei mit Namen Supermarkt.java!
  4. // Anpassen: Name der Datenbank und Benutzer!
  5. // vor der Benutzung: Datenbank anlegen
  6. // Uebersetzen: javac Supermarkt.java
  7. // Usage: java Supermarkt
  8. // danach: alleWaren oder Bestellungen oder Bestellen oder # (fuer Beenden)
  9. // momentan notwendiger Treiber: postgresql-8.3-603-jdbc4.jar
  10.  
  11. import java.io.*;
  12. import java.sql.*;
  13.  
  14. public class Supermarkt {
  15. static private Connection con;
  16. static private BufferedReader userin;
  17. private static Statement stmt;
  18.  
  19.  
  20. public Supermarkt() throws SQLException {
  21. userin = new BufferedReader(new InputStreamReader(System.in));
  22. stmt = con.createStatement();
  23. }
  24.  
  25. public void alleWaren() throws Exception {
  26. String sql = "SELECT bezeichnung, preis, vorrat, kname FROM ware INNER JOIN kategorie k on ware.katid = k.katid";
  27. ResultSet rs = stmt.executeQuery(sql);
  28.  
  29. while (rs.next()) {
  30. String bezeichnung = rs.getString("bezeichnung");
  31. int preis = rs.getInt("preis");
  32. int vorrat = rs.getInt("vorrat");
  33. String kname = rs.getString("kname");
  34.  
  35. System.out.println("Bezeichnung: " + bezeichnung + "Preis: " + preis + "\tVorrat: " + vorrat + "\tKname: " + kname);
  36. }
  37. }
  38.  
  39.  
  40. public void alleBestellungen() throws Exception {
  41. System.out.print("Kundenname eingeben: ");
  42. String name = userin.readLine();
  43.  
  44. PreparedStatement stmt = con.prepareStatement("SELECT bestid, datum, status, kname FROM bestellung INNER JOIN kunde ON kunde.kundeid = bestellung.kundid WHERE kname = ?");
  45. stmt.setString(1,name);
  46. ResultSet rs = stmt.executeQuery();
  47.  
  48. alleBestellungenOutput(rs);
  49.  
  50. //input loop
  51. System.out.println("\nFür weitere Ware '+' eingeben, zum beenden beliebige Taste");
  52. while (userin.readLine().equals("+")) {
  53. System.out.print("Kundenname eingeben: ");
  54. name = userin.readLine();
  55.  
  56. stmt.setString(1,name);
  57. rs = stmt.executeQuery();
  58.  
  59. alleBestellungenOutput(rs);
  60. System.out.println("\nFür weitere Ware '+' eingeben, zum beenden beliebige Taste");
  61. }
  62. }
  63.  
  64. //Gehört zu alleBestellungen
  65. public void alleBestellungenOutput(ResultSet rs) throws Exception {
  66. if(!rs.next()) {
  67. System.out.println("Keine Bestellungen vorhanden!");
  68. return;
  69. }
  70.  
  71. while(rs.next()){
  72. int bestid = rs.getInt("bestid");
  73. Date datum = rs.getDate("datum");
  74. int status = rs.getInt("status");
  75. String kname = rs.getString("kname");
  76. System.out.println("BestellID: " + bestid + "Datum: " + datum + "Status" + status + "Kundenname: " + kname);
  77. }
  78. }
  79.  
  80.  
  81. public void bestellenSQL(String kundenname, String warenname, int anzahl) throws Exception {
  82. //Anzahl Prüfen
  83. if(anzahl <= 0) {
  84. System.out.println("Anzahl ungültig!");
  85. return;
  86. }
  87.  
  88.  
  89. //kundenID
  90. String sql = "SELECT kundeid FROM kunde WHERE kname = '" + kundenname + "'";
  91. ResultSet rs = stmt.executeQuery(sql);
  92. if(!rs.next()) {
  93. System.out.println("Kunde nicht registriert!");
  94. return;
  95. }
  96. int kundenID = rs.getInt("kundeid");
  97.  
  98. //warenID
  99. sql = "SELECT warenid FROM ware WHERE bezeichnung = '" + warenname + "'";
  100. rs = stmt.executeQuery(sql);
  101. if(!rs.next()) {
  102. System.out.println("Ware nicht verfügbar!");
  103. return;
  104. }
  105. int warenID = rs.getInt("warenid");
  106.  
  107. //Datum
  108. sql = "SELECT CURRENT_DATE";
  109. rs = stmt.executeQuery(sql);
  110. if(!rs.next()) {return;}
  111. Date date = rs.getDate(1);
  112.  
  113. sql = "INSERT INTO bestellung VALUES (nextval('bestellid'), '" + date + "', 0,'" + kundenID + "');";
  114. sql += "INSERT INTO enthaelt VALUES (currval('bestellid'), " + warenID + ", " + anzahl + ")";
  115.  
  116. stmt.executeUpdate(sql);
  117. }
  118.  
  119. public void bestellen() throws Exception {
  120. System.out.print("Kundenname eingeben: ");
  121. String kundenname = userin.readLine();
  122. System.out.print("Warenname eingeben: ");
  123. String warenname = userin.readLine();
  124. System.out.print("Anzahl eingeben: ");
  125. int anzahl = Integer.parseInt(userin.readLine());
  126.  
  127. bestellenSQL( kundenname, warenname, anzahl);
  128.  
  129. //eingabeloop
  130. System.out.println("\nFür weiter Ware '+' eingeben, zum beenden beliebige Taste");
  131. while (userin.readLine().equals("+")) {
  132. System.out.print("Warenname eingeben: ");
  133. warenname = userin.readLine();
  134. System.out.print("Anzahl eingeben: ");
  135. anzahl = Integer.parseInt(userin.readLine());
  136.  
  137. bestellenSQL( kundenname, warenname, anzahl);
  138.  
  139. System.out.println("\nFür weiter Ware '+' eingeben, zum beenden beliebige Taste");
  140. }
  141. }
  142.  
  143.  
  144. public static void main(String args[]) {
  145. if (args.length != 0) {
  146. System.out.println("Usage: java supermarkt");
  147. System.exit(1);
  148. }
  149.  
  150. String driverClass = "org.postgresql.Driver";
  151. try {
  152. Class.forName(driverClass);
  153. } catch (ClassNotFoundException exc) {
  154. System.out.println("ClassNotFoundException: " + exc.getMessage());
  155. }
  156.  
  157. try {
  158. // 193.175.36.101 ist die vm3-1-Maschine
  159. Class.forName("org.postgresql.Driver");
  160. con = DriverManager.getConnection("jdbc:postgresql://localhost:5432/praktikum3", "postgres", "");
  161. Supermarkt sup = new Supermarkt();
  162. String aufgabe;
  163.  
  164. //switch auswahl
  165. userin = new BufferedReader(new InputStreamReader(System.in));
  166. System.out.println("\nGeben Sie ein: Waren oder Bestellungen oder Bestellen oder #!");
  167. while (!(aufgabe = userin.readLine()).startsWith("#")) {
  168. if (aufgabe.equals("Waren")) sup.alleWaren();
  169. else if (aufgabe.equals("Bestellungen")) sup.alleBestellungen();
  170. else if (aufgabe.equals("Bestellen")) sup.bestellen();
  171. System.out.println("\nGeben Sie ein: Waren oder Bestellungen oder Bestellen oder #!");
  172. }
  173. con.close();
  174. userin.close();
  175.  
  176. } catch (Exception exc) {
  177. System.err.println("Exception in Main. " + exc.getMessage());
  178. exc.printStackTrace();
  179. }
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement