डेटाबेस तक पहुंचने के लिए टेक्स्टबॉक्स से उद्धरणों के साथ टेक्स्ट को कैसे सहेजें


हेलो सब लोग,
मैं एक एप्लिकेशन विकसित कर रहा हूं जो उपयोगकर्ता को टेक्स्ट के साथ एक फॉर्म भरने की अनुमति देता है।
इसलिए मैं टेक्स्टबॉक्स का उपयोग करता हूं।
मैं टेक्स्टबॉक्स में मौजूद डेटा को एक्सेस डेटाबेस में सहेज सकता हूं लेकिन जब टेक्स्ट में सिंगल (‘) या डबल कोट्स (“) होते हैं तो समस्या होती है।

मैं समस्या को कैसे हल कर सकता हूँ ?

धन्यवाद

परिशुद्धता: यह C# में एक डेस्कटॉप एप्लिकेशन WinForm है

मैंने क्या प्रयास किया है:

Texbox1.Text का उपयोग करना काम नहीं करता है क्योंकि उद्धरण SQL कमांड में दिखाई देते हैं और इन्हें कमांड के भाग के रूप में समझा जाता है, डेटा के रूप में नहीं

यहाँ कोड है

OleDbConnection कनेक्शन = नया OleDbConnection (@”प्रदाता=Microsoft.ACE.OLEDB.12.0;डेटा स्रोत=Historique_Rdv.accdb”);
कनेक्शन.खुला();

स्ट्रिंग कमांड = “रेंडेज़वस में सम्मिलित करें” +
“(आईडीएनिमल, अपॉइंटमेंट नंबर, अपॉइंटमेंट दिनांक, सेवा, समय, पूरक जानकारी, वेतन, मालिक आईडी)” +
“मूल्य(” + int.Parse(TB_idAnimalNewRdv.Text) + “, ” + int.Parse(TB_numeroRdvNouveauRdv.Text) + “, ” + TB_dateNouveauRdv.Text + “‘, ” + TB_actionNouveauRdv.Text + “‘, ‘ ” + TB_tempsNouveauRdv.Text + “‘, ” + TB_complementInfoNouveauRdv.Text + “‘, ” + int.Parse(TB_payeNouveauRdv.Text) + “, ” + int.Parse(TB_idProprietaireNewRdv.Text) + ” )”;

OleDbCommand cmdd = नया OleDbCommand(कमांड, कनेक्शन);
cmdd.ExecuteNonQuery();

कनेक्शन.बंद करें();

समाधान 2

उद्धरण:

मैं टेक्स्टबॉक्स में मौजूद डेटा को एक्सेस डेटाबेस में सहेज सकता हूं लेकिन जब टेक्स्ट में सिंगल (‘) या डबल कोट्स (“) होते हैं तो समस्या होती है।

यह संभवतः उस तरीके से जुड़ा हुआ है जिस तरह से आप पाठ को सहेजने का प्रयास कर रहे हैं।
आपको SQL इंजेक्शन भेद्यता के बारे में पढ़ना चाहिए।

स्ट्रिंग्स को जोड़कर कभी भी SQL क्वेरी न बनाएं। देर-सबेर, आप इसे उपयोगकर्ता इनपुट के साथ करेंगे, और यह “एसक्यूएल इंजेक्शन” नामक भेद्यता का द्वार खोलता है, यह आपके डेटाबेस और त्रुटि प्रवण के लिए खतरनाक है।
किसी नाम में एक उद्धरण और आपका प्रोग्राम क्रैश हो जाता है। यदि कोई उपयोगकर्ता इनपुट “ब्रायन ओ’कॉनर” जैसा नाम आपके ऐप को क्रैश कर सकता है, तो यह एक SQL इंजेक्शन भेद्यता है, और क्रैश कम से कम समस्याओं में से एक है, एक दुर्भावनापूर्ण उपयोगकर्ता इनपुट और इसे सभी क्रेडेंशियल्स के साथ SQL कमांड में बढ़ावा दिया जाता है।
एसक्यूएल इंजेक्शन – विकिपीडिया[^]
एसक्यूएल इंजेक्षन[^]
उदाहरण के तौर पर एसक्यूएल इंजेक्शन हमले[^]
PHP: SQL इंजेक्शन – मैनुअल[^]
मैं तकनीकी शब्दजाल के बिना SQL इंजेक्शन को कैसे समझा सकता हूँ? – सूचना सुरक्षा स्टैक एक्सचेंज[^]

समाधान 3

आपके वर्तमान कोड के काम न करने का कारण यह है कि आप SQL INSERT क्वेरी बनाने के लिए स्ट्रिंग कॉन्सटेनेशन का उपयोग कर रहे हैं। ऐसा कभी मत करो!!!

इसके बजाय पैरामीटरयुक्त क्वेरीज़ का उपयोग करें. इस तरह, आपके पाठ में दोहरे उद्धरण चिह्न आपके SQL कथन के भाग के रूप में व्याख्या किए जाने के बजाय ठीक से बच जाते हैं।

एक बार जब आप समाधान 2 में लिंक पढ़ना समाप्त कर लेते हैं, तो अपने प्रश्नों के लिए पैरामीटर ऑब्जेक्ट बनाने के तरीके के बारे में जानकारी ढूंढने के लिए “सी # एसक्यूएल पैरामीटरयुक्त क्वेरीज़” के लिए Google पर जाएं और पैरामीटर प्लेसहोल्डर्स को अपने एसक्यूएल स्टेटमेंट में रखें।

ओह, और जब आप ऐसा करेंगे तो आपके SQL कोड को डीबग करना बहुत आसान हो जाएगा।

コメント

タイトルとURLをコピーしました