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

गतिशील एसक्यूएल पैरामीटर को कैसे संभालें

विशिष्ट कार्यान्वयन के आधार पर, इस समस्या के लिए हमारे पास दो सामान्य दृष्टिकोण हैं:

1) किसी भी खाली पैरामीटर को छोड़कर कोड में SQL क्वेरी के लिए गतिशील रूप से फ़िल्टर स्टेटमेंट बनाएं। यह सबसे अच्छा तरीका है यदि आप उपयोगकर्ता को एक कॉलम के लिए कई मानों का चयन करने की अनुमति देते हैं (यानी डेटा को फ़िल्टर करने के लिए 50 राज्यों में से 0 या अधिक का चयन करें)।

उदाहरण के लिए:

मान लें कि txtCondition1 और txtCondition2 टेक्स्टबॉक्स हैं:

        // Assuming conn is an open SqlConnection

        System.Text.StringBuilder sbSQL = new StringBuilder(500);

        List<SqlParameter> cParameters = new List<SqlParameter>();

        // Add a default condition of 1=1 so that all subsequent conditions can be added 
        // with AND instead of having to check to see whether or not any other conditions
        // were added before adding AND.
        sbSQL.Append("SELECT * FROM MyTestTable WHERE 1 = 1 ");

        if (!String.IsNullOrEmpty(txtCondition1.Text)) {
            sbSQL.Append(" AND Column1 = @Column1");
            cParameters.Add(new SqlParameter("@Column1", txtCondition1.Text));
        }
        if (!String.IsNullOrEmpty(txtCondition1.Text))
        {
            sbSQL.Append(" AND Column2 = @Column2");
            cParameters.Add(new SqlParameter("@Column2", txtCondition2.Text));
        }

        SqlCommand oCommand = new SqlCommand(sbSQL.ToString, conn);
        if (cParameters.Count != 0) 
        {
            oCommand.Parameters.AddRange(cParameters.ToArray());
        } 

        // Do something with oCommand

2) यदि मान अधिक सीमित हैं, तो हम आम तौर पर उन्हें एक संग्रहीत प्रक्रिया में पास करते हैं, जो यह निर्धारित करने के लिए ज़िम्मेदार है कि "खालीपन" के लिए पैरामीटर का परीक्षण करके मूल्य का मूल्यांकन किया जाना है या नहीं, या तो शून्य, खाली स्ट्रिंग, 0 अंकों के लिए , आदि.



  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 सर्वर में FILEPROPERTY () का उपयोग कैसे करें

  2. मैं SQL सर्वर 2005 में कॉलम के रूप में यादृच्छिक संख्या कैसे वापस कर सकता हूं?

  3. INNER JOIN का उपयोग करते समय अनपेक्षित डेटाबेस आउटपुट

  4. मैं अपने SQL सर्वर पर OFFSET/FETCH क्वेरी क्यों नहीं पूछ सकता?

  5. क्या मैं SQL सर्वर कॉम्पैक्ट संस्करण के साथ ASP.NET सदस्यता का उपयोग कर सकता हूं?