Я прочитал, что это плохая идея, чтобы объединить строки SQL так:
cmd.CommandText = "Insert INTO workers Values (" + User.Identity.Name + "," + WorkerName.Text + "," + GetUniqueWorkerKey() + ");";
Так что рекомендуемый способ:
cmd.CommandText = "Insert INTO workers Values (@Username, @WorkerName, @WorkerKey)";
cmd.Parameters.AddWithValue("@Username", User.Identity.Name);
cmd.Paramters.AddWithValue("@WorkerName", TheWorkerNameYouPassedToThisMethod);
Я избегаю конкатенации строк SQL с тех пор, как я читал об этом, но я никогда не знаю, почему это не так. Разве метод AddWithValue()
в конечном итоге не выполнил бы такую же конкатенацию строк за сценой?
Возможно, этот метод удаляет специальные символы и конвертирует символы в html-объекты, чтобы предотвратить SQL-инъекцию, но я могу сделать все это, прежде чем конкатенировать мой SQL и получить тот же эффект, не так ли? Или существуют другие причины не применять конкатенацию строк для SQL?