Einzigartigen String in Datenbank finden und löschen

StepByStepButSlow

Aktives Mitglied
Einen schönen Abend miteinander,

ich sitze gerade an folgendem Problem und hoffe, dass mir jemand behilflich sein kann:

In einem Table in meiner sql-Datenbank möchte ich anhand eines Befehls einen stets einzigartig auftretenden String finden und nur diesen einen überschreiben (null) oder löschen(?). Hinzu sei gesagt, dass sich dieser String in den verschiedensten Columns aufhalten kann.
Gibt es eine Möglichkeit - ohne jeden Column einzeln aufzulisten - diesen String zu identifizieren bzw. zu entfernen.

Vielen Dank für eure Hilfe.

Mit freundlichem Gruß

StepByStepButSlow
 

truesoul

Top Contributor
Hallo.

Google konnte da nicht helfen.
Z. B mit "sql search string in table".?

Und ansonsten würde es ein schon verrückter Statement werden.

Warum kommt der String in den unterschiedlichen Spalten vor?
 

StepByStepButSlow

Aktives Mitglied
Über die Datenbank soll ein Frame gefüllt werden, welches ein mechanisches Bauteil in der Realität schematisch abbilden soll. Dieses besitzt mehrere Dutzend Einschübe und da diese frei konfigurierbar sind und ich für jeden Einschub ein Column in meiner Table erstellt habe, kann die Position stets stark variieren.

Was Google angeht, habe ich da schon genügend Treffer gefunden, jedoch beziehen sich diese stets auf die Angabe eines oder mehrerer Columns.
 

Thallius

Top Contributor
Ich würde sagen dein DB Aufbau ist vollkommen falsch. Wenn es mehrere einschübe gibt, dann brauchst du eine eigene Tabelle für die einschübe und eine crossreferenz Tabelle für Bauteil zu Einschüben.

Alles andere wird nicht funktionieren oder wenn du es doch irgendwie hingepfuscht bekommst dann wird es Sau langsam und extrem hässlicher code
 

pinhead84

Aktives Mitglied
Allgemein kann ich Thallius nur zustimmen. Wenn du die Möglichkeit dazu hast, solltest du das Datenbank-Modell noch mal überdenken.

Gibt es eine Möglichkeit - ohne jeden Column einzeln aufzulisten - diesen String zu identifizieren bzw. zu entfernen.
Die meisten SQL-Datenbanken bieten die Möglichkeit, die Spalten einer Tabelle durch ein SELECT-Statement zu ermitteln z.B. bei MySQL: https://stackoverflow.com/a/5648713 - Notfalls recherchiere dazu mal bei Google oder dem Manual deiner Datenbank.

Du könntest also erst mal durch ein Query die Spaltennamen einer Tabelle ermitteln und danach aus den ermittelten Spaltennamen die Queries für die gewünschte Operation erzeugen. Notfalls erzeugst du für jede Spalte separat ein Update-Query, welches die gewünschte Operation auf exakt einer Spalte durchführt.

Optimal ist das natürlich nicht - aber bei einem dubiosen DB-Layout bzw. solch exotischen Anforderungen sind solche Hacks wohl nicht immer zu vermeiden. ;)
 

StepByStepButSlow

Aktives Mitglied
Vielen Dank für die vielen Antworten. Ich werde mich einmal daran setzen und mit einer Testdatenbank den Weg von Thallius versuchen. Eine Zusatzfrage hat sich mir nun im Laufe des Tages gestellt:

Kann ich in einer Table nach einem einmalig auftretenden String suchen und mir den Namen des dazugehörigen Column ausgeben lassen? Angeblich soll dies über ResultSetMetadata gehen, nur irgendwie finde ich im Netz keine für mich passende Erklärung bzw. Beschreibung.

Vielen Dank noch einmal an alle.
 

Thallius

Top Contributor
Wenn du sowas brauchst ist dein datenbankmodell immer noch falsch.

Wiecwärs du erklärst uns was genau du brauchst und wie deine dB bisher aussieht. Dann können wir dir auch was konkretes vorschlagen.

Was du bisher so schreibst lässt mich vermuten dass du die Verwendung und Anwendung einer DB noch nicht wirklich verstanden hast und da irgendwas zusammen bastelst das konzeptionell totaler Murks ist
 

StepByStepButSlow

Aktives Mitglied
Hallo Thallius,

ich werde einmal versuchen, es so gut es geht zu erklären:

