foreignkey abfragen und speichern

didi577

Bekanntes Mitglied
ja ist echt ärgerlich
Java:
mysql
               .speichern(((KursElement)boxKurs.getSelectedItem()).getKurs_Id(),

wenn ich einen Kurs aus dem hinteren Bereich auswähle dann speichert er ein 2 ???
 

didi577

Bekanntes Mitglied
in der Combobox wird die kursnr angezeigt, wenn ich die Kurasnummern weit auseinanderliegend auswähle und speichere werden irgendwann 2, 3 oder 4 gespeichert aber nicht die Zuordnungen kurs_id zu kursnr aus der Kurstabelle
 

didi577

Bekanntes Mitglied
bislang hatte ich nur den Aufruf der mysql gepostet... hier ist mal die Methode:
Java:
public int speichern(Object boxKurs)
{

       PreparedStatement pst = null;

       try {

           pst = con
                   .prepareStatement("INSERT INTO fragen(kurs) VALUES 
 ('"
                           + boxKurs
                           + "')");
return pst.executeUpdate();
 

Joose

Top Contributor
bislang hatte ich nur den Aufruf der mysql gepostet... hier ist mal die Methode:
Java:
public int speichern(Object boxKurs)
{
       PreparedStatement pst = null;
       try {
           pst = con.prepareStatement("INSERT INTO fragen(kurs) VALUES ('" + boxKurs + "')");
return pst.executeUpdate();

Hier fängt es schon mal an: Warum übergibst du der Methode "speichern" ein Object? Warum nicht den konkreten Typ den du in die Datenbank speichern willst?
Du solltest anfangen nachzuvollziehen was du da programmierst. Welches Objekt wird angezeigt und welches wird ausgewählt und dann an deine Methode speichern übergeben.
Hilfreich ist dabei der Debugger oder eben Log Ausgaben.

Ich glaub in deiner ComboBox werden immer noch die kurse_id angezeigt und nicht die kursnr und die Methode speichern funktioniert ohne Probleme.
 

didi577

Bekanntes Mitglied
ok, ich habe speichern gewählt da ich verschiedene Widgets auswerte und speichere
Java:
public int speichern(Object boxKurs, Object boxDozent, Object boxOrt,
           Object spinDatum, Object auswahlland, Object auswahla1,
           Object auswahla2, Object auswahla3, Object auswahla4,
           Object auswahlb1, Object auswahlb2, Object auswahlb3,
           Object auswahlc1, Object tfC14, Object auswahlc2, Object auswahlc3,
           Object auswahlc4, Object auswahlc5, Object auswahld1,
           Object auswahld2, Object auswahld3, Object tfD4, Object tfD5) {

       PreparedStatement pst = null;

       try {

           pst = con
                   .prepareStatement("INSERT INTO fragen(kurs,dozent,ort,datum,land,a1,a2,a3,a4,b1,b2,b3,c1,c1_txt,c2,c3,c4,c5,d1,d2,d3,d4_txt,d5_txt)  VALUES ('"
                           + boxKurs
                           + "','"
                           + boxDozent
                           + "','"
                           + boxOrt
                           + "','"
                           + spinDatum
                           + "','"
                           + auswahlland
                           + "','"
                           + auswahla1
                           + "','"
                           + auswahla2
                           + "','"
                           + auswahla3
                           + "','"
                           + auswahla4
                           + "','"
                           + auswahlb1
                           + "','"
                           + auswahlb2
                           + "','"
                           + auswahlb3
                           + "','"
                           + auswahlc1
                           + "','"
                           + tfC14
                           + "','"
                           + auswahlc2
                           + "','"
                           + auswahlc3
                           + "','"
                           + auswahlc4
                           + "','"
                           + auswahlc5
                           + "','"
                           + auswahld1
                           + "','"
                           + auswahld2
                           + "','"
                           + auswahld3 + "','" + tfD4 + "','" + tfD5 + "')");
           return pst.executeUpdate();

       } catch (SQLException e) {
           e.printStackTrace();
           return 0;

       } finally {
           if (pst != null) {
               try {
                   pst.close();
               } catch (SQLException e) {
                   e.printStackTrace();
               }
           }
       }
   }
das hat ja bis dato auch einwandfrei funktioniert
in der Combobox wähle ich kursnr 1.13.oder 2.15 aus sow wie die select zum laden auch definiert ist

das Resultset beim laden der combobox liefert für alle drei Spalten auch die richtigen Werte in der Konsole
 

Joose

Top Contributor
Es ist trotzdem der falsche Weg einfach Object als Type für die Parameter festzulegen. Verwende doch den konkreten Typ den du erwartest (also zum Beispiel: int, String, double, Date, ...).
Schau dir bitte die PreparedStatements nochmal an. Du stückelst dein SQL Statement noch immer zusammen -> Gefahr von SQL Injection!

Dort wo du die speichern Methode aufrufst solltest du kontrollieren ob du auch wirklich das richtige (gewünschte) KursElement Objekt selektiert hast und auch von der Methode getSelectedItem zurück bekommst.
 

didi577

Bekanntes Mitglied
habe noch einen Ansatz gefunden, in der Klasse KursElement sieht es so aus:
Java:
public class KursElement {
   
   private String kurs_id;
   private String kursnr;
   private String bezeichnung;
   
   public KursElement(String kurs_id, String kursnr, String bezeicnung) {
       
       this.kurs_id = kurs_id;
       this.kursnr = kursnr;
       this.bezeichnung = bezeicnung;
       
   }
   
   public String toString() {
       
       return kurs_id;
   }
   
   public String getKurs_Id() {
       
       return kurs_id;
   }
   
   public String getKursnr() {
       
       return kursnr;
   }
   
   public String getBezeichnung() {
       
       return bezeichnung;
   }

}

hier habe ich eine andere Reihenfolge im Konstruktor und
public String toString() {

return kurs_id;
}

ich werde hier mal schauen...
 

Harry Kane

Top Contributor
1. Du hast den Sinn von PreparedStatements nicht verstanden.
2. Das was du als "Struktur der db" gepostet hast, ist nicht wirklich hilfreich. Wenn du beim insert in die Tabelle "fragen" unerwartetes Verhalten bekommst, wäre es natürlich hilfreich, deren Struktur zu posten anstatt die Struktur der "kurse" Tabelle. Dann könnte man schauen, on in die "kurs" Spalte der "fragen" Tabelle wirklich die kursnr oder vielleicht doch die kurse_id (den Plural bei kurse_id finde ich auch verwirrend) gehört.
Aber jetzt bin ich raus.
 

Joose

Top Contributor
Was du uns mit deinem letzten Beitrag sagen möchtest, erschliesst sich mir nicht.

Wenn man sich vorherige Beiträge nochmals anschaut fällt auf das er im SELECT Statement folgendes stehen hat "SELECT kursnr, kurse_id ....".
Beim Erstellen der KursElement Objekte übergibt er die Daten in der falschen Reihenfolge. Die Kursnr übergibt er als kurse_id und die kurse_id als kursnr.
 

didi577

Bekanntes Mitglied
hab das mal gedreht:
Java:
public class KursElement {
   
   private String kurs_id;
   private String kursnr;
   private String bezeichnung;
   
   public KursElement(String kursnr, String kurs_id, String bezeichnung) {
       
       this.kurs_id = kursnr;
       this.kursnr = kurs_id;
       this.bezeichnung = bezeichnung;
       
   }
   
   public String toString() {
       
       return kurs_id;
   }
   
   public String getKurs_Id() {
       
       return kurs_id;
   }
   
   public String getKursnr() {
       
       return kursnr;
   }
   
   public String getBezeichnung() {
       
       return bezeichnung;
   }

}

er speichert trotzdem nicht die richtige Nummer
 

Joose

Top Contributor
Bitte verwende den Debugger! Kontrolliere welche KursElement Objekte erstellt werden (sind diese korrekt?)
Kontrolliere mit Hilfe des Debuggers ob wirklich das selektierte Element zurückgegeben wird und ob es die richtigen Daten enthält!

Ich hoffe dein "Bugfix" indem du die Parameterbezeichner im Konstruktor von KursElement vertauscht ist nicht ernst gemeint und war nur zum testen. Wenn du schon einen Fehler bemerkst dann behebe ihn auch richtig ;)
*) Passe entweder dein SELECT Statement an
*) Lies die Strings in der richtigen Reihenfolge von ResultSet aus
*) Passe den Konstruktor so an das die Bezeichner passen (es ist unlogisch das der Parameter "kursnr" dem Attribut "kurse_id" zugewiesen wird)
 

didi577

Bekanntes Mitglied
jetzt habe ich aber in der Combobox das Problem dass er nicht mehr kursnr sonder kurs_id anzeigt, die Reihenfolge beim Aufruf ist aber:
Java:
mysql.boxKursLaden(boxKursM, "select kursnr, kurse_id, bezeichnung from kurse ORDER BY kursnr");
 

didi577

Bekanntes Mitglied
es funktioniert jetzt mit kursnr

vielen Dank nochmal, auch für eure Kritik

ich weiß doch das ich noch ne Menge Hausaufgaben machen muss und vor allem funktionierenden Code auch verstehen muss, ich werde jetzt erstmal eure "Meckerliste" aus diesem Beitrag abarbeiten und meinen Code bereinigen, gelernt habe ich gestern auf jeden Fall ne Menge
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
G Foreignkey -> Zusammengesetzt Datenbankprogrammierung 3
N Datenbank abfragen nach bestimmten Wort Datenbankprogrammierung 7
J Datenbank abfragen Datenbankprogrammierung 6
D Daten aus der Firebase-Echtzeitdatenbank abfragen und in Variablen speichern (JAVA) Datenbankprogrammierung 0
O SQL Abfragen mit Mini Datenbank Datenbankprogrammierung 12
M Sql Abfragen Datenbankprogrammierung 1
D 2 Abfragen zusammenfassen Datenbankprogrammierung 7
D MySQL Geburtsdatum per KW abfragen Datenbankprogrammierung 1
W Daten in Java intern abfragen Datenbankprogrammierung 1
Thallius MySQL Tabelle splitten aber wie eine abfragen? Datenbankprogrammierung 10
D geänderte SELECT Abfragen Datenbankprogrammierung 15
K Viele verschiedenen SQL Abfragen Datenbankprogrammierung 2
J SQLite ResultSet closed -- Wiederholende DB-Abfragen Datenbankprogrammierung 6
R JPA dynamisch auf NULL abfragen Datenbankprogrammierung 2
A MySQL Tabelle ID abfragen und Spalte ausgeben Datenbankprogrammierung 4
K HSQLDB Einzelne Tabellen abfragen? Datenbankprogrammierung 4
F myBatis und komplexe Abfragen Datenbankprogrammierung 3
M MySQL Spaltennamen abfragen Datenbankprogrammierung 2
B Abfragen fehlgeschlagen Datenbankprogrammierung 6
D MySQL Applet MYSQL Abfragen Sicherheit Datenbankprogrammierung 2
E Datenbank Abfragen in eine GUI schreiben Datenbankprogrammierung 8
I Tabelle mit "|" getrennten Werten -> einzelnen Wert davon abfragen Datenbankprogrammierung 15
N Daten aus Datenbank abfragen und anzeigen in der Praxis?? Datenbankprogrammierung 2
S MySQL Server Informationen abfragen Datenbankprogrammierung 6
turmaline [Hibernate] @OneToMany - Eine referenzierte Tabelle abfragen Datenbankprogrammierung 11
Burny91 SQLite ResultSetMetaData abfragen Datenbankprogrammierung 6
T Kleine Tabellen für schnellere abfragen? Datenbankprogrammierung 3
H Derby SQL-Abfragen in Datei abspeichern Datenbankprogrammierung 2
trash SQL, ganze Tabelle abfragen Datenbankprogrammierung 3
E MySQL 2 Fragen zur Syntax von SQL-Abfragen Datenbankprogrammierung 8
brainray Bei MySQL alle Datenbanken eines Servers abfragen Datenbankprogrammierung 3
N mehrere Abfragen nacheinander wie mit MS Access mit JAVA Datenbankprogrammierung 3
MQue größte id in einer Tabelle abfragen Datenbankprogrammierung 4
A Leere Zelle von einer DB abfragen Datenbankprogrammierung 3
S Abfragen auf Vorhanden Datenbankprogrammierung 23
G Mehrere Tabellen abfragen Datenbankprogrammierung 7
G SQL Abfragen hardcoded im Quelltext? Datenbankprogrammierung 15
G Prolog abfragen mit Java Datenbankprogrammierung 3
M H2 DAtenbank in .sql datei schreiben/abfragen ? Datenbankprogrammierung 3
A Abfragen, wer zur Zeit angemeldet ist Datenbankprogrammierung 3
S Datentypen einer Tabelle Abfragen? Datenbankprogrammierung 2
G Rechte abfragen Datenbankprogrammierung 8
L MySQL : Funktionsweise von '%' in Abfragen Datenbankprogrammierung 2
G INSERT abfragen ob erfolgreich? Datenbankprogrammierung 5
B Eingefügter Datensatz erneut abfragen. Datenbankprogrammierung 10
E Datentyp numeric abfragen? Datenbankprogrammierung 2
P Daten aus 2 Tabellen mit java abfragen Datenbankprogrammierung 9
F die DN eines LDAP verzeichnisses abfragen Datenbankprogrammierung 2
M Abfragen auf ResultSets Datenbankprogrammierung 3
E Einzelne SQL Abfragen, oder alles zusammen? (veraendert!!!) Datenbankprogrammierung 11
A Viele Abfragen auf einmal: Performance Datenbankprogrammierung 2
Z Zeilen-Anzahl abfragen bei Datenbank Datenbankprogrammierung 4
W RsultSet auf null abfragen funktioniert nicht Datenbankprogrammierung 4
isowiz SELECT SUM() Ergebnis in Java abfragen Datenbankprogrammierung 6
S MySQL Abfragen blockiern den Arbeitsspeicher Datenbankprogrammierung 6
G Anzahl der Datensaetze abfragen Datenbankprogrammierung 11
V Anzahl der Datensätze abfragen Datenbankprogrammierung 9
S Bereiche einer Datenbank abfragen Datenbankprogrammierung 3
N Mehrere Abfragen gleichzeitig - was passiert da? Datenbankprogrammierung 6
D Reihenfolge der Abfragen Datenbankprogrammierung 7
L mehrere Abfragen mit einem Statement!? Datenbankprogrammierung 5
G Select-Abfragen sind sehr langsam Datenbankprogrammierung 7
R Mongodb Daten in einem bestimmten Document speichern Datenbankprogrammierung 1
OnDemand Externe IDs speichern - Tabellenaufbau Datenbankprogrammierung 8
OnDemand Spring Boot Speichern in Threads Datenbankprogrammierung 6
D MYSQL goorm IDE - Wie speichern? Datenbankprogrammierung 0
T Java Spiel Daten speichern Datenbankprogrammierung 1
S Sets speichern Datenbankprogrammierung 2
S MongoDB - Abfrageergebnis in Array speichern Datenbankprogrammierung 2
B Denkanstoß bei Abschreibungstabelle in DB speichern Datenbankprogrammierung 0
temi Wie kann ich "Class" in einer DB speichern? Datenbankprogrammierung 2
Danloc Informationen für Datenbankverbindung wo/wie speichern? Datenbankprogrammierung 11
F Java Objekte in einer Datenbank speichern Datenbankprogrammierung 4
L HSQLDB Bilder in der DB speichern? Datenbankprogrammierung 6
perlenfischer1984 Java Objecte speichern mit Hibernate ? Datenbankprogrammierung 2
M byte-Array in Datenbank speichern Datenbankprogrammierung 2
I SQLite Objekt speichern einer Serialisierter Klasse Datenbankprogrammierung 1
J Dateien in MySQL speichern & indizieren Datenbankprogrammierung 2
Androbin [Serializing] Mehrere Objekte in einer einzigen Datei speichern Datenbankprogrammierung 1
S CSV File in Datenbank speichern!? Datenbankprogrammierung 1
L Werte in Datei speichern Datenbankprogrammierung 16
E MySQL Große Datenmengen reibungslos speichern für Gameserver Datenbankprogrammierung 6
M MySQL Einzelne Systeminformationen speichern Datenbankprogrammierung 2
AMStyles Kann Wert nicht speichern (MAX VALUE) Datenbankprogrammierung 9
H MySQL Datenbank-Settings speichern Datenbankprogrammierung 10
5 Image in Datenbank speichern Datenbankprogrammierung 11
Kenan89 Oracle Daten einer Tabelle in Array speichern Oracle Datenbankprogrammierung 10
pg1337 PostgreSQL Werte auf Eingabe speichern Datenbankprogrammierung 23
B Feld in einer @Entity als Text speichern Datenbankprogrammierung 5
D MySQL Bild aus DB auslesen und auf FTP Speichern Datenbankprogrammierung 7
G Oracle Speichern der Reihenfolge Datenbankprogrammierung 2
I SQL_Abfrage-Ergebnis (ResultSet) in String[] speichern Datenbankprogrammierung 29
X Connection schließen oder speichern? Performance Frage Datenbankprogrammierung 7
S Verschiedene Informationen gleichen Typs speichern und auslesen Datenbankprogrammierung 4
T Derby/JavaDB byte[] in Datenbank speichern [JPA] Datenbankprogrammierung 10
Z MySQL werte von formular speichern Datenbankprogrammierung 3
D Hibernate: ArrayList in DB speichern und auslesen Datenbankprogrammierung 4
G Lange Texte in der DB speichern Datenbankprogrammierung 3
S Textur in DB speichern Datenbankprogrammierung 7
J MySQL Hibernate: Probleme beim Speichern von OneToMany - Datensätzen Datenbankprogrammierung 2

Ähnliche Java Themen

Neue Themen


Oben