Seite 1 von 1

Spalte aus Mysql Datenbank löschen

Verfasst: 13. Februar 2010 13:28
von pulsonix
Hallo habe jetzt zum erstenmal mit QT zu tuen.

Arbeite mit dem QT Creator, welcher bis dato sehr angenehm ist.

Nur bräuchte ich jetzt ein bisschen Hilfe. Unzwar möchte ich aus einer Mysql Datanbenk eine Spalte löschen.

Dazu habe ich gedacht:

query.exec("DELETE FROM schedule WHERE name = "+this->text );

aber leider falsch gedacht.

Übrigens text ist ein QString.

Bin für jegliche HIlfe dankbar.

Danke

Verfasst: 13. Februar 2010 13:39
von pulsonix
So habe die Lösung gerade endeckt. Für alle die es auch Interresiert:

query.prepare("DELETE FROM schedule WHERE name< :text ;");
query.bindValue(":text", this->text);
query.exec();

Verfasst: 13. Februar 2010 13:44
von TSS
Bei einem ähnlichen Problem hab ich das folgendermaßen gelöst:

Code: Alles auswählen

query.exec("DELETE FROM schedule WHERE name = '"+this->text+"'" ); 
Also den Text in einfache Anführungszeichen. 'Text'

Verfasst: 13. Februar 2010 13:49
von Christian81
Nach hoffentlich heißt keiner "a'; delete from schedule" :lol:

Verfasst: 13. Februar 2010 15:00
von pulsonix
Danke. Getestet und bestanden.

Das war auch eigentlich die Lösung nach der ich verzweifelt gesucht hatte.

Werde auch diese benutzten. Spare ich mir immerhin 2/3 code.



Ich habs versucht zu verstehen aber ging leider nicht, ich lach trotzdem :lol: .

Verfasst: 13. Februar 2010 15:09
von TSS
Wenn jemand den Namen, den Christian gepostet hat als Namen angibt, dann kan das zu Problemen führen^^
Es wird dann folgender Befehl ausgeführt:
query.exec("DELETE FROM schedule WHERE name = 'a'; delete from schedule" );
Das sind dann aber zwei Anweisungen, wobei die zweite einfach die komplette Tabelle löscht. Wenn der Name also vom Benutzer angegeben werden kann, solltest du vorher prüfen, was er so eingibt.

Verfasst: 13. Februar 2010 15:47
von pulsonix
AAAAA ein Lichtlein geht auf. :lol:

Ja das sollte man besser im hinterkopf haben.

Verfasst: 13. Februar 2010 16:50
von comm_a_nder
Passend dazu: http://xkcd.com/327/
Gegen sowas hilft ein sogenanntes prepared statement.
Und ganz abgesehen davon werden durch DELETE keine Spalten gelöscht, sondern Zeilen, die den angegebenen Bedingungen entsprechen.