अपने एसक्यूएल प्रश्नों को बनाने के लिए स्ट्रिंग कॉन्सटेनेशन का उपयोग न करें, कभी नहीं!
आप एसक्यूएल इंजेक्शन के लिए खुले हैं, इसके लिए कोई बहाना नहीं है। इसके बजाय sql पैरामीटर का उपयोग करें:
Dim dateFrom as Date
Dim dateTo as Date
Dim validFromDate = Date.TryParse(Txtfromyear_reprt.Text.Trim(), dateFrom)
Dim validToDate = Date.TryParse(Txttoyear_reprt.Text.Trim(), dateTo)
अब इस पद्धति से एक सार्थक संदेश के साथ बाहर निकलें यदि उपयोगकर्ता ने मान्य तिथियां प्रदान नहीं की हैं। आप validFromDate
. की जांच कर सकते हैं और validToDate
जो बुलियन हैं। शेष कोड निष्पादित किया जाता है If validFromDate AndAlso validToDate
:
Dim str As String = "select * from MYTABLE where Year >= @fromyear and Year <= @toyear"
da = New SqlDataAdapter(str, conn)
da.SelectCommand.Parameters.Add("@fromyear", SqlDbType.DateTime).Value = dateFrom
da.SelectCommand.Parameters.Add("@toyear", SqlDbType.DateTime).Value = dateTo
' now you can use da.Fill(ds, "MYTABLE") safely
मैंने अभी देखा कि आप varchar
. का उपयोग करते हैं datetimes
स्टोर करने के लिए . क्यों? इसे डेटाबेस में ठीक करें।