Tablemodel und mysql

headnut

Gesperrter Benutzer
Guten Abend

Ich versuche eine Tabelle mit einer MYSQL Datenbank z verknüpfen, dies gelingt bisnund mit auslesen sehr gut. Nun stosse ich auf ein problem, wenn ich nämlich einen Wert aus der Tabelle ändern will weiss ich nicht wie ich dies bewerkstelligen soll. Ich habe ja nur die Information welche Zeile und welche Spalte ich ändern möchte. Soweit ich jedoch weiss gibt es keinen enstprechenden sql befehl.

Vielen Dank schonmal für die Hilfe
 
N

nillehammer

Gast
ch habe ja nur die Information welche Zeile und welche Spalte ich ändern möchte.
Hinter der Zeile verbirgt sich ja ein Datensatz, den Du vermutlich aus einem ResultSet hast. Dieser Datensatz hat bestimmt einen Primärschlüssel. Die Spalte hat ja betimmt auch einen Zusammenhang mit einer Spalte in einer DB-Tabelle. Der Befehl wäre dann:
SQL:
UPDATE <Tabelle> SET <Spaltenname> = <neuerWert> WHERE <Primärschlüsselspaltenname> = <AusgewählteZeile>;
Die Texte in den spitzen Klammern musst Du durch deine spezifischen Werte ersetzen. Falls Dir das als Info nicht reicht, poste bitte mal die Struktur der DB-Tabelle und wie Du das Tablemodle fütterst.
 

headnut

Gesperrter Benutzer
Ja ich lese zeile für zeile über das ReslutatSet aus und schreibe es direkt in die Tabelle.

Ueber die Methode setValueAt möchte ich jetzt den geänderten wert in die Tabelle zurück schreiben

Die Tabelle zegt ca. 30 datensätze an, zeile für zeile

Das object zeile und spalte bekomm ich ja von der Tabelle. Woher sollte ich dann den Primärschlüssel haben?
 

headnut

Gesperrter Benutzer
Oder ein ganz anderer Ansatz, wie macht ihr das?

Arbeitet ihr mit der id bei solchen sachen? Diese muss ja auch nicht zwingend durchnummeriert sein...
 

ARadauer

Top Contributor
Arbeitet ihr mit der id bei solchen sachen? Diese muss ja auch nicht zwingend durchnummeriert sein...

Hier spielen jetzt ein paar Konzepte zusammen. Also aus Datenbank Sicht ist es üblich einen technischen Primärschlüssel in jedem Datensatz zu haben. Das heißt du hast in jeder Tabelle eine ID mit dem du den Datensatz eindeutig identifizieren kannst.

Wenn du jetzt direkt ins Default Table Model die Daten schreibt, bleibt dir eigentlich nix anderes übrig als auch diese ID in der Tabelle zu haben. Damit kannst du dann bei einer Veränderung genau wissen kannst welche Zeile es war.

Was eine Alternative, die ich gerne verwende wenn ich nicht mit irgendwelchen komplexeren Frameworks arbeite ist:
Ich habe ein DAO das für das Laden und Speichern eine Fachobjekts zuständig ist.
Im Grunde liefert mir das Ding dann eine Liste von zb "Kunden"
Dann mache ich mir ein eigenes Table Model für Kunden das intern auf Zeilenebene nicht mit Arrays oder ähnliches arbeitet sondern wo eine Zeile wirklich über das Kunden Objekt repräsentiert wird.
Dann kann man bei Veränderung auch sauber einfach die geänderte Kundenzeile über das DAO speichern.

ich hoffe ich konnte dir damit weiterhelfen...
 

headnut

Gesperrter Benutzer
ookey dao klingt wider neu für mich abr ich glaube ich weis was du meinst, nur möchte ich es kurz in meine Sprache übersetzte!

Du würdest die Verwaltung der Datensätze nicht direkt im Model machen sondern eben mit einem DAO und danach über setter und getter die sache verwalten

Im model hast du einfach eine liste mit sämtlichen objekten die in der Db sind!

Logischerweise kann ich somit auch zum beispiel auf die id zugreiffen ohne dass ich diesen anzeigen muss!

Das klingt zimlich schön wenn ich es richtig verstanden habe! Den die ID in der Tabelle finde ich relativ unschön da diese nicht "Logisch" sein muss
 

headnut

Gesperrter Benutzer
Soooo ich habs gelöst und es ist für mich eine sehr einfache Lösung geworden.

Ich wäre froh wenn vielleicht jemand ein Feedback dazu geben könnte.

Ich übergeben der Update Methode Spalte, Teile und neuer Wert. Bei einer änderung suche ich über die Zeile meinen Index und Spaltenname. Nachher muss ich nur noch ein Update machen.

