Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package db;
- import java.sql.*;
- public class ProduktTransaktionen {
- private Connection conn;
- public ProduktTransaktionen() {
- try {
- DriverManager.registerDriver(new oracle.jdbc.driver.OracleDriver());
- this.conn = DriverManager.getConnection("jdbc:oracle:thin:@flores.dbs.ifi.lmu.de:1521:dbprakt","spanner","");
- //this.zulieferungEinbuchen(59446);
- //this.bestandUmbuchen(1, 2, 3063, 8);
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public void zulieferungEinbuchen(int nr) {
- try {
- int lager;
- Statement stmt = this.conn.createStatement();
- ResultSet rsetlag = stmt.executeQuery("select Lager from Zulieferung where zlid = " + nr); // Herausfinden des Lagers
- rsetlag.next();
- try {
- lager = rsetlag.getInt(1);
- } catch (Exception e) { // Exception zur falschen Zlid-Eingabe
- System.out.println("Die Zulieferungsnummer " + nr + " existiert nicht ! Bitte neue Eingabe. ");
- return;
- }
- rsetlag.close();
- System.out.println("Vor einbuchen");
- this.einbuchen(nr, lager);
- System.out.println("Nach einbuchen");
- stmt.executeQuery("update Zulieferung set status = 'ERLEDIGT' where zlid = " + nr);
- stmt.executeQuery("update Zulieferung set erledigt_termin = sysdate where zlid = " + nr);
- stmt.close();
- this.conn.close();
- } catch (SQLException evt) {
- evt.printStackTrace();
- }
- }
- public void einbuchen(int zlNr, int lagerNr) {
- int lagerEintrag = 0;
- try {
- Statement stmt = this.conn.createStatement();
- // Produkt und dessen Anzahl holen
- ResultSet rsetprod = stmt.executeQuery("select produkt, anzahl from Zulieferungsposition where zlid = " + zlNr);
- while (rsetprod.next()) {
- int prod = rsetprod.getInt("produkt");
- int anz = rsetprod.getInt("anzahl");
- // ist dieses Produkt schon in dem angegebenen Lager gespeichert?
- ResultSet rsetLagereintrag = stmt.executeQuery("select count(*) from lagert where Lager = "+ lagerNr + " and produkt = " + prod);
- rsetLagereintrag.next();
- lagerEintrag = rsetLagereintrag.getInt(1);
- rsetLagereintrag.close();
- // falls nicht, neuer Eintrag
- if (lagerEintrag == 0) {
- stmt.executeQuery("insert into lagert (anzahl, lager, produkt) values(" + anz + "," + lagerNr + "," + prod + ")");
- }
- // sonst Update
- else {
- stmt.executeQuery("update lagert set anzahl = anzahl + " + anz + " where Lager = " + lagerNr + " and produkt = " + prod);
- }
- }
- rsetprod.close();
- stmt.close();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- public void bestandUmbuchen(int ul, int zl, int prod, int menge) {
- try {
- int bestand_ul;
- int zl_eintrag;
- Statement stmt = this.conn.createStatement();
- //Checken ob Ursprungs und Ziellager existieren
- try {
- ResultSet rsettestlag = stmt.executeQuery("select Lagid from Lager where lagid = " + ul);
- rsettestlag.next();
- int lager = rsettestlag.getInt(1);
- rsettestlag.close();
- } catch (Exception e) {
- System.out.println("Dieses Ursprungslager mit er ID " + ul + " existiert nicht! Bitte neue Eingabe. ");
- return;
- }
- try {
- ResultSet rsettestlag = stmt.executeQuery("select Lagid from Lager where lagid = " + zl);
- rsettestlag.next();
- int lager = rsettestlag.getInt(1);
- rsettestlag.close();
- } catch (Exception e) {
- System.out.println("Dieses Ziellager mit er ID " + zl + " existiert nicht! Bitte neue Eingabe. ");
- return;
- }
- //checken ob die PID g�ltig ist
- try {
- ResultSet rsettestlag = stmt.executeQuery("select Produkt from lagert where Produkt = " + prod);
- rsettestlag.next();
- int lager = rsettestlag.getInt(1);
- rsettestlag.close();
- } catch (Exception e) {
- System.out.println("Dieses Produkt mit er PID " + prod + " existiert nicht! Bitte neue Eingabe. ");
- return;
- }
- // checken ob die Mengenangabe positiv ist
- if (menge < 0) {
- System.out.println("ung�ltige Mengenangabe");
- return;
- }
- // jetzt kommt die Funktion!
- // Herausfinden des Bestands im Ursprunglager
- ResultSet rsetbestand_ul = stmt.executeQuery("select anzahl from lagert where Produkt = " + prod + " and Lager = " + ul);
- rsetbestand_ul.next();
- bestand_ul = rsetbestand_ul.getInt(1);
- rsetbestand_ul.close();
- System.out.println("Bestand des Ursprungslagers ist " + bestand_ul);
- //testen ob �berhaupt genug im Ursprungslager sind
- if (bestand_ul < menge) {
- System.out.println("Bestand reicht nicht aus! Nur " + bestand_ul + " St�ck vorr�tig!");
- }
- //umbuchen von ul nach zl
- else {
- ResultSet rsetzl_eintrag = stmt.executeQuery("select count(*) from lagert where Lager = " + zl + " and produkt = " + prod);
- rsetzl_eintrag.next();
- zl_eintrag = rsetzl_eintrag.getInt(1);
- rsetzl_eintrag.close();
- System.out.println("Eintraege im Ziellager : " + zl_eintrag);
- //falls im Ziellager noch kein Eintrag zu deisem Produkt existiert muss ein neuer Eintrag gemacht werden
- if (zl_eintrag == 0) {
- stmt.executeQuery("insert into lagert (anzahl, lager, produkt) values(" + menge + "," + zl + "," + prod + ")");
- System.out.println("neuer Eintrag im Ziellager: " + zl_eintrag);
- }
- //sonst wird die umgebuchte Menge addiert
- else {
- stmt.executeQuery("update lagert set anzahl = anzahl + " + menge + "where Lager = " + zl + " and produkt = " + prod);
- System.out.println("Anzahl im Ziellager um " + menge + " erh�ht" );
- }
- stmt.executeQuery("update lagert set anzahl = anzahl - " + menge + " where Lager = " + ul + " and produkt = " + prod);
- System.out.println("Anzahl im Ursprungslager um " + menge + " verkleinert");
- //Falls alle Produkte aus dem Ursprungslager herausgeholt werden muss dieser Eintrag im Ursprungslager gel�scht werden
- if (bestand_ul == menge) {
- stmt.executeQuery("delete from lagert where Lager =" + ul + "and produkt =" + prod);
- System.out.println("Eintrag im Ursprungslager gel�scht!" );
- }
- }
- stmt.close();
- this.conn.close();
- } catch (SQLException evt) {
- evt.printStackTrace();
- }
- }
- public static void main(String[] args) {
- new ProduktTransaktionen();
- }
- }
Add Comment
Please, Sign In to add comment