Klassen Doppelte werte Filtern XML, Datenbank und DOM

B

BarBQ

Mitglied
Hi Leute ich habe folgendes Problem.

Ich habe hier eine XML Datei mit mit Daten von Authoren und Büchern, genau genommen sind es knapp 420 Datensätze. Also sie sind immer ein Übergeordneten Tag zugeordnet.

Ich habe 2 Klassen erstellt eine baut eine Verbindung zur Datenbank auf und übergibt die Parameter an die Datenbank. Und die 2. Klasse Parst die XML-Datei mit DOM und sucht die entsprechenden Parameter raus. :rtfm:

Jetzt habe ich folgendes Problem es sind Zwar 420 verschiedene Bücher, aber auf 7 Bücher kommt im Durchschnitt 1 Author, wenn ich das ganze jetzt in die Datenbank schiebe nimmt er jede Author-Daten egal ob Doppelt oder Dreichfach oder nochmehr, einfach mit in die Datenbank.

Wie kann ich das Im grunde verhindern???
die Buchtitel gibt es nur einmal und haben eine ID

ich hatte mir gedacht schon zu filtern beim prepareStatement aufbau
so ungefähr:

Java:
		public static PreparedStatement getAuthor() throws Exception{
			try{
				if(conn == null){}
				if(data1 == null){
				   data1 = conn.prepareStatement(("INSERT INTO authors(_id, name, lowerCaseName, familyName)SELECT ?,?,?,? WHERE NOT EXISTS(SELECT name FROM authors WHERE _id = '?')"));
				} 
			}catch (Exception e){System.err.println("Fehler in der Authoren Klasse - " + e.getMessage());}
			return data1;
		}

kennt vllt einer von euch eine Lösung, ihr seit meine ltzte Hoffnung.

Vielen dank
Gruß
BarBQ :bahnhof:
 
N

Natac

Bekanntes Mitglied
Du kannst es natürlich auch über einen Filter machen.

Ich würde mir eine Map<String, Integer> anlegen, die den Autor-Namen auf seine ID mappt, die er in der Datenbank hat. Also in etwas folgendes (Pseudo-Code):
Java:
private Map<String, Integer> autorCache = new HashMap<>();

public Integer saveAutor(DomObj autor){
  Integer autorId = autorCache.get(autor.getName()); // Per name nach der ID gucken
  
  if(autorId == null){// Wenn id null -> Neuer Autor. Anlegen + ID merken
    autorId = getDatabase().save(autor); // Autor speichern und Id merken
    autoCache.put(autor.getName, autorId ); // Id unter dem Namen ablegen
  }

  return autorId; // Id zurückgeben, um sie bei saveBook(..) als FK nutzen zu können
}

Das halte ich für sehr viel einfacher, als sich ein kompliziertes SQL-Query auszudenken.
 
Zuletzt bearbeitet:
B

BarBQ

Mitglied
:rtfm:

erstmal Danke für die schnelle Antwort, aber ich hab da noch eine Frage
sieht er sich dann den Namen theoretisch nur 1 mal? auch bei der ersten befüllung???
 
B

BarBQ

Mitglied
Bzw. weiß ich nicht wie du das meinst :oops:

ich hab ja eine Automatisch generierten Schlüssel, also ID
wenn jetzt die XML so aufgebaut ist:

[XML]
<entry id="1">
<title>Buchtitel1</title>
<authors>
<author>Williamson</author>
</authors>
.
.
.
</entry>
[/XML]

und sagen wir, die folgenden <entry> sehen so aus:

[XML]
<entry id="2">
<title>Buchtitel2</title>
<authors>
<author>Williamson</author>
</authors>
.
.
.
</entry>
<entry id="3">
<title>Buchtitel3</title>
<authors>
<author>Williamson</author>
</authors>
.
.
.
</entry>
<entry id="4">
<title>Buchtitel4</title>
<authors>
<author>Williamson</author>
</authors>
.
.
.
</entry>
.
.
.
[/XML]

also mit dem Selben Autor. Die ID wird in der Datenbak generiert

kann ich da nicht irgendwo sagen
Wenn der erste <entry> mit Name Williamson kommt dann z.B. generire Automatisch die ID = 1 und merke sie dir
Wenn zweite <entry> kommt prüfe den Namen und wenn er da ist ignoriere den Tag authors und geh zum nächsten Tag.
und so weiter


