Това е защото вашият
VALUES (%s,%s)
не обгражда съдържанието на променливата namee и семейството с кавички. Следователно вашият back-end Sql двигател смята вашия mohsen
е име на колона, а не стойност.
Вместо това използвайте, напр.
VALUES (''%s'',''%s'')
както в
Namee := 'mohsen';
Family := 'dolatshah';
aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
aSQLCommand := Format(aSQLText,[namee,family]);
В оригиналната версия на моя отговор обясних как да отстраните проблема си, като „удвоите“ единични кавички в Sql, който се опитвахте да изградите, защото ми се струваше, че изпитвате затруднения да видите (буквално) какво не е наред с какво правехте.
Алтернативен (и по-добър) начин да избегнете проблема си (и този, който винаги използвам в реалния живот) е да използвате QuotedStr()
функция. След това същият код ще стане
aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)';
aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);
Според онлайн помощта:
Това, което означава "повторно", е това, което наричам "удвояване". Защо това е важно и основната причина да използвам QuotedStr е да избягвам Sql db-engine да хвърля грешка, когато стойността, която искате да изпратите, съдържа един знак за кавички, както е в O'Reilly .
Опитайте да добавите ред, съдържащ това име, към вашата таблица с помощта на MySql Workbench и ще разберете какво имам предвид.
Така че използването на QuotedStr не само прави конструирането на SQL изрази като низове в кода на Delphi по-малко податливо на грешки, но също така избягва проблеми и в задния край.