आपकी तात्कालिक समस्या शायद या तो गलत कनेक्शन स्ट्रिंग है या डेटाबेस सर्वर उपलब्ध नहीं है। कनेक्शन स्ट्रिंग कुछ इस तरह होनी चाहिए
Server=localhost;Database=testdb;Uid=<username>;Pwd=<password>;
<उपयोगकर्ता नाम>
के साथ और <पासवर्ड>
आपके वास्तविक मानों से बदल दिया गया है।
इसके अलावा आपके कोड में कई मुद्दे हैं और आपको निश्चित रूप से उन पर गौर करना चाहिए कि क्या यह उत्पादन कोड बनने का इरादा है और शायद भले ही यह कुछ सीखने के लिए सिर्फ एक खिलौना परियोजना हो। सूची विशेष क्रम में है और व्यापक नहीं हो सकती है।
- अपनी कनेक्शन स्ट्रिंग को हार्ड कोड न करें। इसके बजाय इसे कॉन्फ़िगरेशन फ़ाइल में ले जाएं।ए>
- कॉन्फ़िगरेशन फ़ाइलों या स्रोत कोड में सादा पाठ पासवर्ड शामिल न करें। Windows प्रमाणीकरण, प्रमाणपत्र जैसे कई समाधान हैं। या पासवर्ड प्रोटेक्टेड Windows डेटा सुरक्षा API द्वारा ।
- केवल
IDisposable
का निपटान न करेंIDisposable.Dispose()
. पर कॉल करके उदाहरण . इसके बजायका उपयोग करके
का उपयोग करें अपवादों की स्थिति में भी संसाधन जारी करने का बयान। - स्ट्रिंग मैनिपुलेशन तकनीकों का उपयोग करके SQL कथन न बनाएं। इसके बजाय
SqlParameter
SQL इंजेक्शन हमलों को रोकने के लिए। - सादे टेक्स्ट पासवर्ड को डेटाबेस में स्टोर न करें। इसके बजाय कम से कम पासवर्ड के नमकीन हैश को स्टोर करें और धीमे हैश फ़ंक्शन का उपयोग करें, MD5 या किसी सदस्य का नहीं। SHA परिवार।
- आप
IDbCommand का उपयोग कर सकते हैं। ExecuteScalar
एक अदिश परिणाम प्राप्त करने और डेटा रीडर का उपयोग करने से बचने के लिए। - बूलियन मान की तुलना
सत्य
से करना यागलत
बेमानी है और सिर्फ आपके कोड में शोर जोड़ता है। इसके बजायif (reader.IsDBNull(0) ==true)
आप बस उपयोग कर सकते हैंif (पाठक.IsDBNull(0))
.if (reader.Read() !=false)
. के लिए भी यही बात लागू होती हैif (reader.Read() ==true)
. के बराबर क्या है? और इसलिए भीif (पाठक.पढ़ें ())
। - ओ/आर मैपर जैसे Entity Framework का उपयोग करना आमतौर पर SQL कमांड के स्तर पर डेटाबेस के साथ इंटरैक्ट करने को प्राथमिकता दी जाती है।