Groovy Daten aus DB zu Ids in Datei

scorpionesc

Mitglied
Hallo zusammen,

ich brauche wieder Eure Hilfe.

Ich habe folgendes Problem:

Ich habe eine Datei mit ID'en. Diese ID'en möchte ich nacheinander auslesen und in einem SQL-Statements wieder verwenden.

Meine Datenbankverbindung kann ich per JDBC aufbauen. Ich kann beliebige Select-Abfragen abgeben.

Meine Datei kann ich auch Zeilenweise einlesen. Das mache ich so:

Java:
liste = new File('d:\\skripte\\auftragsnr.csv').readLines()

Jetzt muss ich mir aus der Datenbank mit HIlfe der ausgelesenen ID weitere Werte holen um ein Update durchzuführen.

Bsp: SELECT id from tabelle where auftragsnummer = <ID aus aufgragsnr.csv>

Könnt ihr mir hier einen Tipp geben?

Vielen Dank.

Björn
 
Zuletzt bearbeitet von einem Moderator:

scorpionesc

Mitglied
Die Sache mit dem PreparedStatement klappt super. Ich konnte innerhalt einer Tabelle meine Daten auslesen.

Jetzt versuche ich über ein Subselect auf eine andere Tabelle zuzugreifen.

ich bekomme die FM

Caught: java.sql.SQLException: No such column name

Mein Statement sieht so aus:

Java:
liste = new File('d:\\skripte\\auftragsnr.csv').readLines()

for (i in liste) {

    connection.eachRow ("select tabelle2.name from tabelle2 where tabelle2.docid in (select tabelle1.docid from tabelle1 where tabelle1.auftragsnr = ?)", [i]) { row ->
        println row.tabelle1.name
    }
    


}

Kurze Erläuterung:
Aus meiner CSV-Datei bekomme ich die auftragsnr in Tabelle1. Meine Verknüpfungsspalte ist docid. Diese finde ich sowohl in Tabelle 1 als auch in Tabelle 2.

Wenn ich das Statement direkt auf der Datenbank abfeuere, bekomme ich mein Ergebnis.

Danke.
 
M

maki

Gast
Schau mal:
Code:
"select tabelle2.name
und dann hier:
Code:
println row.tabelle1.name
Das kann so nicht gehen, solltest auch im MySQL Admin Tool sehen dass die Spalte nicht mehr "name" heisst, kannst entweder ein alias definieren oder per Index arbeiten.
 

scorpionesc

Mitglied
Schau mal:
Code:
"select tabelle2.name
und dann hier:
Code:
println row.tabelle1.name

Sorry, Tippfehler von mir.... Ist die richtige Tabelle hinterlegt.

Das kann so nicht gehen, solltest auch im MySQL Admin Tool sehen dass die Spalte nicht mehr "name" heisst, kannst entweder ein alias definieren oder per Index arbeiten.

Mh, es handelt sich um eine Datenbank, die ich nicht beeinflussen kann. Ich greife nur darauf zu. Wie meinst du das mit dem Alias?

select * from tabelle2.name as alias....?
 

Ähnliche Java Themen

Neue Themen


Oben