Spalte aus Mysql Datenbank löschen

Alles rund um die Programmierung mit Qt
Antworten
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Spalte aus Mysql Datenbank löschen

Beitrag 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.
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Danke

Beitrag 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();
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag 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'
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Nach hoffentlich heißt keiner "a'; delete from schedule" :lol:
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag 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: .
TSS
Beiträge: 73
Registriert: 24. November 2009 15:40
Kontaktdaten:

Beitrag 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.
pulsonix
Beiträge: 12
Registriert: 28. Januar 2010 20:04
Wohnort: Berlin

Beitrag von pulsonix »

AAAAA ein Lichtlein geht auf. :lol:

Ja das sollte man besser im hinterkopf haben.
comm_a_nder
Beiträge: 2
Registriert: 4. Dezember 2009 09:59

Beitrag 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.
Antworten