Java Programm und Dantebank umlagern

Hey Leute,
ich stehe mal wieder vor einem Problem. Ich versuche im Moment Artikel die sich in der Datenbank befinden, von der einen Tabelle, in die andere Tabelle zu übertragen und gleichzeigt aus der alten Tabelle zu löschen. Ich habe gleich ein Bild erstellt damit man es vielleicht besser verstehen kann was ich meine.Umlagern.png

Also ich hab es soweit hinbekommen das, wenn man den Artikel mit der Maus andrückt gleichzeitig in den TextFields die Informationen landen. Wenn ich dann auf den Button (H7 (der leider gerade nicht zu lesen ist)) drücke soll der Artikel in die Tabelle Halle 7 umgelagert werden und aus Halle 8 gelöscht.
Ich hoffe man kann mich verstehen was ich meine, ich freue mich über jede Hilfe .

Mit freundlichen Grüße
 

Robat

Top Contributor
Als Idee:
-Du holst dir die Daten / den Datensatz des Artikels aus der alten Tablle (bzw aus den Textfeldern die du schon hast)
- Machst dir ein INSERT Statement für deine Tablle (Halle 7) fertig und führst das aus
- Machst dir eine DELTE Statement für deine Tabelle (Halle 8) fertig und führst das aus

Aus deinem Post kann man leider nicht entnehmen ob du sowas in der Art schon mal versucht hast, ob du dafür überhaupt schon Code hast oder ob du bei Null stehst :)

Gruß
Robert
 

Dukel

Top Contributor
Wie sieht deine DB aus? Ich hoffe du hast nicht für jeden Halle eine eigene Tabelle.
Wenn es z.B. so aussieht:
ID|Artikel|Halle
22|1000|5
Änderst du einfach den Eintrag der Halle.

Wieso steht im screenshot "5", wenn es doch die Halle 7 ist?
 
@Dukel Die 5 im tf Lagerort steht für den Lagerort in Halle 8.
Code:
JButton btnH = new JButton("H 7");
        btnH.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try{
                    String query="";
                    PreparedStatement pst=connection.prepareStatement(query);
                   
                    pst.execute();
                   
                    JOptionPane.showMessageDialog(null, "");
                   
                    pst.close();
                    }catch(Exception ex){
                        ex.printStackTrace();;
                       
                    }
                    }   
                       
                   
                });

Soweit hab ich den schon.

Und ja ich habe für jeden Halle eine eigene Seite und Tabelle.
 
So hab ich das nun geändert. Es wird umgelagert nur nicht das akte geköscht. Da weiß ich nicht wie ich das machen soll
Code:
        JButton btnH = new JButton("H 7");
        btnH.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try{
                    String query="insert into HalleSiebenListe (Artikelnummer,Artikelbezeichnung,Menge, Lagerort, Bemerkung) values (?,?,?,?,?)";
               
                   
                    PreparedStatement pst=connection.prepareStatement(query);
                    //pst.setString(1, tfId.getText() );
                    pst.setString(1,tfArtikelNr1.getText() );
                    pst.setString(2,tfArtikelBez1.getText() );
                    pst.setString(3,tfMenge1.getText() );
                    pst.setString(4,tfLagerort.getText() );
                    pst.setString(5,tfBemerkung.getText());
                   
                    pst.execute();
                   
                    JOptionPane.showMessageDialog(null, "Artikel in Halle 7 umgelagert!");
                   
                    pst.close();
                   
                   
                }catch ( Exception e){
                    e.printStackTrace();
                }
               
               
            }
        });
 

Dukel

Top Contributor
Und ja ich habe für jeden Halle eine eigene Seite und Tabelle.
Wozu das denn? Sind alle Hallen so unterschiedlich, dass es für diese eine eigene Tabelle mit eigenen Feldern benötigt?

So hab ich das nun geändert. Es wird umgelagert nur nicht das akte geköscht. Da weiß ich nicht wie ich das machen soll
Du machst ja auch nur einen Insert und kein Delete in der anderen Tabelle. Hierbei solltest du dich einmal über Transaktionen informieren.
Wenn das Programm zwischen Löschen und Einfügen abstürzt willst du nicht dass einer der beiden Aktionen fehlt.
 

thet1983

Top Contributor
Ich würde mich mal mit den Datenbank Basics ( Normalformen, Aufbau etc ) beschäftigen...und danach erst eine App programmieren.

@Dukel hat dir das schon geschrieben... ein update und fertig ....
 
