Es ist, weil Ihr
VALUES (%s,%s)
ist nicht die namee und Familie variable Inhalte durch Anführungszeichen umgeben. Daher denkt Ihre Back-End-Sql-Engine, dass mohsen
ein Spaltenname und kein Wert ist.
Verwenden Sie stattdessen z.B.
VALUES (''%s'',''%s'')
wie in
Namee := 'mohsen';
Family := 'dolatshah';
aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
aSQLCommand := Format(aSQLText,[namee,family]);
In der ursprünglichen Version meiner Antwort habe ich erklärt, wie Sie Ihr Problem zu beheben, indem Sie „Verdoppelung“ Apostrophe in der Sql Sie zu bauen versuchten, weil es schien, für mich, dass Sie Schwierigkeiten hatten, (wörtlich) zu sehen, was mit dem, was Sie taten, falsch war.
Eine alternative (und bessere) Möglichkeit, Ihr Problem (und das, das ich immer im wirklichen Leben benutze) zu vermeiden, ist die Verwendung der QuotedStr()
Funktion. Der gleiche Code wäre dann
aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)';
aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);
Nach der Online-Hilfe:
Verwenden QuotedStr den String S in einen String in Anführungszeichen zu konvertieren. Ein einfaches Anführungszeichen (')> wird am Anfang und am Ende von S eingefügt, und jedes einzelne Anführungszeichen im String wird> wiederholt.
Was bedeutet "wiederholt" ist, was ich als "Verdoppelung" bezeichnet habe. Warum das wichtig ist und der Hauptgrund, warum ich QuotedStr benutze, ist, zu vermeiden, dass die Sql db-Engine einen Fehler auslöst, wenn der zu sendende Wert ein einfaches Anführungszeichen wie in O'Reilly enthält.
Versuchen Sie, eine Zeile mit diesem Namen zu Ihrer Tabelle mit MySql Workbench hinzufügen, und Sie werden sehen, was ich meine.
So macht das Verwenden von QuotedStr nicht nur das Konstruieren von SQL-Anweisungen als Zeichenfolgen in Delphi-Code weniger fehleranfällig, sondern vermeidet auch Probleme am Backend.
Ich versuchte, aber ich arbeite –
Definieren Sie "nicht funktioniert". Welche Fehlermeldung erhalten Sie? Übrigens, der Code in Ihrem q sieht falsch aus (z. B. "Feld" ist falsch geschrieben), bitte tu das nicht, es verschwendet einfach die Zeit aller Beteiligten - füge deinen genauen Code und deine Fehlermeldung in deinen q ein. – MartynA
, dass eror war gleich eror ich fragte es tunest ändern –