Java:
	/**
	 * Ändert einen einen Eintrag aus der Liste über den index
	 * 
	 * Mit der übergeben Zeile wird in der DB der entsprechende Eintag gesucht,
	 * den Index ausgelesen und über die entsprechende Spalte geändert
	 * 
	 * 
	 * @param rowIndex
	 * @param columnIndex
	 * @param value
	 */
	public void setUpdate(int rowIndex, int columnIndex, String value) {
		String index = "";
		String columnName = "";

		try {
			st = conn.createStatement();
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		try {
			rs = st.executeQuery("SELECT * FROM kunden");
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// Liest den Index der enstprechenden Zeile
		try {
			rs.absolute(rowIndex + 1);
			index = rs.getString(1);

		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

		// Spaltenname abfrageb
		try {
			columnName = rs.getMetaData().getColumnName(columnIndex); 
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		 
		// Wert ändern
		try {
			st.executeUpdate("UPDATE kunden SET " + columnName + " = ' "
					+ value + " ' WHERE id = " + index);
		} catch (SQLException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}

		try {
			rs.close();
			st.close();
		} catch (SQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
X Objekte aus TableModel serialisieren und deserialisieren Allgemeine Java-Themen 4
Z TableModel Allgemeine Java-Themen 16
A ResultSet TableModel aktualisieren? Allgemeine Java-Themen 9
D jTable und TableModel Allgemeine Java-Themen 2
MQue Frage zu TableModel Allgemeine Java-Themen 6
S TableModel von AbstractTableM. oder DefaultTableM. ableiten? Allgemeine Java-Themen 4
O Parameterisierte TableModel bzw. TableColumn? Allgemeine Java-Themen 2
H TableModel mit JNI Allgemeine Java-Themen 3
F [TableModel] Doppelte einträge finden (bzw. verhindern) Allgemeine Java-Themen 3
N MySQL mit Strings Allgemeine Java-Themen 3
B Schnittstelle zwischen MySQL und Apache Allgemeine Java-Themen 8
C MySQL Tabellen sortieren. Allgemeine Java-Themen 33
O Zugriff auf mySQL ohne JDBC Allgemeine Java-Themen 3
V Maven Maven ClassNotFoundException MySQL JDBC Treiber Allgemeine Java-Themen 1
G Eclipse Java findet MySQL Driver nach export nicht mehr Allgemeine Java-Themen 2
R Praktikums Projekt Java vs MySQL Allgemeine Java-Themen 91
C JPA und mysql Allgemeine Java-Themen 3
D falsche Zeile aus JTable in MySQL gelöscht Allgemeine Java-Themen 6
D Daten in MySQL-Datenbank schreiben Allgemeine Java-Themen 13
J javaFX mySQL Allgemeine Java-Themen 3
B MySQL Eintrag erstellen Allgemeine Java-Themen 3
P MYSQL Datenbank Dump einspielen Allgemeine Java-Themen 1
F eclipse, texlipse, R und mysql Allgemeine Java-Themen 2
S WebApp MySQL Connection Loss Allgemeine Java-Themen 10
T Datumsformat für MySQL Allgemeine Java-Themen 4
S ANT mysql treiber einbinden Allgemeine Java-Themen 4
F Ärger mit mySQL Allgemeine Java-Themen 3
S Java Methode um Daten aus MySQL auslesen Allgemeine Java-Themen 11
S Excel in mySQL importieren Allgemeine Java-Themen 3
neurox Tutorial: Hibernate mit MySQL (erste Schritte) Allgemeine Java-Themen 34
M JAVA Timestamp aus Mysql Allgemeine Java-Themen 4
T MySQl Datenbank als Array ausgeben Allgemeine Java-Themen 11
hdi Applet, JavaScript, PHP, mySQL -> Was brauch ich? Allgemeine Java-Themen 3
E MySQL-Datenbank <-> HashMap/TreeMap Allgemeine Java-Themen 1
H Daten aus MySQL datenbank auslesen und in ArrayList stecken Allgemeine Java-Themen 8
G mySQL und JTable Allgemeine Java-Themen 7
G MySql+Java+backup Allgemeine Java-Themen 23
I JAVA+ MySQL locales statement? Allgemeine Java-Themen 2
B Importieren in MySQL mit Java-Programm Allgemeine Java-Themen 15
G mysql datum umwandeln mittels jsp Allgemeine Java-Themen 10
G Mysql --> Datumsformat Allgemeine Java-Themen 7
C Umlaute mysql Allgemeine Java-Themen 3
V MySql db unter Java zum laufen bringen. Allgemeine Java-Themen 2
C Rechte unter WinXP, MySQL-Server per Runtime herunterfahren? Allgemeine Java-Themen 6
G Datum in MySQL Timestamp umwandeln? Allgemeine Java-Themen 10
G Daten aus MySQL-Datenbank an JFreeChart übergeben Allgemeine Java-Themen 3
G MySQL-Problem (LOAD DATA INFILE) Allgemeine Java-Themen 5
F Threadsicherheit von MySQL-Verbindungen Allgemeine Java-Themen 8

Ähnliche Java Themen

Neue Themen


Oben