Tôi nhận thấy rằng khi tôi sử dụng PreparedStatement
, dường như không có các ký tự đại diện nào đó như '%' hoặc '_'. Tôi biết chúng có thể được thoát trong MySql bằng cách sử dụng dấu gạch chéo ngược. Điều này làm tôi băn khoăn, những nhân vật nào sẽ thoát ra khỏi một số? PreparedStatement
?Nhân vật nào sẽ PreparedStatement thoát?
Trả lời
PreparedStatement
không thoát khỏi bất kỳ thứ gì - nó dựa vào hỗ trợ cơ sở dữ liệu cho các câu lệnh được biên dịch trước.
Tức là, PreparedStatement
không bao giờ thay thế ?
s cho giá trị tham số để tạo thành chuỗi truy vấn bằng chữ. Thay vào đó, nó sẽ gửi một chuỗi truy vấn với các phần giữ chỗ cho cơ sở dữ liệu và sử dụng hỗ trợ cơ sở dữ liệu để ràng buộc các tham số truy vấn (tuy nhiên, nó có thể phụ thuộc vào việc thực thi trình điều khiển JDBC).
Trong thử nghiệm của mình, nó sẽ thoát khỏi các dấu ngoặc đơn, \r
, \t
, \n
v.v. Nó hoạt động khá tốt đẹp:
String sql = "INSERT INTO test(title) VALUES(?)";
PreparedStatement stmt = con.prepareStatement(sql);
String title = "I'm a \"student\" in a \t (university) \r\n";
stmt.setString(1, title);
stmt.executeUpdate();
Điều đó có thể dành riêng cho trình điều khiển/db của bạn. Như axtavt đã đề cập, hầu hết không tự động thoát khỏi đầu vào. – Leigh
- 1. Vấn đề thoát nhân vật XSL
- 2. thoát nhiều “%” nhân vật trong Android
- 3. Làm thế nào để thoát khỏi "\" nhân vật trong Java
- 4. In chuỗi mà không cần thoát nhân vật
- 5. iPhone - Localizable.strings với dấu ngoặc kép thoát khỏi nhân vật
- 6. Làm thế nào để thoát khỏi các nhân vật trong đánh dấu Pango?
- 7. "Quá nhiều nhân vật trong nhân vật lỗi đen"
- 8. struts2 i18n java tài sản, làm thế nào để thoát khỏi nhân vật?
- 9. Làm thế nào bạn có thể thoát khỏi nhân vật @ trong javadoc?
- 10. Làm thế nào để thoát khỏi các nhân vật đặc biệt trong JasperReports?
- 11. làm thế nào để thoát khỏi nhân vật khi sử dụng phía máy chủ delimiters
- 12. Backspace nhân vật weirdness
- 13. chia bởi nhiều nhân vật
- 14. SQL Server NHƯ chứa khung nhân vật
- 15. Xử lý văn bản regex thay thế thoát có chứa nhân vật đô la
- 16. RoR lớp nhân vật regex
- 17. Nhân vật tên người dùng thoát trong URL xác thực cơ bản
- 18. nhân vật Không thoát trên tạp chí Cell Dừng Row Processing PHPExcel
- 19. Thoát khỏi '\' nhân vật trong chuỗi thay thế trong một biểu thức sed
- 20. Bắt ASP.NET MVC để thoát đúng # (băm/pound) nhân vật trong các tuyến đường
- 21. C# thay thế \" nhân vật
- 22. Nhân vật tab trong Java
- 23. Tôi có thể tìm tài liệu về nhân vật thoát đâu như "\"
- 24. kích thước của mảng và kích thước của con trỏ nhân vật nhân vật
- 25. Tesseract không nhận ra nhân vật đơn
- 26. Strange Lỗi Phân tích XML: dòng 1, nhân vật 2038, bất hợp pháp xml nhân vật
- 27. Nhân vật 3D/Người tạo mô hình
- 28. phụ thêm nhân vật mảng chuỗi C++
- 29. System.Net.Uri với các nhân vật urlencoded
- 30. hex chuỗi để nhân vật trong python
Thú vị, hỗ trợ đó trông như thế nào đối với MySql? – stevebot
MySql hỗ trợ các câu lệnh chuẩn bị theo cách tương tự ở phía máy chủ. Làm thế nào nó trông trong mã của bạn phụ thuộc vào trình điều khiển bạn đang sử dụng. –
Tôi tin rằng nhiều trình điều khiển thực sự chèn văn bản đối số thoát vào văn bản SQL. –