Jedes meiner Module besitzt zwölf Steckplätzen. Wird eines oder mehrere verwendet, übergebe ich die übrigen Daten (jeder Steckplatz besitzt eine generierte Nummer die nur einmal vorkommen kann) in eine ArrayList und lasse sie durch den User auf einem extra Frame mit sogenannten Dummyplätzen (Raster von 3x6 Plätzen) auflegen. Da diese Plätze keiner festen Reihenfolge unterliegen, muss dem User die Wahl gelassen werden, auf welchen Dumyplatz die noch freien abgelegt werden. Diese werden anschließend in der Datenbank gespeichert, welche wie folgt aufgebaut ist.

1. ID
2. Bauteilnummer
3. Dummyport 01
4. Dummyport 02
5. ...
20. Dummyport 18

Wird zu einem späteren Zeitpunkt ein weiterer Steckplatz vergeben, möchte ich, dass der Steckplatz, der bisher auf dem Dummy liegt, automatisch entfernt wird. Insgesamt können bis zu zehn Dummymodule à 3x6 Steckplätze exisitieren und somit 180 mögliche Plätze in der Datenbank.

Ich hoffe meine Erklärung war einigermaßen verständlich und danke für dein Mühen.
 

Thallius

Top Contributor
Also mir ist der Zusammenhang zwischen Modul, Steckplatz und Raster noch nicht wirklich klar.

Also ein Modul hat 12 Steckplätze soweit so gut.
Ein Raster hat 3x6 Plätze auch klar.

Wie ist nun aber das Verhältnis Modul zu Raster? Und wozu brauchst du die dummies? Für mich klingt das so als wolltest du die nicht vergeben Module oder Steckplätze speichern. Aber warum? Warum speicherst du nicht die verbauten?
 

StepByStepButSlow

Aktives Mitglied
Entschuldigung...hier habe ich mich etwas unklar ausgedrückt. Von den Modulen aus entstehen weitere Verbindungen. Auf den Kabeln, welche einen der Steckplätze belegen und welche in Bündeln (wovon die nicht genutzten abgelegt werden sollen) produziert werden, wird ein für den Menschen gesundheitsschädlicher Laser eingesetzt. Damit die offenen Enden nicht lose und gefährdend herum liegen oder hängen, sollen diese auf einen Dummy gesteckt werden.

Beispiel:
Bei einem Kabel bestehend aus 12 Einzelsträngen mit Steckköpfen werden zwei auf dem Modul abgelegt. Jeder Einzelstrang des Kabels besitzt eine einzigartige Bezeichnung. Die restlichen zehn werden auf den Dummy gelegt. Wird nun später der dritte Kabelstrang genommen, wird dieser vom Dummy abgezogen und auf das Modul gesteckt.
 

Thallius

Top Contributor
Ok so langsam kommt Licht in die Sache :)

Aber jetzt ist zu spät um weiter zu machen.

Es klingt auf jeden Fall interessant. Lass uns da morgen mal weiter drüber reden.
 

Thallius

Top Contributor
Ok,

also das Eigentliche Objekt ist erstmal der Kabelstrang, welcher 12 Stränge besitzt. Davon sind X-Stränge irgendwo "benutzt" und die anderen die nicht benutzt werden werden auf ein Raster von Dummies gesteckt das 3 * 6 Plätze groß ist?

Die Frage die sich mir stellt ist, warum must du jetzt wissen auf welchem Dummyplatz der Strang gesteckt ist? Reicht es nicht zu wissen das er unbenutzt ist?

Gruß

Claus
 

StepByStepButSlow

Aktives Mitglied
Das ist natürlich richtig. Rein theoretisch reicht es zu wissen, dass er unbenutzt ist. Nur muss ich ihn ja auch bei Benutzung wieder vom Dummyplatz entfernen (sprich aus dem Table), da er ja ab diesem Moment "aktiv" benutzt wird.
 

StepByStepButSlow

Aktives Mitglied
Hierfür muss ich wohl noch ein wenig weiter ausholen, was den Gebrauch des Programms angeht:
Der Mitarbeiter vor Ort, welcher die Arbeiten verrichtet, bekommt die Steckplätze (sowohl die aktiven, als auch die Dummyplätze) vorgegeben. Hintergrund ist: Aufgrund der endgültigen Menge und der Tatsache, dass eine Bearbeitung über Jahre hinweg durch ein und denselben Mitarbeiter nicht gewährleistet werden kann, muss man beim "aktivieren" neuer Verbindungen dem Mitarbeiter direkt sagen können, wo er auf den Dummyplätzen zu suchen hat. Auch kann es passieren, dass die Kabel nicht oder inkorrekt beschriftet werden.
 

