Itu karena
. AndaVALUES (%s,%s)
tidak mengelilingi isi variabel nama dan keluarga dengan tanda kutip. Oleh karena itu, mesin Sql back-end Anda menganggap mohsen
Anda adalah nama kolom, bukan nilai.
Sebagai gantinya, gunakan, mis.
VALUES (''%s'',''%s'')
seperti dalam
Namee := 'mohsen';
Family := 'dolatshah';
aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
aSQLCommand := Format(aSQLText,[namee,family]);
Dalam versi asli jawaban saya, saya menjelaskan cara memperbaiki masalah Anda dengan "menggandakan" tanda kutip tunggal di Sql yang Anda coba buat, karena bagi saya Anda mengalami kesulitan melihat (secara harfiah) apa yang salah dengan apa yang Anda lakukan.
Cara alternatif (dan lebih baik) untuk menghindari masalah Anda (dan yang selalu saya gunakan dalam kehidupan nyata) adalah dengan menggunakan QuotedStr()
fungsi. Kode yang sama kemudian akan menjadi
aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)';
aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);
Menurut Bantuan Online:
Apa yang dimaksud dengan "berulang" adalah apa yang saya sebut sebagai "menggandakan". Mengapa itu penting, dan alasan utama saya menggunakan QuotedStr adalah untuk menghindari kesalahan mesin db Sql ketika nilai yang ingin Anda kirim berisi karakter kutipan tunggal seperti di O'Reilly .
Coba tambahkan baris yang berisi nama itu ke tabel Anda menggunakan MySql Workbench dan Anda akan mengerti maksud saya.
Jadi, penggunaan QuotedStr tidak hanya membuat pembuatan pernyataan SQL sebagai string dalam kode Delphi kurang rawan kesalahan, tetapi juga menghindari masalah di back-end.