Cách lưu văn bản có dấu ngoặc kép từ hộp văn bản để truy cập cơ sở dữ liệu

lập trình


Chào mọi người,
Tôi đang phát triển một ứng dụng phù thủy cho phép người dùng điền văn bản vào biểu mẫu.
Vì vậy tôi sử dụng hộp văn bản.
Tôi có thể lưu dữ liệu có trong hộp văn bản vào cơ sở dữ liệu Access nhưng có vấn đề khi văn bản chứa dấu ngoặc đơn (‘) hoặc dấu ngoặc kép (“).

Làm thế nào tôi có thể giải quyết vấn đề?

Cảm ơn

Độ chính xác: nó là một ứng dụng máy tính để bàn WinForm trong C#

Những gì tôi đã thử:

sử dụng Texbox1.Text không hoạt động vì dấu ngoặc kép xuất hiện trong lệnh SQL và được hiểu là một phần của lệnh chứ không phải là dữ liệu

đây là mã

C#
OleDbConnection connection = new OleDbConnection(@"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Historique_Rdv.accdb");
connection.Open();

string command = "INSERT INTO RendezVous " +
    "(IDAnimal, NumeroRdv, DateRdv, Prestation, Temps, ComplementInfo, Paye, IDProprietaire)  " +
    "VALUES(" + int.Parse(TB_idAnimalNewRdv.Text) + ", " + int.Parse(TB_numeroRdvNouveauRdv.Text) + ", '" + TB_dateNouveauRdv.Text + "', '" + TB_actionNouveauRdv.Text + "', '" + TB_tempsNouveauRdv.Text + "', '" + TB_complementInfoNouveauRdv.Text + "', " + int.Parse(TB_payeNouveauRdv.Text) + ", " + int.Parse(TB_idProprietaireNewRdv.Text) + " )";

OleDbCommand cmdd = new OleDbCommand(command, connection);
cmdd.ExecuteNonQuery();

connection.Close();

Giải pháp 2

Trích dẫn:

Tôi có thể lưu dữ liệu có trong hộp văn bản vào cơ sở dữ liệu Access nhưng có vấn đề khi văn bản chứa dấu ngoặc đơn (‘) hoặc dấu ngoặc kép (“).

Điều này có thể liên quan đến cách bạn đang cố lưu văn bản.
Bạn nên đọc về lỗ hổng SQL SQL.

Không bao giờ xây dựng truy vấn SQL bằng cách nối các chuỗi. Sớm hay muộn, bạn sẽ làm điều đó với thông tin đầu vào của người dùng và điều này mở ra cơ hội cho một lỗ hổng có tên “SQL SQL”, nó gây nguy hiểm cho cơ sở dữ liệu của bạn và dễ xảy ra lỗi.
Một trích dẫn duy nhất trong một cái tên và chương trình của bạn sẽ bị lỗi. Nếu người dùng nhập một tên như “Brian O’Conner” có thể làm ứng dụng của bạn gặp sự cố thì đó là lỗ hổng chèn SQL và sự cố này chỉ là vấn đề nhỏ nhất, do người dùng nhập độc hại và nó được thăng cấp thành lệnh SQL với tất cả thông tin xác thực.
Tiêm SQL – Wikipedia[^]
Tiêm SQL[^]
Ví dụ về các cuộc tấn công tiêm nhiễm SQL[^]
PHP: Chèn SQL – Hướng dẫn sử dụng[^]
Làm cách nào tôi có thể giải thích việc chèn SQL mà không cần dùng đến thuật ngữ kỹ thuật? – Trao đổi ngăn xếp bảo mật thông tin[^]

Giải pháp 3

Lý do mã hiện tại của bạn không hoạt động là do bạn đang sử dụng nối chuỗi để xây dựng truy vấn SQL INSERT. KHÔNG BAO GIỜ LÀM ĐIỀU NÀY!!!

Thay vào đó hãy sử dụng các truy vấn được tham số hóa. Bằng cách này, dấu ngoặc kép trong văn bản của bạn sẽ được thoát đúng cách thay vì được hiểu là một phần của câu lệnh SQL.

Sau khi bạn đọc xong các liên kết trong Giải pháp 2, hãy tìm “Truy vấn được tham số hóa C# sql” trên Google để tìm thông tin về cách tạo đối tượng tham số cho câu hỏi của bạn và đặt phần giữ chỗ tham số vào câu lệnh SQL của bạn.

Ồ, và bạn sẽ làm cho việc gỡ lỗi mã SQL của mình dễ dàng hơn nhiều khi bạn làm điều này.

コメント

タイトルとURLをコピーしました