Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

chèn các bản ghi nhiều đối tượng chỉ bằng một cú nhấp chuột động vào nút

Nếu bạn không biết chính xác không có chủ đề nào để nhập điểm - làm cách nào chúng tôi phải tạo một truy vấn để thực hiện điều đó?

Không bao giờ ít hơn để cho bạn thấy để bảo vệ khỏi các cuộc tấn công SQL Injection mà bạn đặt bạn SQL trong Procs được lưu trữ:

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

Sau đó, trong mã chúng tôi gọi là thủ tục được lưu trữ, hãy chú ý đến các Lệnh được tham số, điều này ngăn chặn các cuộc tấn công SQL Injection. Ví dụ:giả sử chúng tôi đã nhập vào học kỳ ddl / hộp văn bản (hoặc sử dụng FireBug để chỉnh sửa giá trị các phần tử) 1 UNION SELECT * FROM Master.Users - thực thi SQL đặc biệt này có thể trả về danh sách tài khoản người dùng SQL nhưng được truyền thông qua lệnh được tham số hóa tránh vấn đề:

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. Tạo thời gian ngẫu nhiên riêng biệt trong khoảng thời gian cố định

  2. Những hạn chế đối với SQL Server Compact là gì? (Hoặc - làm thế nào để người ta chọn một cơ sở dữ liệu để sử dụng trên nền tảng MS?)

  3. SQL Server 2016:Tạo cơ sở dữ liệu

  4. Entity framework 4 không đóng kết nối trong hồ sơ sql server 2005

  5. .NET Core trên Azure không thể kết nối với Cơ sở dữ liệu SQL Server