@thet1983 Das mach ich ja, aber man brauch auch was zum üben um das besser zu verstehen( so ist das zumindest bei mir) .
Die Hallen sind tatsächlich unterschiedlich und darum brauche ich auch für jede Halle eine eigene Tabelle.
 

Dukel

Top Contributor
Was ist an den Hallen unterschiedlich? Welche gleichen und unterschiedlichen Felder hast du denn da?
Kannst du einmal die komplette DB Struktur aufzeichnen?
 
Unbenannt.jpg Ich hab das mal versucht mit Paint dazustellen was ich meine. Der Artikel bei Halle 8 soll umgelagert(verschoben) werden in Halle 7 und dabei soll sich der Lagerort dann auf 0 setzen. Ich hab das schon hinbekommen mit dem verschieben, was aber nicht die beste Lösung ist. Bin aber für weitere Lösungen offen.
Code:
JButton btnHSieben = new JButton("H 7");
        btnHSieben.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent arg0) {
                try{
                    String query="insert into HalleSiebenListe (Artikelnummer,Artikelbezeichnung,Menge, Lagerort, Bemerkung) values (?,?,?,?,?)";
               
                   
                    PreparedStatement pst=connection.prepareStatement(query);
                    //pst.setString(1, tfId.getText() );
                    pst.setString(1,tfArtikelNr1.getText() );
                    pst.setString(2,tfArtikelBez1.getText() );
                    pst.setString(3,tfMenge1.getText() );
                    pst.setString(4,tfLagerort.getText() );
                    pst.setString(5,tfBemerkung.getText());
                   
                                            
                   
                   
                    pst.execute();
                   
                    JOptionPane.showMessageDialog(null, "Artikel in Halle 7 umgelagert.");
                   
                    pst.close();
                   
                    String query1="delete from HalleAchtListe where ID='"+tfId.getText()+"'   ";
                    PreparedStatement pst1=connection.prepareStatement(query1);
                   
                    pst1.execute();
                   
                   
                }catch ( Exception e){
                    e.printStackTrace();
                }
               
               
            }
        });
        btnHSieben.setBounds(1056, 322, 61
 

Joose

Top Contributor
Ich hab das mal versucht mit Paint dazustellen was ich meine. Der Artikel bei Halle 8 soll umgelagert(verschoben) werden in Halle 7 und dabei soll sich der Lagerort dann auf 0 setzen.

Es ergibt keinen Sinn warum du für Halle 7 und Halle 8 jeweils eine eigene Tabelle erstellt hast. Mache eine Tabelle für alle Lagerhallen und füge stattdessen eine weitere Spalte hinzu in welcher die Nummer der Lagerhalle steht ;)

(nach dieser Logik musst du für jede neue Halle eine neue Tabelle anlegen)

Ich hab das schon hinbekommen mit dem verschieben, was aber nicht die beste Lösung ist. Bin aber für weitere Lösungen offen.
Wenn du wie oben beschrieben nur eine Tabelle für alle Lagerhallen hast, dann wird die Lösung auch einfacher.
Statt einem INSERT auf die eine Tabelle und einem DELETE auf die andere Tabelle, reicht ein einfaches UPDATE Statement aus.


