Forum: PC-Programmierung Zeile in JTable löschen


von Wiener_Gast (Gast)


Lesenswert?

Hallo alle zusammen,

Die programmiersprache ist Java
Datenbakseitig :SQLServer 2008

ich möchte in eine JTable neue zeilen einfügen bzw löschen und dann in 
sqlServer auch speichern.
Mit dem Einfügen funktioniert einwandfrei, nur mir ist nicht ganz klar 
wie ich das mache mit dem Löschen von Zeilen.
Da die in der Tabelle viele spalten die auf andere Tabelle 
referenzieren.


Beim Einfügen, Update, funktioniert alles super nur wie solle ich 
überprüfen beim löschen in einem zeile ob es die datensätze keine 
referenzen haben.


Für Jeden Vorschlag bin ich dankbar.

von Wiener_Gast (Gast)


Lesenswert?

Hat keine einen Vorschlag.
Mir ist nur nicht ganz klar wie ich auf die datenbanken seite zu 
überprüfen ob der datensatz einen  verweis hat.

Ich habe so gedacht:
1) ich frage der Tabelle ab, was für Fremdschlüssel hat und dann...

von Udo S. (urschmitt)


Lesenswert?

Wie würdest du das denn mit SQL machen? Genau so musst du es 
programmieren.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Das hat nun aber nix mit einer "JTable" zu tun, du mußt (beim einfügen 
übrigens auch) einfach eine passende Fehlerbehandlung einfügen, nur weil 
Fremdschlüssel existieren muß es nicht heißen, dass das löschen klappt, 
ebenso wen keine existieren kann deinem User immer noch das DELETE Recht 
fehlen...

von Wiener_Gast (Gast)


Lesenswert?

Danke für die Antwort.

wie kann ich wissen mit SQl wo es die Primärschlüssel von eine Tabelle x 
als Fremschlüssel in einen Tabelle Y verwendet.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Wiener_Gast schrieb:
> Danke für die Antwort.
>
> wie kann ich wissen mit SQl wo es die Primärschlüssel von eine Tabelle x
> als Fremschlüssel in einen Tabelle Y verwendet.

Das steht in der Dokumentation deines SQL Servers.

von Wiener_Gast (Gast)


Lesenswert?

ja danke habe ich gerade gesehen.
Da es diese Tabelle pflichfelder (die auch als fremdschlüssel sind).
Gibt es noch einen Möglichkeit trotzdem einen Zeile zu löschen?

von Udo S. (urschmitt)


Lesenswert?

Wiener_Gast schrieb:
> Da es diese Tabelle pflichfelder (die auch als fremdschlüssel sind).
> Gibt es noch einen Möglichkeit trotzdem einen Zeile zu löschen?

Keiner hier kennt das Modell deiner Datenbank. Du musst erst mal wissen 
wie deine Datenbank aufgebaut ist, wie die Tabellen über Schlüssel 
miteinander verknüpft sind.
Wenn du Elemente löschen willst, musst du von 'unten' anfangen. Das 
heisst erst müssen alle Elemente von abhängigen Tabellen gelöscht sein, 
deren Fremdschlüssel auf deinen Tabelleneintrag zeigen. Erst dann kann 
man den führenden Eintrag löschen.
Das Ganze kann man evt. teilweise mit Constraints beim Definieren der 
Tabellen automatisieren. Stichwort wäre dafür "on delete cascade" in der 
DDL.

Der Inhalt deiner Tabellen hat erst mal nichts mit einem JTable zu tun.
Du solltest je eine eigene Klasse für jede Tabelle in Java definieren, 
die einzelnen Einträge wären dann Objekte dieser Klasse.
Die kann man dann in Listen halten und mit deiner Anzeigeschicht 
(JTable) verknüpfen.
Die Kommunikation mit der Datenbank würde ich in eine eigene Schicht von 
Klassen auslagern, suche mal dach dem Konzept von DAOs (Database access 
objects).
Das ist für mittelgroße Anwendungen sauber, überschaubar und relativ gut 
in Sachen Performance.

von Wiener_Gast (Gast)


Lesenswert?

@Udo Schmitt

vielen dank

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.