Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्लासिक एएसपी पेज पर एसक्यूएल क्वेरी में सशर्त बयान

वीबीस्क्रिप्ट में आप तारों को जोड़ने के लिए एम्परसेंड (&) प्रतीक का उपयोग कर सकते हैं। इसे आजमाएं:

strSqlData="select * from MyTable where gender='male'" 

if AcademicYear <> "" then 
strSqlData= strSqlData & " and AcademicYear=" & AcademicYear
end if

if Batch <> "" then
strSqlData= strSqlData & " and Batch=" & Batch    
end if  

if School <> "" then 
strSqlData= strSqlData & " and School=" & School
end if  

आपकी sql क्वेरी में जोड़ने के लिए आपके पास तीन अलग "और" खंड हैं। सशर्त बयान एक दूसरे से स्वतंत्र हैं इसलिए आपको elseif . का उपयोग नहीं करना चाहिए जो एक सशर्त बयान के भीतर विभिन्न विकल्पों के लिए है। यह जांचना आसान है कि स्ट्रिंग खाली नहीं है या नहीं if stringname <> "" len . का उपयोग करने के बजाय , (और मुझे संदेह है कि आपके सशर्त बयान काम करेंगे क्योंकि आप एक छोटे अक्षर "ओ" का उपयोग कर रहे हैं जहां आपको शून्य का उपयोग करना चाहिए)

जब आप इस तरह के sql प्रश्नों को असेंबल कर रहे हों तो गलतियाँ करना बहुत आसान है। परीक्षण में यह अक्सर Response.Write strSqlData . जैसी पंक्ति जोड़ने लायक होता है इससे पहले कि आप यह जाँचने के लिए इसे निष्पादित करने का प्रयास करें कि क्वेरी वही है जो आप चाहते थे

जैसा कि अन्य टिप्पणियों ने सुझाव दिया है, आपका कोड SQL इंजेक्शन हमले के लिए असुरक्षित है। यूआरएल जिनमें ".asp?" है लगभग जल्दी या बाद में ASPROX प्रकार के हमले की चपेट में आने की गारंटी दी जा सकती है। पैरामीटरयुक्त प्रश्न इससे बचाव का सबसे अच्छा साधन हैं, लेकिन एक त्वरित तरीका यदि आपके क्वेरीस्ट्रिंग मान सभी संख्यात्मक हैं तो cint() का उपयोग करना है। - जैसे

strSqlData= strSqlData & " and AcademicYear=" & cint(AcademicYear)

यह एक प्रकार की बेमेल त्रुटि को फेंक देगा यदि क्वेरीस्ट्रिंग में संख्याओं के अलावा कुछ भी है, और स्क्रिप्ट आपके sql क्वेरी को निष्पादित करने का प्रयास करने से पहले खत्म हो जाएगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में एक अस्थायी तालिका बनाएँ

  2. SQL सर्वर का उपयोग करके वर्तमान तिथि से 30 दिन कैसे घटाएं?

  3. विशिष्ट मान के बराबर विशिष्ट कॉलम के योग द्वारा समूह पंक्ति

  4. मैं एक्सप्रेस 4 वेब एप्लिकेशन में कई मार्गों पर एक एकल एमएसएसक्यूएल कनेक्शन पूल का उपयोग कैसे कर सकता हूं?

  5. गणना की गणना द्वारा SQL समूह