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

Đọc dữ liệu từ cơ sở dữ liệu sql bằng bộ chọn ngày giờ

Chúng tôi thấy những câu hỏi này ở đây mỗi ngày. Chúng bắt nguồn từ cùng một vấn đề.

KHÔNG BAO GIỜ SỬ DỤNG KẾT NỐI STRING ĐỂ XÂY DỰNG CÂU HỎI SQL.

Đó là một vấn đề lớn. Tất nhiên là bạn đã gặp hiệu ứng đầu tiên rồi. Làm thế nào để chuyển đổi các chuỗi theo cách có thể chấp nhận được sang kiểu dữ liệu hiệu quả? Bạn cần giải quyết vấn đề phân tích cú pháp với dấu ngoặc kép được nhúng, biểu diễn chính xác ngày tháng và số thập phân cho hệ thống cơ sở dữ liệu bên dưới. Nhưng tác dụng phụ thứ hai và tinh tế hơn của nối chuỗi là SQL Injection (Đây chỉ là một liên kết hướng dẫn vì SQL Injection là một chủ đề rất lớn)

Để giải quyết loại vấn đề này, cách duy nhất được chấp nhận là sử dụng PARAMETERS.
Điều này có nghĩa là công cụ cơ sở dữ liệu giải quyết một cách hiệu quả câu hỏi, bạn cần một chuỗi có trình giữ chỗ tham số (@something) và một tập hợp các Tham số với kiểu dữ liệu chính xác cho giá trị của tham số.

Vì vậy, mã của bạn sẽ thay đổi theo cách này

Dim strSQL As String = "SELECT EMP_ID,EMP_NAME,AT_STATUS,AT_REMARK " + 
                       "FROM ATTENDANCE WHERE AT_DATE = @editdate " + 
                       "ORDER BY EMP_NAME ASC"
Using con = new SqlConnection("constring_here")
    con.Open()
    Using cmd = new SqlCommand(strSQL, con)
        cmd.Parameters.AddWithValue("@editdate", DTPEDITAT.Value)
        ' do whatever you want with the command '
        ' like ExecuteReader or use a DataAdapter to fill datasets'
    End Using
End Using


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách ghi số vào hàm word trong máy chủ sql

  2. Kết nối đệ quy của các phần tử mẹ

  3. Các trường hợp sử dụng cho câu lệnh MERGE của máy chủ SQL:Đồng bộ hóa bảng lịch sử và trực tuyến

  4. Linq to SQL ForeignKeyReferenceAlreadyHasValueException

  5. SQL Server tương đương với PostgreSQL khác biệt trên ()