OriginalGriff
Вполне вероятно, что проблема заключается в вашем коде вставки базы данных: используете ли вы вообще конкатенацию строк или всегда используете параметризованные запросы?
Если вы объединяетесь, то у вас есть две проблемы:
1) это оставляет вас широко открытыми для случайной или преднамеренной атаки SQL-инъекции, которая может уничтожить всю вашу базу данных. Вместо этого всегда используйте параметризованные запросы.
Когда вы объединяете строки, вы вызываете проблемы, потому что SQL получает такие команды, как:
SELECT * FROM MyTable WHERE StreetAddress = 'Baker's Wood'
Цитата, добавленная пользователем, завершает строку в том, что касается SQL, и вы получаете проблемы. Но могло быть и хуже. Если я приду и наберу вместо этого: "x';DROP TABLE MyTable;--", то SQL получит совсем другую команду:
SELECT * FROM MyTable WHERE StreetAddress = 'x';DROP TABLE MyTable;--'
Которые SQL видит как три отдельные команды:
SELECT * FROM MyTable WHERE StreetAddress = 'x';
Совершенно правильный выбор
DROP TABLE MyTable;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.
Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?
и
2) он не вставляет массивы байтов в базы данных, и вы получаете исключение "параметр недопустим", когда пытаетесь использовать данные в качестве изображения.
Видеть здесь:
Почему я получаю "параметр не является допустимым." исключение, когда я читаю изображение из своей базы данных?[
^] - код написан на C#, но это довольно очевидно.