Parameter dalam SqlCommand: Alternatif untuk Parameterisasi Nama Lajur
Dalam C#, prosedur tersimpan bukanlah penyelesaian yang diingini untuk parameterisasi nama lajur dinamik. Timbul persoalan: bolehkah kita mencapainya tanpa menggunakan prosedur tersimpan?
Jawapan ringkasnya ialah tidak. SqlCommand tidak menyokong parameterisasi untuk nama lajur. Walau bagaimanapun, kami boleh membina pertanyaan secara dinamik pada masa jalan.
Untuk mengelakkan serangan suntikan, adalah penting untuk mengesahkan bahawa nama lajur input ("slot" dalam kes ini) diluluskan dan dijangka. Dengan mengambil kira perkara ini, kami boleh membina pertanyaan seperti berikut:
// TODO: verify that "slot" is an approved/expected value SqlCommand command = new SqlCommand("SELECT [" + slot + "] FROM Users WHERE name=@name; ") prikaz.Parameters.AddWithValue("name", name);
Kaedah ini membolehkan kami meparameterkan nilai input seperti "@name" sambil membina pertanyaan secara dinamik berdasarkan nama lajur yang ditentukan.
Atas ialah kandungan terperinci Bolehkah C# SqlCommand Parameter Nama Lajur Tanpa Prosedur Tersimpan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!