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

Làm thế nào để nắm bắt / mã hóa ký tự đặc biệt cho SQL Server trong ứng dụng java?

Tôi đoán bạn xây dựng SQL theo một số cách như

String sql = "Select Column from tab where column='" + StringParm + "'"; 

Hoặc một cái gì đó giống như nó? Nếu bạn làm điều đó, bạn đang mở cho tất cả các loại khai thác và bạn cũng sẽ thấy hành vi như bạn mô tả, trong đó chuỗi kết quả không còn là SQL hợp lệ. Trước tiên, bạn phải thoát tham số do người dùng cung cấp.

Giải pháp tốt nhất là sử dụng PreparedStatements, vì vậy bạn sẽ làm như vậy

Statement stmt = conn.prepareStatement("Select Column from tab where column=?");
stmt.setString(1,StringParam);

Tuy nhiên, tôi không thể thấy bất kỳ cách nhanh chóng nào để giải quyết vấn đề của bạn mà không cần thay đổi bất kỳ mã Java nào, có thể thanh thoát / làm sạch đầu vào trước khi nó truy cập vào mã của bạn (ví dụ:javascript nếu bạn là ứng dụng web)



  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 Genero với SQL Server

  2. SQL:Sử dụng ISNULL với trục động

  3. Làm thế nào chúng ta có thể kiểm tra bảng đó có chỉ mục hay không?

  4. Chèn hàng loạt trong SQL Server CE

  5. Số lượng SQL để bao gồm các giá trị 0