आप सिर्फ इस
query = "Select * From Table Where Title = " + someone;
कर सकते हैं बारे में चिंता करने की जरूरत नहीं है लेकिन वह बुरा है और SQL इंजेक्शन के लिए आप खुल जाता है
तुम बस चाहिए एक पैरामिट्रीकृत क्वेरी का उपयोग
कुछ इस तरह मिलना चाहिए आप
using (var cn = new SqlClient.SqlConnection(yourConnectionString))
using (var cmd = new SqlClient.SqlCommand())
{
cn.Open();
cmd.Connection = cn;
cmd.CommandType = CommandType.Text;
cmd.CommandText = "Select * From Table Where Title = @Title";
cmd.Parameters.Add("@Title", someone);
}
शुरू कर दिया
जॉन स्कीट के जवाब से, क्योंकि वह
अधिक जानकारी के लिए SqlCommand.Parameters के दस्तावेज़ों को देखें।
मूल रूप से आप एसक्यूएल के भीतर आपकी मूल्यों एम्बेड नहीं चाहिए विभिन्न कारणों के लिए:
- यह जब तक आप बहुत हो कोड और डेटा
- यह आप एसक्यूएल इंजेक्शन के लिए खुल जाता है हमलों मिश्रण करने असजीला है
- बचने के बारे में सावधान आप जब क्वेरी केवल मूल्योंसाथ ही रहता है नंबर, दिनांक और बार आदि
- जैसी चीजों के लिए स्वरूपण और i18n विवरण के बारे में चिंता करने की ज़रूरतबदलते हुए, ऑप्टिमाइज़र के पास कम काम होता है - यह को पिछली अनुकूलित क्वेरी सीधे देख सकता है क्योंकि यह SQL के शर्तों में एकदम सही मिलान होगा।
आपको नहीं करना चाहिए! कभी एसक्यूएल इंजेक्शन या पैरामीटरयुक्त प्रश्नों के बारे में सुना? –
हां, यह बहुत खराब अभ्यास है –
यहां आप कुछ एसक्यूएल इंजेक्शन उदाहरणों को पढ़ सकते हैं http://en.wikipedia.org/wiki/SQL_injection –