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

Cách xử lý các tham số sql động

Tùy thuộc vào việc triển khai cụ thể, chúng tôi có hai cách tiếp cận chung cho vấn đề này:

1) Tự động xây dựng câu lệnh bộ lọc cho truy vấn SQL trong mã bỏ qua bất kỳ tham số nào trống. Đây là cách tốt nhất nếu bạn cho phép người dùng chọn nhiều giá trị cho một cột (tức là chọn 0 hoặc nhiều hơn trong số 50 trạng thái để lọc dữ liệu).

Ví dụ:

Giả sử txtCondition1 và txtCondition2 là các hộp văn bản:

        // Assuming conn is an open SqlConnection

        System.Text.StringBuilder sbSQL = new StringBuilder(500);

        List<SqlParameter> cParameters = new List<SqlParameter>();

        // Add a default condition of 1=1 so that all subsequent conditions can be added 
        // with AND instead of having to check to see whether or not any other conditions
        // were added before adding AND.
        sbSQL.Append("SELECT * FROM MyTestTable WHERE 1 = 1 ");

        if (!String.IsNullOrEmpty(txtCondition1.Text)) {
            sbSQL.Append(" AND Column1 = @Column1");
            cParameters.Add(new SqlParameter("@Column1", txtCondition1.Text));
        }
        if (!String.IsNullOrEmpty(txtCondition1.Text))
        {
            sbSQL.Append(" AND Column2 = @Column2");
            cParameters.Add(new SqlParameter("@Column2", txtCondition2.Text));
        }

        SqlCommand oCommand = new SqlCommand(sbSQL.ToString, conn);
        if (cParameters.Count != 0) 
        {
            oCommand.Parameters.AddRange(cParameters.ToArray());
        } 

        // Do something with oCommand

2) Nếu các giá trị bị ràng buộc nhiều hơn, chúng tôi thường chuyển chúng đến một thủ tục được lưu trữ, thủ tục này chịu trách nhiệm xác định xem giá trị có được đánh giá hay không bằng cách kiểm tra tham số cho "trống", rỗng, chuỗi trống, 0 cho số , v.v.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kết nối với SQL Server thông qua PDO bằng SQL Server Driver

  2. Cách DB_NAME () hoạt động trong SQL Server

  3. Hình thành chuỗi kết nối cho Kết nối Android với SQLServer

  4. Làm thế nào để tìm một văn bản bên trong các thủ tục / trình kích hoạt SQL Server?

  5. Hướng dẫn về Cơ sở dữ liệu Thư