Tôi có một trường văn bản và khai báo câu lệnh sql của tôi. Làm cách nào để thoát khỏi tất cả các ký tự trong trường đó? Tôi đang sử dụng SQLite với http://sqlite.phxsoftware.com/ trong C#Thoát SQL bằng sqlite trong C#
Trả lời
Bạn nên sử dụng một tham số như trong:
SQLiteCommand cmd = _connection.CreateCommand();
cmd.CommandType = CommandType.Text;
cmd.CommandText = "SELECT * FROM MyTable WHERE MyColumn = @parameter";
cmd.Parameters.Add(new SQLiteParameter("@parameter", textfield));
SQLiteDataReader reader = cmd.ExecuteReader();
Sử dụng SQL parametrised sẽ thoát khỏi tất cả các giá trị đầu vào và giúp bảo vệ bạn khỏi các cuộc tấn công SQL injection.
Bạn cũng có thể thay thế tất cả delimiters quote duy nhất với nghi ngờ dấu nháy đơn (không phải ").
sql = sql.Replace("'","''");
Phương pháp này không tái khen ngợi, nó có thể dẫn đến lỗi lạ. – Palani
Không nhất thiết. Nếu bạn xây dựng SQL của bạn và thực hiện Thay thế bước cuối cùng, tất cả sẽ tốt. Làm việc trong nhiều năm mà không có vấn đề gì. Tôi sử dụng các khối ứng dụng ngay bây giờ, vì vậy nó không quan trọng. :) – klkitchens
phương pháp này là tốt nếu bạn cần phải tạo một SQL an toàn để đổ vào một tập tin văn bản hoặc như vậy. –
- 1. thoát Android sqlite vỏ
- 2. Ký tự thoát trong Python và sqlite
- 3. Chuỗi thoát cho Ruby SQLite Chèn
- 4. Thoát SQL Strings trong Java
- 5. Sử dụng đúng cách thoát() bằng C++?
- 6. Thoát của Unescape JavaScript() bằng C#
- 7. python và sqlite - lối vào thoát
- 8. Chuỗi thoát thực sự của Android trong sqlite
- 9. Giá trị thoát trong truy vấn SQL (C# với trình kết nối SQL)
- 10. Tôi có thể truy cập SQLite bằng C# bằng cách nào?
- 11. thoát Quotes trong Objective-C
- 12. Có API C SQLite nào để trích dẫn/thoát tên của bảng không?
- 13. Tiêu chuẩn SQL để thoát khỏi các tên cột?
- 14. Truy vấn SQL thoát + codeigniter
- 15. Làm cách nào để thoát _ trong SQL Server?
- 16. ký tự thoát Oracle SQL (cho một '&')
- 17. Chuỗi Đúng Thoát cho xâu T-SQL
- 18. Thoát ký tự trích dẫn đơn để sử dụng trong truy vấn SQLite
- 19. Đọc thông tin bảng SQLite trong C# .NET
- 20. Thoát các ký tự đặc biệt trong SQL
- 21. Cách thoát khỏi các truy vấn SQL đơn giản trong C# cho SqlServer
- 22. số chữ số trong mã thoát hex trong C/C++
- 23. Làm thế nào để tránh thoát kép trong chuỗi C#?
- 24. Xuất từ SQLite sang SQL Server
- 25. Tạo trình kích hoạt SQL có điều kiện trong SQLite
- 26. Làm cách nào để thoát khỏi các ký tự trong SQLite qua bash shell?
- 27. unescape một url thoát trong C#
- 28. Trình tự thoát cho? trong C++
- 29. máy chủ sql: cần phải thoát [?
- 30. thư viện sqlite c trên mac os?
Tôi phải làm gì nếu tôi có nhiều params? Để tôi viết cmd.CommandText =" chèn ... @parameter ... @parameter "; cmd.Parameters.Add (...); cmd.Parameters.Add (...);? –
Có, cũng phải có phương thức AddRange có sẵn, nơi bạn có thể chuyển một mảng params phù hợp với params trong statlet sql –
Bạn có thể gọi Parameters.Add nhiều lần giống như bạn đã yêu cầu hoặc sử dụng Parameters.AddRange chấp nhận một mảng các tham số – bstoney