Memparameterkan Nama Jadual dalam SQL?
Soalan:
Adakah mungkin untuk menghantar jadual nama sebagai parameter dalam .NET/SQL? Matlamat akhir adalah untuk meningkatkan kebersihan dan mengelakkan kod yang tidak kemas tanpa menjejaskan keselamatan.
Jawapan:
Memparameterkan nama jadual secara langsung tidak disokong. Walau bagaimanapun, anda secara tidak langsung boleh mencapai ini menggunakan sp_ExecuteSQL:
SqlConnection conn = new SqlConnection("Your database connection string"); DataTable dt = new DataTable(); using (SqlCommand cmd = conn.CreateCommand()) { cmd.CommandType = CommandType.StoredProcedure; cmd.CommandText = "sp_ExecuteSQL"; cmd.Parameters.AddWithValue("@stmt","SELECT * FROM table"); using (SqlDataAdapter da = new SqlDataAdapter(cmd)) { da.Fill(dt); } }
Sebagai alternatif, anda boleh membina pernyataan SQL (berparameter) dalam C#, menambahkan nama jadual dan melaksanakannya sebagai arahan:
var name = ...; //Determine table name dynamically here var sql = $"SELECT * FROM {"table"}"; using (SqlCommand cmd = new SqlCommand(sql, conn)) { cmd.Parameters.Add("", ...); var result = cmd.ExecuteReader(); ... }
Ingat untuk menyenarai putihkan nama jadual untuk mengelakkan potensi kelemahan keselamatan.
Atas ialah kandungan terperinci Bolehkah Nama Jadual Diparameterkan dalam .NET/SQL untuk Kod Bersih dan Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!