मैं एक नया एएसपी.नेट डेवलपर हूं और मैं एक वेब-आधारित एप्लिकेशन विकसित कर रहा हूं जिसमें मेनू बार है जिसमें कई विकल्प हैं। इनमें से कुछ विकल्प केवल व्यवस्थापक को प्रदर्शित किए जाएंगे। सिस्टम के पीछे एक तर्क है कि यह जांचने के लिए कि उपयोगकर्ता एक व्यवस्थापक है या नहीं। यदि हां, तो विकल्प प्रदर्शित होंगे। मैंने विधि लिखी लेकिन मेरे पास एक एसक्यूएल इंजेक्शनियोम है और मैं इसे हटाना चाहता हूं।इस क्वेरी से एसक्यूएल इंजेक्शन को कैसे हटाएं और इसे अच्छी तरह से काम करें?
आपकी जानकारी के लिए, मैं निम्नलिखित डेटाबेस डिजाइन है:
- उपयोगकर्ता तालिका:
NetID, Name, Title
- व्यवस्थापक तालिका: :
ID, NetID
यहाँ सी # विधि है
private bool isAdmin(string username)
{
string connString = "Data Source=appSever\\sqlexpress;Initial Catalog=TestDB;Integrated Security=True";
string cmdText = "SELECT ID, NetID FROM dbo.Admins WHERE NetID = '" + NetID + "')";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// Open DB connection.
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
SqlDataReader reader = cmd.ExecuteReader();
if (reader != null)
if (reader.Read())
if (reader["ID"].Equals(1))
return true;
return false;
}
}
}
मैं बदलते तीसरी लाइन के लिए कार्य करके इसे बदलने के लिए करने की कोशिश की:
string cmdText = "SELECT ID, NetID FROM dbo.Admins WHERE NetID = @NetID)";
लेकिन मैं निम्नलिखित त्रुटि हो गया और मैं नहीं जानता कि क्यों:
Must declare the scalar variable "@NetID".
आप कृपया मदद कर सके मुझे यह हल करने में?
* * अद्यतन:
After updating the code to the following:
private bool isAdmin(string username)
{
string NetID = username;
string connString = "Data Source=appServer\\sqlexpress;Initial Catalog=TestDB;Integrated Security=True";
string cmdText = "SELECT ID, NetID FROM dbo.Admins WHERE NetID = @NetID";
using (SqlConnection conn = new SqlConnection(connString))
{
conn.Open();
// Open DB connection.
using (SqlCommand cmd = new SqlCommand(cmdText, conn))
{
cmd.Parameters.AddWithValue("@NetID", NetID);
SqlDataReader reader = cmd.ExecuteReader();
if (reader != null)
if (reader.Read())
if (reader["NetID"] == username)
return true;
return false;
}
}
}
मैं निम्नलिखित त्रुटि मिली:
गलत वाक्य रचना के पास ')'।
इस समस्या को कैसे ठीक करें?
तुम भी एसक्यूएल संग्रहित प्रक्रियाओं सोच सकते हैं। –
अपनी समस्या को ठीक करें, एसक्यूएल इंजेक्शन को हटाने के लिए मेरा संपादन देखें :); – whosrdaddy
मुझे अभी भी एक ही समस्या का सामना करना पड़ रहा है और निम्न त्रुटि के साथ यह त्रुटि प्राप्त हो रही है: 'SqlDataReader reader = cmd.ExecuteReader();' –