mrBrown

Super-Moderator
Mitarbeiter
Hierfür muss ich wohl noch ein wenig weiter ausholen, was den Gebrauch des Programms angeht:
Der Mitarbeiter vor Ort, welcher die Arbeiten verrichtet, bekommt die Steckplätze (sowohl die aktiven, als auch die Dummyplätze) vorgegeben. Hintergrund ist: Aufgrund der endgültigen Menge und der Tatsache, dass eine Bearbeitung über Jahre hinweg durch ein und denselben Mitarbeiter nicht gewährleistet werden kann, muss man beim "aktivieren" neuer Verbindungen dem Mitarbeiter direkt sagen können, wo er auf den Dummyplätzen zu suchen hat. Auch kann es passieren, dass die Kabel nicht oder inkorrekt beschriftet werden.
Und das Problem ist welches?
 

StepByStepButSlow

Aktives Mitglied
Hallo Thallius,

ich werde einmal versuchen, es so gut es geht zu erklären:

Jedes meiner Module besitzt zwölf Steckplätzen. Wird eines oder mehrere verwendet, übergebe ich die übrigen Daten (jeder Steckplatz besitzt eine generierte Nummer die nur einmal vorkommen kann) in eine ArrayList und lasse sie durch den User auf einem extra Frame mit sogenannten Dummyplätzen (Raster von 3x6 Plätzen) auflegen. Da diese Plätze keiner festen Reihenfolge unterliegen, muss dem User die Wahl gelassen werden, auf welchen Dumyplatz die noch freien abgelegt werden. Diese werden anschließend in der Datenbank gespeichert, welche wie folgt aufgebaut ist.

1. ID
2. Bauteilnummer
3. Dummyport 01
4. Dummyport 02
5. ...
20. Dummyport 18

Wird zu einem späteren Zeitpunkt ein weiterer Steckplatz vergeben, möchte ich, dass der Steckplatz, der bisher auf dem Dummy liegt, automatisch entfernt wird. Insgesamt können bis zu zehn Dummymodule à 3x6 Steckplätze exisitieren und somit 180 mögliche Plätze in der Datenbank.

Ich hoffe meine Erklärung war einigermaßen verständlich und danke für dein Mühen.

Mein Problem ist weiterhin, wie man am besten ein Table (ob nun einzeln oder über eine Schleife) durchsucht und alle Daten (einzigartige Kennzeichnung der Kabel, welche zu diesem Zeitpunkt noch auf einem Dummy liegen und die nun benutzt werden sollen, ohne Zutun des Nutzers aus dem Table entfernt.
 

StepByStepButSlow

Aktives Mitglied
Aktuell nicht, da ich gerade vom Smartphone aus antworte. Ich könnte aber eines nachliefern...ansonsten ist es wie oben stehend im Zitat aufgebaut:

Column 1. ID
Column 2. Bauteilnummer
Column 3. Dummyport 01
Column 4. Dummyport 02
Column 5. ...
Column 20. Dummyport 18

Durchsucht werden müssten also die Columns 3 - 20 und das über mehrere Rows, da es mehr als nur ein Bauteil und somit Bauteilnummer gibt.
 

mrBrown

Super-Moderator
Mitarbeiter
Domain-Model, nicht Datenbank-Schema ;)

Das Datenbank-Schema sieht wie schon mal gesagt ziemlich ungeeignet aus.
Wenn du dabei bleiben willst, nimm einfach eine Query, die alle 18 Felder einzeln abfragt.
 

Thallius

Top Contributor
Im Prinzip ist es doch recht einfach.

Du hast ein Kabel mit X Strängen (ob es jetzt 2 oder 12 sind ist Wurscht). Davon kann jeder Strang den Zustand „benutzt“ oder „unbenutzt“ . Ist er unbenutzt st3ckt er auf einem Dummy Steckbrett.

Das bedeutet zunächst mal hast du eine Tabelle Kabel mit

Id INT PRIMARY KEY AUTOINCREMENT
Name (oder Nummer) VARCHAR(X)

Dann hast du eine Tablle Module mit

id INT PRIMARY KEY AUTOINCREMENT
Name (oder Nummer) VARCHAR(X)

Dann eine Tabelle mit Steckbrett mit

id INT PRIMARY KEY AUTOINCREMENT
Name (oder Nummer) VARCHAR(X)

Und eine Tabelle Steckplatz mit

