Предположим, что у вас есть этот код в C # /. NET (используя PostgreSQL через ODBC):
using System.Data.Odbc;
...
OdbcCommand cmd = ...;
cmd.CommandText = "SELECT id, email, password FROM users WHERE email=?;";
cmd.Parameters.Clear();
cmd.Parameters.Add("email", OdbcType.VarChar).Value = aEmail;
Но когда aEmail == \ '(обратная косая черта и апост.), Тогда он выдает мне следующую ошибку:
Exception type: OdbcException
Exception message: ERROR [42601] ERROR: unterminated quoted string at or near "'\''';";
Error while executing the query
Как я уже читал, использование OdbcCommand.Parameters должно защищать от SQL-инъекций, но в этом случае похоже, что что-то работает не так, чего мне не хватает?Важное примечание: я никогда раньше не использовал PostgreSQL, ODBC, .NET (начался сегодня, но я надеюсь завершить его и сегодня;), но мне нужно исправить 4 SQL-запроса в одном простом веб-приложении - ранее было:
System.Format("SELECT ... email = {0}", aEmail)