Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Melaksanakan Pertanyaan Berparameter dengan Selamat dalam MySQL menggunakan C#?

Bagaimana untuk Melaksanakan Pertanyaan Berparameter dengan Selamat dalam MySQL menggunakan C#?

DDD
DDDasal
2024-12-14 02:26:11478semak imbas

How to Securely Execute Parameterized Queries in MySQL using C#?

Pertanyaan Berparameter dalam MySQL dengan C#

Pertanyaan berparameter ialah bahagian penting dalam pengaturcaraan pangkalan data. Mereka membenarkan anda memisahkan pernyataan SQL daripada data yang digunakan dalam pertanyaan. Ini membantu menghalang serangan suntikan SQL dan boleh menjadikan kod anda lebih mudah dibaca dan diselenggara.

Untuk menggunakan pertanyaan berparameter dalam C#, anda perlu mencipta objek MySqlCommand dan menambah parameter padanya. Anda boleh melakukan ini menggunakan sifat Parameter objek MySqlCommand.

Kod berikut menunjukkan contoh cara menggunakan pertanyaan berparameter untuk memilih data daripada jadual USERS:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = ? AND VAL_2 = ?;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.Add(new MySqlParameter("", val1));
    m.Parameters.Add(new MySqlParameter("", val2));
    MySqlDataReader r = m.ExecuteReader();
    if (r.HasRows)
        level = Convert.ToInt32(r.GetValue(0).ToString());
    r.Close();
    return true;
}

Ini kod akan disusun dan dijalankan tanpa ralat. Walau bagaimanapun, ia tidak akan mengembalikan hasil yang diharapkan. Masalahnya ialah nama parameter dalam pernyataan SQL tidak sepadan dengan nama parameter dalam objek MySqlCommand.

Untuk menyelesaikan masalah ini, anda perlu menukar nama parameter dalam pernyataan SQL agar sepadan dengan nama parameter dalam objek MySqlCommand. Anda boleh melakukannya dengan menggunakan aksara @ diikuti dengan nama parameter.

Kod berikut menunjukkan cara untuk menyelesaikan masalah:

private String readCommand = "SELECT LEVEL FROM USERS WHERE VAL_1 = @param_val_1 AND VAL_2 = @param_val_2;";

public bool read(string id)
{
    level = -1;
    MySqlCommand m = new MySqlCommand(readCommand);
    m.Parameters.AddWithValue("@param_val_1", val1);
    m.Parameters.AddWithValue("@param_val_2", val2);
    level = Convert.ToInt32(m.ExecuteScalar());
    return true;
}

Kod ini akan disusun dan dijalankan tanpa ralat. Ia juga akan mengembalikan hasil yang diharapkan.

Atas ialah kandungan terperinci Bagaimana untuk Melaksanakan Pertanyaan Berparameter dengan Selamat dalam MySQL menggunakan C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn