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

एसक्यूएल स्टेटमेंट में स्ट्रिंग वेरिएबल का उपयोग कैसे करें

आप बस यह कर सकते हैं

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 अधिक जानकारी के लिए।

मूल रूप से आपको विभिन्न कारणों से अपने मूल्यों को SQL में ही एम्बेड नहीं करना चाहिए:

  • कोड और डेटा को मिलाना अनुचित है
  • यह आपको SQL इंजेक्शन हमलों के लिए खोलता है जब तक कि आप बचने के बारे में बहुत सावधान न हों
  • आपको स्वरूपण और संख्या, दिनांक और समय आदि जैसी चीज़ों के लिए i18n विवरण के बारे में चिंता करने की ज़रूरत है
  • जब क्वेरी केवल मान बदलने के साथ ही बनी रहती है, तो ऑप्टिमाइज़र के पास करने के लिए कम काम होता है - यह पिछली अनुकूलित क्वेरी को सीधे देख सकता है क्योंकि यह 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. INFORMATION_SCHEMA बनाम sysobjects

  3. SQLAlchemy के साथ संग्रहीत कार्यविधि को कैसे कॉल करें जिसके लिए उपयोगकर्ता-परिभाषित-प्रकार तालिका पैरामीटर की आवश्यकता होती है

  4. SQL सर्वर 2008 Windows प्रामाणिक लॉगिन त्रुटि:लॉगिन एक अविश्वसनीय डोमेन से है

  5. SQL सर्वर डेटाबेस में एकाधिक तालिकाओं में कॉलम में डिफ़ॉल्ट बाधाओं को जोड़ने के लिए स्क्रिप्ट कैसे उत्पन्न करें - SQL सर्वर / TSQL ट्यूटोरियल भाग 94