शुरू करने के लिए आप सीधे अपनी SQL क्वेरी में एक मान शामिल करने का प्रयास करके गलत हो रहे हैं। पैरामीटरयुक्त SQL का उपयोग करें और एक DateTime
के रूप में मान निर्दिष्ट करें , और मान लें कि आपकी डेटाबेस तालिका भी . है दिनांक/डेटाटाइम फ़ील्ड (जो यह होना चाहिए) का उपयोग करके, आपको ठीक होना चाहिए।
आपको तीन कारणों से सीधे अपने SQL में मान शामिल करने से बचना चाहिए:
- आप मुश्किल स्ट्रिंग रूपांतरणों के साथ समाप्त होंगे जो अनुपयुक्त प्रारूपों आदि का उपयोग कर सकते हैं। यहां यही समस्या है।
- आप SQL इंजेक्शन हमलों को आमंत्रित कर रहे हैं
- आप कोड और डेटा को मिला रहे हैं, जिससे कोड को पढ़ना कठिन हो जाता है और डेटा की जांच करना कठिन हो जाता है
आप कुछ ऐसा चाहते हैं:
string sql = @"Select distinct v.* from Ven v
inner join Des d on v.venid=d.venid
and cast(d.despdate as datetime) between @start and @end";
using (MySqlCommand command = new MySqlCommand(connection, sql))
{
command.Parameters.AddWithValue("@start", startDateTime);
command.Parameters.AddWithValue("@end", endDateTime);
// Execute the command here
}
अगर Des.despdate
नहीं है पहले से ही एक उपयुक्त डेटा प्रकार है, आपको उसे बदलना चाहिए...