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

गतिशील रूप से बटन पर सिंगल क्लिक पर एकाधिक रिकॉर्ड डालें

यदि आप अंक दर्ज करने के लिए विषयों की सटीक संख्या नहीं जानते हैं - तो हम इसे करने के लिए एक क्वेरी कैसे उत्पन्न करेंगे?

एसक्यूएल इंजेक्शन हमलों के खिलाफ सुरक्षा के लिए आपको दिखाने के लिए कभी भी कम नहीं है आपने एसक्यूएल को संग्रहित प्रक्रियाओं में रखा है:

create PROCEDURE [dbo].[pr_GetAssignedSubjectsByFacultyIdAndSemester]
@FacultyID int,
@Semester nvarchar(MAX)
AS
BEGIN
SET NOCOUNT ON;
SELECT [Faculty], [Subjects],[CreatedBy],[CreatedDate],[ModifiedBy],[ModifiedDate]
 FROM [dbo].[tblNotSure]
WHERE [FacultyID] = @FacultyID
AND [Semester] = @Semester
AND [IsDeleted] = 0
END

फिर कोड में हम संग्रहित प्रक्रिया को कॉल करते हैं, पैरामीटरयुक्त कमांड को नोटिस करते हैं, यह SQL इंजेक्शन हमलों को रोकता है। उदाहरण के लिए मान लें कि हमने सेमेस्टर डीडीएल/टेक्स्टबॉक्स में टाइप किया है (या तत्वों के मूल्य को संपादित करने के लिए फायरबग का उपयोग कर रहा है) समस्या से बचाता है:

public static aClassCollection GetAssignedSubjectsByFacultyIdAndSemester(int facultyId, string semester)
{
var newClassCollection = new aClassCollection();
    using (var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["sqlConn"].ConnectionString))
    {
        using (var command = new SqlCommand("pr_GetAssignedSubjectsByFacultyIdAndSemester", connection))
        {
            try
            {
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.AddWithValue("@facultyId", facultyId);
                command.Parameters.AddWithValue("@semester", semester);
                connection.Open();
                SqlDataReader dr = command.ExecuteReader();
                while (dr.Read())
                {
                    newClassCollection.Add(new Class(){vals = dr["vals"].ToString()});
                }
            }
            catch (SqlException sqlEx)
            {
             //at the very least log the error
            }
            finally
            {
             //This isn't needed as we're using the USING statement which is deterministic                    finalisation, but I put it here (in this answer) to explain the Using...
                connection.Close();
            }
        }
    }

    return newClassCollection;
}



  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 ऑपरेशंस स्टूडियो का उपयोग करके मैक पर SQL सर्वर डेटाबेस को कैसे पुनर्स्थापित करें

  2. पंक्तियों का एक सबसेट चुनना जो कुल मानों के प्रतिशत से अधिक हो

  3. टीएसक्यूएल 2005, एक्सएमएल डीएमएल - एक बार में दो मान अपडेट करें?

  4. मैं समय को ध्यान में रखे बिना दिनांक समय कॉलम के आधार पर समूह कैसे बना सकता हूं?

  5. समग्र प्राथमिक कुंजी के साथ किसी अन्य तालिका से INSERT या अद्यतन तालिका