id INT PRIMARY KEY AUTOINCREMENT
nummer int
Steckbrettid INT

Dann hast du eine Tabelle Kabelstrang mit

id INT PRIMARY KEY AUTOINCREMENT
Name (oder Nummer) VARCHAR(X)
kabelid INT
modulid INT
steckplatzid INT

Je nachdem ob der Strang benutzt wird setzt du die Modul oder die Steckplatz id. Das wars.

Gruß

Claus
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
OnDemand Java String in Hashmap als Key NULL Allgemeine Java-Themen 27
JAnruVA Datentypen Berechneten String-Wert in Double umwandeln um weiter zu rechnen Allgemeine Java-Themen 7
M String Allgemeine Java-Themen 10
M Suche nach String mit unbekannten characters Allgemeine Java-Themen 53
kodela String kann nicht zu Pfad konvertiert werden Allgemeine Java-Themen 16
melaniemueller Einzelne Zeile aus einer txt Datei in einem String speichern Allgemeine Java-Themen 12
E Objekte in einen String packen und wieder laden Allgemeine Java-Themen 5
M Map<String,String>funktioniert nicht richtig Allgemeine Java-Themen 4
O String in Long Hexerdezimal umwandel Allgemeine Java-Themen 14
N String vergleichen. Allgemeine Java-Themen 27
P String.replace() funktioniert nicht? Allgemeine Java-Themen 3
SaschaMeyer Arbeitet String.split falsch? Allgemeine Java-Themen 4
M Switches ohne String Allgemeine Java-Themen 18
AmsananKING String Iteration Allgemeine Java-Themen 5
S Shuffle String aus if-clause Allgemeine Java-Themen 11
Besset Variablen Ist String = "" + int inordnung? Allgemeine Java-Themen 6
M Map <Long, String> zu Map<String, Long> Allgemeine Java-Themen 9
S String Encoding Verständnisproblem Allgemeine Java-Themen 22
N Prüfen, ob ein String 2x das selbe Zeichen hat Allgemeine Java-Themen 10
SaftigMelo Bug Fixen von String-spliten Allgemeine Java-Themen 8
Monokuma String List nach Zahlen und Worten sortieren Allgemeine Java-Themen 9
Kingamadeus2000 Alle mehrfach vorkommenden Buchstaben rekursiv aus einem String entfernen. Allgemeine Java-Themen 6
YohnsonM String - Aufteilung und Nutzung einzelner Chars Allgemeine Java-Themen 7
O Formatierte String ausgabe bei vier Variablen in einer Zeile Allgemeine Java-Themen 1
S String umbenennen: wie? Allgemeine Java-Themen 4
x46 String Format Fehler Allgemeine Java-Themen 2
S ISO 8601 -> getter / setter String Allgemeine Java-Themen 3
L String zu repräsentativen Wert Allgemeine Java-Themen 0
H Array mit dem Datentype String[] initializieren Allgemeine Java-Themen 7
L ArrayList mit String Arrays in ein Array umwandeln Allgemeine Java-Themen 1
L regex ganzer string? Allgemeine Java-Themen 2
L Ist ein string ein erlaubter variabel name? Allgemeine Java-Themen 2
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
A String auf Zahlen überprüfen Allgemeine Java-Themen 5
N String Array Eingabe Allgemeine Java-Themen 6
MiMa Datum von String zu LocalDateTime Allgemeine Java-Themen 8
W String -> byte[] -> String - Sieht jemand was ich nicht sehe? Allgemeine Java-Themen 10
R char aus String entfernen Allgemeine Java-Themen 10
LimDul Mittels Streams aus Strings A B C den String A, B und C machen Allgemeine Java-Themen 12
M Programm erkennt String aus .txt Datei nicht Allgemeine Java-Themen 3
P einen public <Optinal String> in einer anderen Klasse mit einem Int vergleichen Allgemeine Java-Themen 2
S Ini Text aus String parsen Allgemeine Java-Themen 1
T String-Manipulation beim Ablauf in Eclipse und als JAR-File Allgemeine Java-Themen 8
M String lässt sich nicht Zusammenfügen Allgemeine Java-Themen 10
Drachenbauer Wie kann ich das Wort "concrete" in einem String durch ein anderes Wort ersetzen lassen? Allgemeine Java-Themen 5
R Schlüsselworte "Throw new exception" gibt nicht den String als Fehlermeldung aus Allgemeine Java-Themen 2
R Variablen String mit split-Funktion aufteilen Allgemeine Java-Themen 7
F Datei in String-Array einlesen Allgemeine Java-Themen 8
S Marker aus String ermitteln Allgemeine Java-Themen 5
T Objekt mit String und Int aus TxT Datei erstellen Allgemeine Java-Themen 23
M Bei String.format ein Komma statt einem Punkt ausgeben lassen Allgemeine Java-Themen 1
S MSSQL Exception & Connection String Allgemeine Java-Themen 19
B Bei Email: FW / AW... - Hilfe bei String suche Allgemeine Java-Themen 21
J String - Vergleiche Allgemeine Java-Themen 7
K Aus String zwei Jahreszahlen auslesen Allgemeine Java-Themen 18
Drachenbauer Wie kann eine vorgegebene Farbe über einen String erkannt werden? Allgemeine Java-Themen 11
G CSV in String Allgemeine Java-Themen 7
P String-Verschlüsselung - Frage zur Sicherheit Allgemeine Java-Themen 21
K Methodenaufruf mit String / String zu Objekt konvertieren Allgemeine Java-Themen 8
D Erste Schritte Fehler mit negativen und 0 Zahlen im String Allgemeine Java-Themen 6
Xge Replace x Zeichen aus String Allgemeine Java-Themen 2
coolian warum bekomme ich ein string index out of bounds exception Allgemeine Java-Themen 17
F In String 2 Buchstaben vertauschen Allgemeine Java-Themen 2
J Class Decompile als String (Procyon) Allgemeine Java-Themen 2
I Datentypen String in class sicher verwahren Allgemeine Java-Themen 17
J Falls der String ein "X" beinhaltet Allgemeine Java-Themen 2
T String mehrere Worte Allgemeine Java-Themen 2
D String Groß-/Kleinschreibung Allgemeine Java-Themen 2
D String und Klassenvariable Allgemeine Java-Themen 6
Aruetiise Funktion(y = mx+n) in String speichern und berechnen Allgemeine Java-Themen 9
C String in Objektnamen umwandeln Allgemeine Java-Themen 3
E Variablen Aus .txt ausgelesener string mit if() überprüfen? Allgemeine Java-Themen 2
L String-Schema-Aufspaltung Allgemeine Java-Themen 2
E String in Zahl umwandeln, ohne Befehl Integer.parseInt Allgemeine Java-Themen 3
L String splitten und multiplizeren Allgemeine Java-Themen 10
G String mit umbekannter länge splitten. Allgemeine Java-Themen 2
A Byte zu String Allgemeine Java-Themen 4
B Von String zu <Objekt> ||Speichern/Laden Allgemeine Java-Themen 17
T Komplexitätsoptimierung String vergleich Allgemeine Java-Themen 4
heinz ketchup String im JLabel ausgeben und erneuern Allgemeine Java-Themen 6
S Input/Output Beste Möglichkeit einen String in einen Datei zu Schreiben Allgemeine Java-Themen 2
V Eingegeben String Splitten und in Integer umwandeln Allgemeine Java-Themen 2
L Decrypt String Allgemeine Java-Themen 1
X Variablen AtmicLong größer als String ? Allgemeine Java-Themen 4
S String literal und Referenzvariablen Allgemeine Java-Themen 6
J Datentypen Absätze mit String im Word Dokument Allgemeine Java-Themen 3
D "Paste" String doppelt Allgemeine Java-Themen 14
E String Frage Allgemeine Java-Themen 9
T String aus While Schleife für ganze Klasse sichtbar machen Allgemeine Java-Themen 5
D JSON to String Allgemeine Java-Themen 31
M String automatisch in nächste Zeile umbrechen (Graphics) Allgemeine Java-Themen 6
U Methoden Algorithmus MergeSort String [ ] array sortieren programmieren Allgemeine Java-Themen 17
T Swing Font String Pixellänge Allgemeine Java-Themen 1
G Substrings in einen String zusammenfassen Allgemeine Java-Themen 5
Tommy Nightmare String.replaceAll(...) fehlerhaft? Allgemeine Java-Themen 3
L String auf zahlenwert prüfen Allgemeine Java-Themen 13
U OOP Warum kann ich aus meiner Methode keinen String auslesen Allgemeine Java-Themen 4
L 2-Dimensionaler String: Zahlen verschieben Allgemeine Java-Themen 10
S Variablen String[] Array per schleife in int[] einlesen Allgemeine Java-Themen 8
KeVoZ_ JSoup - Website Inhalt/Element mit String vergleichen Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben