[SQL] UPDATE oder REPLACE INTO Befehl

Status
Nicht offen für weitere Antworten.

BlackScorp21

Mitglied
Habe mal eine Frage zu dem UPDATE Befehl in SQL.

Habe folgende Situation

Lasse in Java Daten einer gesuchte Person in 4 Textfeldern ausgeben.

Speicher diese Inhalte in Variablen (nameAlt. vornameAlt, klasseAlt, abcAlt)

Jetzt soll der Anwender, wenn sich was geändert hat die Daten in den Textfeldern ändern.

Dann soll in der Datenbank aus : Meyer Klaus 1 a --> Meyer Hubert 1 a


Code:
String sqlQuery = 	"UPDATE schueler  											" +
				"			Set name = '"+nameNeu+"', vorname = '"+vornameNeu+"', 		    " +
				"				klasse ='"+klasseNeu+"', abc = '"+abcNeu+"' 			       " +
				"			WHERE name = '"+nameAlt+"' AND vorname = '"+vornameAlt+"'	 " +
				"			AND	 klasse = '"+nameAlt+"' AND abc = '"+abcAlt+"';";

Allerdings bekomme ich folgende Fehlermeldung:

com.mysql.jdbc.MysqlDataTruncation: Data truncation: Truncated incorrect DOUBLE value: 'Nachname'

Darf ein Wert "Nachname" nicht wieder mit "Nachname" überschrieben werden???


Muss ich dafür jetzt REPLACE INTO nehmen?
 
"Data truncation" heisst normalerweise, dass du zB versuchst einen String mit 10 Zeichen in ein Varchar felfdmit wengier Zeichen zu speichern, dass führt zum Fehler.

Also: Wie lang darf denn das Feld Nachname in der DB sein?
 
Danke für die Superschnelle antwort! Leider leigt es da wohl nicht dran!

Die Namensfelder für vor und Nachname dürfen beide 30 Char zeichen lang sein.
Da bin ich nicht drüber.

Mein Test Name war halt "Nachname" und der Test Vorname "Vorname"


DOUBLE value: 'Nachname'

heißt doch das ein Wert doppelt vorkommt.
Deswegen dachte ich daran, dass in der Spalte nachname man den Wert "Nachname" nicht durch "Nachname" ersetzen könnte. Aber das geht doch sicher oder? Wäre ja blöd wenn nicht!
 
Natürlich geht das nicht. Ich sehe die Fehlermeldung zwar zum 1. Mal, hört sich für mich aber so an, als ob du versuchst, ein VARCHAR in ein DOUBLE-Feld zu bringen.
 
Der Wert der in der DB drin steht ist richtig.

Den wert den ich reinschreiben will lese ich mit JTextfield.getText(); aus und speicher ihn auch in einem String.

Also
Code:
String nameNeu = txtName.getText();

Verstehe also nicht warum da ein double wert zustande kommen soll.
 
Verwende Prepared Statements um solche und andere Probleme zu vermeiden bzw. besser damit umgehen zu können.
 
Äh sorry, meinte "natürlich geht das!".

zu deinem jetztigen Post: Nicht dein Java-Wert ist Double, sondern die Spalte in deiner DB.
 
evtl. solltest du bei deiner Where-Bedingung auch

AND klasse = '"+klasseAlt+"'

schreiben und nicht

AND klasse = '"+nameAlt+"'

klasse ist dann vermutlich ein double und nameAlt eben ein String/varchar. So kommts zu dem Fehler. (denk ich mal)
 
Und wieder einmal scheiter ich wegen einem ganz einfachem Fehler.
Und ich suche was an der Syntax falsch ist. 😳

Danke!

Es geht!


Natürlich muss da:

AND klasse = '"+klasseAlt+"'

stehen.

Er vergelicht sonst wirklich ein Zeile die einen Integerwert besitzt mit dem String aus der Variable.


Dank euch :toll:
 
öhm, doch!? Wenn er mittels setString einen String setzt, die Spalte aber ein double ist, dann fliegt er trotzdem auf die Schnauze. Mit PreparedStatements fällt sowas nur schneller auf, verhindert wird das aber nicht.
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben