Вот несколько простых кодов, которые ищут значение в TargetColumn, где SourceColumn = SourceValue.
Вот эти коды:
string cmdText = "select * from " + TableName + " where " + SourceColumn + " = '" + SourceValue + "'";
SqlCommand dbCommand = new SqlCommand(cmdText, dbConnection);
SqlParameter sqlParam = new SqlParameter("@" + SourceColumn, SourceValue);
dbCommand.Parameters.Add(sqlParam);
SqlDataReader dbReader = dbCommand.ExecuteReader();
dbReader.Read();
string _targetValue = dbReader[TargetColumn].ToString();
dbReader.Close();
dbCommand.Dispose();
return _targetValue;
И мои вопросы:
- Я передал SourceColumn и SourceValue в SqlCommand с помощью SqlParameter, это сделает это доказательством SQL-инъекций?
- Нужно ли использовать TargetColumn вместе с SqlParameter для безопасности SQL?(но это для SqlDataReader)
- Если я использую SqlParameter для SqlCommand, мне все равно нужно составить текст команды в строку и передать его в SqlCommand, прежде чем использовать SqlParameter?
- ПочемуМне нужно добавить «@» для SourceColumn?(Я просто следовал учебнику и добавил его) И почему SourceValue не нужен знак "@"?
Приведенные выше коды хорошо работают для возврата ожидаемого значения, но я не уверен насчетвопросы выше.
Большое спасибо!