Bagaimana cara menyimpan teks dengan kutipan dari kotak teks untuk mengakses database

pemrograman


Halo semuanya,
Saya sedang mengembangkan aplikasi penyihir yang memungkinkan pengguna mengisi formulir dengan teks.
Oleh karena itu saya menggunakan kotak teks.
Saya bisa menyimpan data yang terdapat dalam kotak teks ke database Access tetapi ada masalah ketika teks berisi tanda kutip tunggal (‘) atau ganda (“).

Bagaimana cara mengatasi masalah tersebut?

Terima kasih

Presisi : ini adalah aplikasi desktop WinForm di C#

Apa yang saya coba:

menggunakan Texbox1.Teks tidak berfungsi karena tanda kutip muncul di perintah SQL dan ditafsirkan sebagai bagian dari perintah dan bukan sebagai data

di sini kodenya

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();

Solusi 2

Mengutip:

Saya bisa menyimpan data yang terdapat dalam kotak teks ke database Access tetapi ada masalah ketika teks berisi tanda kutip tunggal (‘) atau ganda (“).

Ini mungkin terkait dengan cara Anda mencoba menyimpan teks.
Anda harus membaca tentang kerentanan SQL Injection.

Jangan pernah membuat kueri SQL dengan menggabungkan string. Cepat atau lambat, Anda akan melakukannya dengan input pengguna, dan ini membuka pintu ke kerentanan bernama “injeksi SQL”, berbahaya bagi database Anda dan rawan kesalahan.
Satu kutipan dalam sebuah nama dan program Anda mogok. Jika pengguna memasukkan nama seperti “Brian O’Conner” dapat membuat aplikasi Anda mogok, itu adalah kerentanan injeksi SQL, dan kerusakan tersebut adalah masalah yang paling kecil, masukan pengguna yang berbahaya dan dipromosikan ke perintah SQL dengan semua kredensial.
Injeksi SQL – Wikipedia[^]
Injeksi SQL[^]
Serangan Injeksi SQL dengan Contoh[^]
PHP: Injeksi SQL – Manual[^]
Bagaimana saya bisa menjelaskan injeksi SQL tanpa jargon teknis? – Pertukaran Tumpukan Keamanan Informasi[^]

Solusi 3

Alasan kode Anda saat ini tidak berfungsi adalah karena Anda menggunakan penggabungan string untuk membuat kueri SQL INSERT. JANGAN PERNAH MELAKUKAN INI!!!

Gunakan kueri berparameter sebagai gantinya. Dengan cara ini, tanda kutip ganda dalam teks Anda lolos dengan benar alih-alih ditafsirkan sebagai bagian dari pernyataan SQL Anda.

Setelah Anda selesai membaca tautan di Solusi 2, Google untuk “kueri parameterisasi C# sql” untuk menemukan informasi tentang cara membuat objek parameter untuk pertanyaan Anda dan meletakkan placeholder parameter dalam pernyataan SQL Anda.

Oh, dan Anda akan lebih mudah melakukan debug kode SQL saat Anda melakukan ini juga.

コメント

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