विशिष्ट कार्यान्वयन के आधार पर, इस समस्या के लिए हमारे पास दो सामान्य दृष्टिकोण हैं:
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 अंकों के लिए , आदि.