Mir ist noch aufgefallen dass du in der Hallen Tabelle auch eine Spalte Artikelbezeichnung hast. Wenn du in 2 verschiedenen Hallen den gleichen Artikel lagerst, dann steht diese Information mehrmals in unterschiedlichen Tabellen. Würdest du nun die Artikelbezeichnung ändern wollen, müsstest du alle Hallen Tabellen durchschauen und die entsprechende Bezeichnung ändern. (
Auch hier hast du mit nur einer Tabelle für alle Hallen wieder einen Vorteil was das betrifft. Noch bessere wäre es eine eigene Tabelle Artikel anzulegen und nur dort die Artikelbezeichnung zu speichern bzw. zu ändern. In der Hallen Tabelle steht eh die entsprechende Artikelnummer, dadurch kann man die Bezeichnung dann zuordnen.
 

Thallius

Top Contributor
Die beste Lösung wurde bereits mehrfach erwähnt. Beschäftige Dich mit Normalisierung von Datenbanken und baue die Tabellen dann mit dem Wissen komplett neu auf.

Für jede Halle eine Tabelle zu machen ist totaler Quatsch.

Es gibt viele mehr oder weniger komplexe Ansätze wie man die Tabellen aufbauen kann. Was aber Du im Endeffekt brauchst wissen wir ja nicht. Kann ein Artikel gleichzeitig in mehreren Hallen sein? Kann ein Artikel mehrere Preise haben? Immer wenn ein Object mehrere Relationen haben kann, dann sollte man auch mit Crossreferenz-Tabellen arbeiten. Also z.B.

Artikel -> Id, Anzahl, Nummer : Das sind alle unveränderlichen Attribute des Artikels
Halle -> Id, Nummer : Das sind alle unveränderlichen Attribute der Hallen
xArtikelHalle -> ArtikelId, HallenId, Anzahl

Damit kannst du dann sehr schnell abfragen wieviele Artikel habe ich insgesamt, wieviel in Halle 7 oder 8 etc. Du kannst sehr schnell aus einer Halle einen Artikel herausnehmen und in eine andere hinzufügen.
Dafür must du immer nur die xArtikelHalle verändern. Die Artikel und die Hallen bleiben gleich, wie sie es ja auch im richtigen Leben tun. Denn durch das umlagern eines Artikels von Halle 7 nach Halle 8 ändert sich weder die Halle noch der Artikel.

Gruß

Claus
 
Ich brauche aber die verschiedenen Tabellen. Da jemand der auf halle 7 zugreift nicht auf Halle 8 zugreifen darf. Und da ist das die beste Lösung mit verschiedenen Tabellen oder übersehe ich da was?
 

Thallius

Top Contributor
Und wie verhinderst du das jemand nicht auf eine andere Halle zugreifen darf? Hast du einen mysql Benutzer für jeden angelegt oder was? Nein, du hast wahrscheinlich eine Logik in Deiner Software die das regelt. Und genau das geht genauso wenn alle Hallen in einer Tabelle sind. Du must ja nur bei einem Select die "Verbotenen" Hallen im WHERE rausfiltern.
 
Ich hab noch ein recht einfaches Loginsystem, das beim öffnen der Halle immer eine Abfrage startet. Suche aber genau so ein System wie du es beschreibst, wenn ich das finden und hinkriegen würde, würde ich das auch mit einer Tabelle machen. Aber so wie ich das bis her habe ist es nich möglich.
 

Joose

Top Contributor
Irgendwo wird hinterlegt sein welcher User Zugriff auf welche Halle hat (entweder entsprechende Tabellen in der Datenbank oder eben Logik im Code)
Und bevor du nun das UPDATE auf die eine Tabelle ausführst bzw. beim Update prüfst du eben noch auf die Berechtigung.

Tipp: Auch wenn du jetzt schon weißt dass nicht jeder auf jede Halle Zugriff haben darf. Verwende lieber eine Tabelle für alle Hallen, und vorerst hat jeder auf alle Zugriff. Das Sperren von Hallen für bestimmte User kannst du dir dann immer noch überlegen und entsprechend einbauen.
 

thet1983

Top Contributor
spontan fällt mir jetzt eine zahlen kombi ein

du hast acht hallen. das würde bedeuten deine kombi hat 8 stellen

basis ist
1: kein zugriff
2: lesen
3: schreiben

und so gehst du halle für halle durch
22331213
halle1 = lesen
halle2 = lesen
halle3 = schreiben
halle4 = schreiben
halle5 = kein zugriff
halle6 = lesen
halle7 = keinzugriff
halle8 = schreiben

diese zahl schmeisst du in ein array und prüfst dann immer vorher die rechte
 
Ihr habt Recht damit, ich werde das alles überarbeiten und auf einer Tabeller laufen lassen. @Joose Hast du vielleicht ein link oder so für mich wo erklärt wird wie so ein System funktioniert um die Zugriffe an den Usern zu verteilen?
 

thet1983

Top Contributor
wie schon gesagt ich würde mir für das login eine benutzerverwaltung schreiben,
datenbank anlegen..
In dieser kannst du die rechte dann handlen entweder für jede halle eine column oder nur eine verwenden...

in etwas so:
table UserManagement
id | firstname | familyname | password ( würde ich aber verschlüsseln ) | accesslevels (oder einzelen hallen ) | access_hall_1 usw..|

dann erstellst du dir ein UserObjekt mit den enstrechenden properties und beim login prüfst du ob
z.b der nachname und das ( entschlüsselte ) passwort überein stimmen, wenn ja lade die daten in das object, wenn nicht dann gibt meldung das die daten nicht stimmen...
wenn das login erfolgreich war kannst du das Userobject in deine MainView übergeben, und kannst immer die rechte vor dem laden einer tabelle überprüfen...
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
TH260199 Java-Programm. Probleme bei der Umsetzung von einer Kontaktverwaltung. Datenbankprogrammierung 7
P USER Management in SQL übergreifend auf JAVA Programm Datenbankprogrammierung 1
platofan23 MySQL Java Programm findet Treiber für mySQL auf Debian-Server nicht? Datenbankprogrammierung 11
W Wie liest dieses Java-Programm der Compiler? Datenbankprogrammierung 3
M Verbindung von Java Programm zur Acccess Datenbank (mdb-Datei) Datenbankprogrammierung 0
D Daten von einem Server in eigenem Java-Programm benutzen Datenbankprogrammierung 6
P MySQL Java Programm als Dienst MySQL Dump zurück spielen Datenbankprogrammierung 4
W Interaktion Java-Programm <-> Datenbank Datenbankprogrammierung 14
E MySQL Daten in die Datenbank eingeben via Java Programm Datenbankprogrammierung 3
O MySQL sql Datei einzelner Tabellen erzeugen (über Java Programm) Datenbankprogrammierung 6
J Mit Java Programm - PostgreSQL backup und restore Datenbankprogrammierung 5
D Werte mit java programm in eine Datenbank einlesen Datenbankprogrammierung 7
A Java JDBC Programm bringt auf Unix Server Fehlermeldung Datenbankprogrammierung 4
G Mit Java-Programm Datenbank löschen/neu anlegen Datenbankprogrammierung 5
M vorschläge bzgl. java programm mit datenbankanbindung Datenbankprogrammierung 4
B Importieren in MySQL mit Java-Programm Datenbankprogrammierung 2
B Exportieren aus MySQL mit Java-Programm Datenbankprogrammierung 11
P Wie übergebe ich einen NULL Wert in meinem Java-Programm? Datenbankprogrammierung 7
P Reicht finally nicht um DB connections zu schließen in (altem) Java? Datenbankprogrammierung 4
A Java DB Server lässt sich nicht starten Datenbankprogrammierung 3
TheSkyRider MySQL Datenbankzuordnung in Verbindung mit Java Datenbankprogrammierung 7
U SQL Server mit Java verbinden Datenbankprogrammierung 5
D SQLite Datenbank in Android Studio (Java) durchsuchen Datenbankprogrammierung 3
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
Zrebna Wie mittels Hibernate eine Join-Tabelle als eigene Java-Klasse erstellen? Datenbankprogrammierung 5
Zrebna Noobfrage: Konvertierung von SQL-Datentyp 'timestamp with time zone' in Java-Datentyp Datenbankprogrammierung 3
Zrebna Lediglich interne DB-Verbindungen (Connections) auslesen - mittels Java Datenbankprogrammierung 4
berserkerdq2 Was genau muss ich bei date eingeben, wenn ich in Java eine Spalte definiere, die date ist? Datenbankprogrammierung 1
berserkerdq2 Was kann passieren, wenn ich in java einstelle, dass der Fremdschüssel ein Attribut ist, welches selber kein Primärschlüssel ist? Datenbankprogrammierung 4
berserkerdq2 Foreign key einstellen java Datenbankprogrammierung 4
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
S Datenbankprogrammierung in Java unter NetBeans 12 funktioniert nicht! Datenbankprogrammierung 1
Beginner22 Zugriff auf Datenbank aus Java über mariadb Datenbankprogrammierung 3
S ODBC Treiber in Java Editor einbinden Datenbankprogrammierung 3
H Oracle Resize eines Images in Java und Rückgabe des Image als BLOB an die Oracle Datebank Datenbankprogrammierung 14
H Java Class zum komprimieren von Jpeg-Images zum Einbinden in Oracle DB - Bild als blob (in und out) Datenbankprogrammierung 23
V SQLite java.sql.SQLException: no such column: Datenbankprogrammierung 18
B Wie kopieren ich eine Spalte von einer Tabelle in eine andere Tabelle SQLite durch java code? Datenbankprogrammierung 26
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
Slaylen Java List Suchen mit eigenem Generischen Datentyp Datenbankprogrammierung 10
N java sql abfrage bestimmer Datumszeitraum Datenbankprogrammierung 9
D SQL Server Android App: 'int java.lang.String.length()' on a null object reference Datenbankprogrammierung 15
H MySQL Verbindung Datenbank und Eclipse (Java) Datenbankprogrammierung 5
N Java Abfrage über GUI, Daten hinzufügen Datenbankprogrammierung 54
N Java, sql, jar, JDBC-Treiber in Classpath Datenbankprogrammierung 8
N java SQL JAR - Probleme Datenbankprogrammierung 18
N SQL Datenbank Spalte in Java Array Datenbankprogrammierung 2
N SQL-Statement Java Variable in SQL DB einfügen Datenbankprogrammierung 1
S Verbindung von einer Excel Datei zu Java Datenbankprogrammierung 2
H suche eine Login system Bibliothek für Java Datenbankprogrammierung 5
T Java Spiel Daten speichern Datenbankprogrammierung 1
C Java MySQL check if value exists in database Datenbankprogrammierung 2
N Sqlite DB mit Java wird auf Linuxsystem nicht gefunden Datenbankprogrammierung 9
L Mybatis Datenbankabfragen in Java Datenbankprogrammierung 1
H MariaDB-Zugriff mittels Java SE Datenbankprogrammierung 3
J Java fügt Datensätze ein aber diese werden nicht richtig abgefragt Datenbankprogrammierung 3
S Datenbank MySQL und Java Datenbankprogrammierung 8
S Beispiel-Blockchain + GUI mit Java erstellen Datenbankprogrammierung 0
P Adressadministration mit Java und mySQL Datenbankprogrammierung 14
Trèfle SQLite SQL-Java Änderungen ausgeben Datenbankprogrammierung 1
Dimax MySQL Maximale Datenlänge für eine Spalte einer Datenbank in java ermitteln Datenbankprogrammierung 15
A MySQL Select und Insert in Java Datenbankprogrammierung 15
C Derby/JavaDB Auf Variable aus Link in java server page zugreifen Datenbankprogrammierung 4
F MySQL Einfügen von Datensätzen über Java Datenbankprogrammierung 8
B CSV in Java einbinden und Rechnung Datenbankprogrammierung 7
L Speicherverbrauch Java Anwendung mit einer Datenbankanbindung Datenbankprogrammierung 19
X MySQL Java hat keinen Zugriff auf MySQL Datenbankprogrammierung 9
L Java- Zähle alle Werte aus der Tabelle von aktiver Zelle Datenbankprogrammierung 12
S Datenbank/Java true/false Datenbankprogrammierung 8
S Java und SQL-Befehle Datenbankprogrammierung 6
L INSERT INTO Befehl in Java Datenbankprogrammierung 8
L Datenbankprogrammierung mit Java und phpMyAdmin Datenbankprogrammierung 4
Korvinus Java mit Cassandra verbinden Datenbankprogrammierung 18
M SQL-Statement SQL mit Java, Update Fehler Datenbankprogrammierung 1
D Installation von MariaDB in java und eclipse Datenbankprogrammierung 2
H Datenbank Export mit Java Datenbankprogrammierung 3
I MariaDB-Verbindung in JAVA Datenbankprogrammierung 11
L Oracle Datenbank über Java aufrufen Datenbankprogrammierung 29
W Daten in Java intern abfragen Datenbankprogrammierung 1
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
D Java Datenbanken Datenbankprogrammierung 1
Y H2 H2 foreign key in Spark Java ausgeben Datenbankprogrammierung 1
J Java Eclipse Hilfe beim Programmieren Datenbankprogrammierung 7
K Java Object mit Hibernate in MySQL abspeichern Datenbankprogrammierung 1
R Java-Befehle/Operatoren für copy&paste Datenbankprogrammierung 2
C Mit asm laufende Java Anwendung manipulieren Datenbankprogrammierung 1
K Java Datenbank auslesen Datenbankprogrammierung 8
G MySQL Java Problem: Nullpointer Exception obwohl Daten vorhanden sind? Datenbankprogrammierung 2
K HSQLDB .sql Script Aufruf über Java Datenbankprogrammierung 7
B MySQL bplaced Datenbank mit Java ansprechen Datenbankprogrammierung 11
F MySQL Wie kann ich in Java Datensätze aus einer MySQL Datenbank gezielt in einzelne Arrays schreiben? Datenbankprogrammierung 9
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
B Probleme mit java.sql.SQLException: ResultSet closed Datenbankprogrammierung 21
O PostgreSQL Java Row Index erhalten Datenbankprogrammierung 1
dzim Cassandra Cluster DB und der Java-Treiber Datenbankprogrammierung 1
H Entity in Java implementieren Datenbankprogrammierung 13
V Fehler beim Generierung Fehler beim Generierung java.lang.ArrayIndexOutOfBoundsException: 0 Datenbankprogrammierung 12
J mySQL- Java Application - Zugriff über Internet Datenbankprogrammierung 3
D MySQL Many to Many Tabellen in Java abbilden? Datenbankprogrammierung 4

Ähnliche Java Themen

Neue Themen


Oben