ऐसा इसलिए है क्योंकि आपका
VALUES (%s,%s)
उद्धरणों द्वारा नामी और पारिवारिक चर सामग्री के आसपास नहीं है। इसलिए, आपका बैक-एंड Sql इंजन आपके mohsen
. के बारे में सोचता है एक कॉलम नाम है, मान नहीं।
इसके बजाय, उपयोग करें, उदा.
VALUES (''%s'',''%s'')
के रूप में
Namee := 'mohsen';
Family := 'dolatshah';
aSQLText:= 'INSERT INTO b_tbl(Name,Family) VALUES (''%s'',''%s'')';
aSQLCommand := Format(aSQLText,[namee,family]);
मेरे उत्तर के मूल संस्करण में, मैंने समझाया कि आप जिस एसक्यूएल को बनाने की कोशिश कर रहे थे, उसमें सिंगल कोट्स को "डबल अप" करके अपनी समस्या को कैसे ठीक किया जाए, क्योंकि मुझे ऐसा लग रहा था कि आपको यह देखने में कठिनाई हो रही है (शाब्दिक रूप से) क्या गलत था आप कर रहे थे।
आपकी समस्या से बचने का एक वैकल्पिक (और बेहतर) तरीका है (और जिसे मैं हमेशा वास्तविक जीवन में उपयोग करता हूं) QuotedStr()
का उपयोग करना है समारोह। फिर वही कोड बन जाएगा
aSQLText := 'INSERT INTO b_tbl (Name, Family) VALUES (%s, %s)';
aSQLCommand := Format(aSQLText, [QuotedStr(namee), QuotedStr(family)]);
ऑनलाइन सहायता के अनुसार:
"दोहराया" से इसका क्या अर्थ है जिसे मैंने "दोहराव" के रूप में संदर्भित किया है। यह महत्वपूर्ण क्यों है, और मैं QuotedStr का उपयोग करने का मुख्य कारण यह है कि जब आप जिस मान को भेजना चाहते हैं, उसमें एक एकल उद्धरण वर्ण होता है, जैसे कि O'Reilly ।
MySql कार्यक्षेत्र का उपयोग करके अपनी तालिका में उस नाम वाली एक पंक्ति जोड़ने का प्रयास करें और आप देखेंगे कि मेरा क्या मतलब है।
इसलिए, QuotedStr का उपयोग करने से न केवल डेल्फी कोड में स्ट्रिंग्स के रूप में SQL कथनों का निर्माण कम त्रुटि-प्रवण होता है, बल्कि यह बैक-एंड की समस्याओं से भी बचता है।