Я обычно проверяю, является ли id целым числом.Таким образом, вы получите исключение или логическое значение, если оно не является целым числом.Он будет работать нормально, если вы не используете значения GUID.
var isNumeric = int.TryParse("123", out int n); //Will give a bool
Int32.Parse(yourString); //This will give an exception if it is not an possible integer
Если это что-то большее, вы можете использовать выражение Regex для поиска странных значений и удаления символов, которых не должно быть, таких как пробелы,Большинство SQL-атак не работает, если нет пробелов ... Я думаю.Удалить все пробелы довольно легко, и я предполагаю, что ваш идентификатор (даже если он сложный) не будет включать пробелы.
string s = " "
string t = s.Replace(" ", ""). //It will be hard to do a sql attack if the spaces are removed.
Немного не по теме, но в C # 6.0 вы можете форматировать строку иначе;Это новая функция, называемая «интерполяция строк» (спасибо, Этьен де Мартель).
$"SELECT * FROM `foo` where FooID = '{id}'"