:bahnhof::bahnhof::bahnhof::bahnhof::bahnhof:
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Variablen Doppelte Werte in Int Array Java Basics - Anfänger-Themen 10
S ArrayList Gruppieren, "Doppelte Werte" Addieren Java Basics - Anfänger-Themen 5
B Doppelte Werte aus Array entfernen ohne Import - Algorithmus Java Basics - Anfänger-Themen 5
S Array befüllen & auf doppelte werte prüfen Java Basics - Anfänger-Themen 6
P doppelte Werte im Array ausgeben. Java Basics - Anfänger-Themen 4
G Doppelte (Paar) Werte in einem Vektor finden Java Basics - Anfänger-Themen 6
C das Doppelte des Wertes in der Console ausgeben Java Basics - Anfänger-Themen 10
tom.j85 Doppelte Foreach Schleife: Am Ende wird immer das Gleiche Objekt eingefügt Java Basics - Anfänger-Themen 4
H Größte Duplikat (Größte Doppelte Wert) eines Arrays ausgeben Java Basics - Anfänger-Themen 9
X Threads Zwei Threads, aber doppelte Ausgabe verhindern (synchronized) Java Basics - Anfänger-Themen 54
H Frage zur ermittlung eines doppelte Paars aus Sotieralgorithmus Java Basics - Anfänger-Themen 4
N Best Practice Doppelte und einfach Anführungsstriche in Runtime.getruntime().exec() Java Basics - Anfänger-Themen 6
J Doppelte Ausgabe erzeugen Iterator Java Basics - Anfänger-Themen 6
L Doppelte Schleife Anpassen Java Basics - Anfänger-Themen 5
W Map doppelte Values löschen Java Basics - Anfänger-Themen 3
S CSV auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 8
S Doppelte Liste Einfügen Java Basics - Anfänger-Themen 1
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
T Klassen Doppelte Elemente aus Container entfernen Java Basics - Anfänger-Themen 6
M Erste Schritte Doppelte Ausgabe? (JList) Java Basics - Anfänger-Themen 1
kilopack15 Array auf doppelte Elemente überprüfen Java Basics - Anfänger-Themen 16
S Input/Output Doppelte Input-Abfrage Java Basics - Anfänger-Themen 3
K Input/Output Doppelte Ausgabe Java Basics - Anfänger-Themen 5
S Erste Schritte Doppelte Ausführung? Java Basics - Anfänger-Themen 4
E Threads Doppelte Threads beenden Java Basics - Anfänger-Themen 4
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
O Doppelte For-Scheife Java Basics - Anfänger-Themen 6
E Array doppelte Einträge Java Basics - Anfänger-Themen 2
S Variablen Array in ArrayList auf doppelte Einträge überprüfen Java Basics - Anfänger-Themen 4
M Einfache und Doppelte Operatoren Java Basics - Anfänger-Themen 3
P Doppelte Datensätze aus CSV-Datei löschen Java Basics - Anfänger-Themen 17
P Doppelte Einträge in eine List Java Basics - Anfänger-Themen 5
R Doppelte löschen Java Basics - Anfänger-Themen 6
C Doppelte Einträge aus String [] Array entfernen. Java Basics - Anfänger-Themen 5
K Doppelte namen bei random Java Basics - Anfänger-Themen 3
U Doppelte Interfcae Implementierung Java Basics - Anfänger-Themen 10
M doppelte Einträge Emailempfänger... Java Basics - Anfänger-Themen 35
G txt-File als DB>doppelte Einträge verhindern/Suche/... Java Basics - Anfänger-Themen 10
DerGroßeNargus Doppelte Liste initialisieren Java Basics - Anfänger-Themen 2
H Datentypen Doppelte Verkette Liste - Verständnissproblem Java Basics - Anfänger-Themen 5
T Doppelte Liste Java Basics - Anfänger-Themen 8
R Schleife Doppelte Daten löschen Java Basics - Anfänger-Themen 3
V Doppelte Zahl suchen Java Basics - Anfänger-Themen 14
L Hilfe, doppelte Zufallszahlen Java Basics - Anfänger-Themen 13
G List suchen und doppelte rausfiltern Java Basics - Anfänger-Themen 3
T Doppelte Anführungszeichen ersetzen?? Java Basics - Anfänger-Themen 4
Luk10 Doppelte for-schleife Java Basics - Anfänger-Themen 7
P Doppelte Einträge in mehreren Textfiles finden und ausgeben Java Basics - Anfänger-Themen 8
T Array: Doppelte Charakteren löschen - Ein Lösungsversuch Java Basics - Anfänger-Themen 37
J doppelte Einträge in einem Array Java Basics - Anfänger-Themen 7
M Aufgabe: Array auf doppelte Zahl prüfen Java Basics - Anfänger-Themen 8
-horn- Doppelte Einträge entfernen, aus Array, List oder sonstwas Java Basics - Anfänger-Themen 9
G _NUR_ doppelte Einträge in einem Array behalten Java Basics - Anfänger-Themen 3
J Doppelte Integer aus einem Array entfernen - seltsames Prob. Java Basics - Anfänger-Themen 5
G doppelte Einträge im String Array löschen Java Basics - Anfänger-Themen 21
C Doppelte Punktnotation Java Basics - Anfänger-Themen 2
0 ArrayList - doppelte Einträge entfernen? Java Basics - Anfänger-Themen 9
S Methode, um doppelte Einträge in Array zu finden Java Basics - Anfänger-Themen 5
F doppelte Elemente in HashSet Java Basics - Anfänger-Themen 5
G java.util.LinkedList: Doppelte Elemente vermeiden Java Basics - Anfänger-Themen 5
G Wie doppelte Einträge in ComboBox vermeiden ? Java Basics - Anfänger-Themen 9
M Doppelte Einträge in einer datei löschen(nach timestamp)! Java Basics - Anfänger-Themen 4
D Doppelte Einträge einer Liste löschen Java Basics - Anfänger-Themen 6
B 2 ELists vergleichen und doppelte Einträge löschen Java Basics - Anfänger-Themen 11
S "doppelte" if-Anweisung Java Basics - Anfänger-Themen 10
F Doppelte Datensätze zusammenziehen Java Basics - Anfänger-Themen 2
V Doppelte Zahlen bei Lotto verhindern Java Basics - Anfänger-Themen 11
eleonori Durchschnitt aller Werte eines Baums berechnen Java Basics - Anfänger-Themen 5
G Array Werte addieren Java Basics - Anfänger-Themen 4
J Methoden Frage: Array-Werte in anderer Methode ändern Java Basics - Anfänger-Themen 4
C Array-Werte werden gemischt, ohne Logik Java Basics - Anfänger-Themen 2
java3690 Java- liste füllen ud die werte addieren Java Basics - Anfänger-Themen 13
C Zufallszahl + Werte bereich einstellen Java Basics - Anfänger-Themen 2
J Alle Werte eines Strings zusammen addieren Java Basics - Anfänger-Themen 15
L 2 Dimensional Array werte überschreiben Java Basics - Anfänger-Themen 1
K Array alle Werte aufsummieren und ausgeben Java Basics - Anfänger-Themen 6
V Collections int Werte in einer Liste sortieren Java Basics - Anfänger-Themen 23
R Combobox-Werte in GUI anzeigen Java Basics - Anfänger-Themen 13
J Neue Werte in ein Array hinzugeben Java Basics - Anfänger-Themen 8
L Wie frage ich ab, ob in einem Array, Werte doppelt vorkommen? Java Basics - Anfänger-Themen 4
A Negative float Werte? Java Basics - Anfänger-Themen 10
Kirby.exe Fehlende Int Werte aus Array mit streams finden Java Basics - Anfänger-Themen 19
Ellachen55 Wie nach häufigste Werte im Array suchen? Java Basics - Anfänger-Themen 2
D Input/Output Input von zwei Koordinaten validieren und anschließend Werte speichern Java Basics - Anfänger-Themen 7
F Variablen Werte einer Klasse überschreiben Java Basics - Anfänger-Themen 4
M Werte ändern sich nicht mehr nach Reset Java Basics - Anfänger-Themen 14
F Character umwandeln als Double Werte Java Basics - Anfänger-Themen 8
B Werte aus einem Unterprogramm in ein Array schreiben Java Basics - Anfänger-Themen 2
L Nur Bestimmte Werte aus einem Array in ein anderes Speichern Java Basics - Anfänger-Themen 11
C Ganzzahlige Werte in Boolean ausgeben und überprüfen ob Primzahl oder nicht, wenn es keine Primzahl ist soll es die Primfaktorzerlegung ausgeben Java Basics - Anfänger-Themen 4
S Werte aufsummieren in java? Java Basics - Anfänger-Themen 5
M Werte des Arrays addieren Java Basics - Anfänger-Themen 5
A Alle true Werte eines boolean Arrays herausfiltern Java Basics - Anfänger-Themen 19
C System.in.read() Boolsche Werte vergleichen Java Basics - Anfänger-Themen 8
M prüfen ob alle array werte gleich sind Java Basics - Anfänger-Themen 27
D Werte aus einem BinärBaum in einem Array speichern Java Basics - Anfänger-Themen 1
R Datenbank-Werte dynamisch ausgeben Java Basics - Anfänger-Themen 19
E Eigenschaften Werte, in einer anderen Klasse, zuweisen Java Basics - Anfänger-Themen 40
H Methoden Nutzung der Werte einer ausgeführten Objektmethode in anderen Objektmethoden Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Anzeige

Neue Themen


Oben