Рейтинг:
5
OriginalGriff
Не делай этого так! Никогда не объединяйте строки для построения SQL-команды. Это оставляет вас широко открытыми для случайной или преднамеренной атаки 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;
Вполне допустимая команда "удалить таблицу"
--'
А все остальное-это комментарии.
Так оно и происходит: выбирает любые совпадающие строки, удаляет таблицу из базы данных и игнорирует все остальное.
Поэтому всегда используйте параметризованные запросы! Или будьте готовы часто восстанавливать свою БД из резервной копии. Вы ведь регулярно делаете резервные копии, не так ли?
Вы знаете, что такое параметризованный запрос, поэтому используйте их... а затем добавьте закрывающую скобку к вашему SQL-оператору...
Member 13421231
Я постараюсь использовать параметризованный запрос
вы можете помочь с этим?
OriginalGriff
Вы знаете, как их использовать - вы уже используете один из них в этом коде!
Member 13421231
я копирую это из видео на youtube, я учусь и новичок в sql & c#
OriginalGriff
"Я копирую это" не означает "Я учусь" - это означает "я следую за идиотами, которые вообще не объясняют, что они делают", вероятно, потому, что они тоже не знают.
Итак, какая часть вашего запроса параметризована? Соберите для меня небольшой образец, и я объясню, что происходит.
Member 13421231
я знаю, как вставить изображение в БД , но чего я не знаю, так это как вставить изображение в базу данных, поэтому я искал на youtube и узнал, что это объясняет
настоящий кодекс "
**
Sqlconnection connection = new SqlConnection ("источник данных=NAWAF;начальный каталог=CAR;Интегрированная безопасность=True");
строка imgloc="";
Команда sqlcommand cmd в;
**
**
byte[] images = null;
FileStream Streem = новый FileStream(imgloc, FileMode.Открытия, Флагами Fileaccess.Читать);
BinaryReader brs = новый BinaryReader(Streem);
images = brs. ReadBytes ((int)Streem.Длина);
**
"
эти две части я копирую с youtube
OriginalGriff
И что он делает? Почему он это делает? Или вы просто копируете код из случайных мест и запускаете его, не глядя на то, что он вообще делает? Потому что это очень опасно! Если вы не понимаете код, не пытайтесь его запустить - или вы не слышали о вымогателях, вирусах, троянах ... ?
Member 13421231
ты все усложняешь для меня
спасибо за ваше время и помощь
OriginalGriff
Нет, я пытаюсь облегчить тебе жизнь в будущем.
В данный момент Вы пытаетесь выбрать легкий путь: получить код, скрепить его болтами, надеяться, что он сработает. Но когда этого не происходит, как сегодня ... ты понятия не имеешь, что делать.
То, что я пытаюсь заставить вас сделать, это другое: приложите немного усилий сейчас, чтобы узнать, как и почему вы делаете вещи, чтобы на следующей неделе вы могли сделать это для себя. Если вы не узнаете "почему", а также" что", этого никогда не произойдет.
Парень с YouTube объяснил, почему вы это делаете или что он делает? Я сомневаюсь в этом - потому что он знает об этом столько же, сколько и ты, но этот кусочек, который он скрутил вместе, сработал, когда он попробовал!
Member 13421231
я знаю, что вы хотите помочь мне, и я хочу, узнав все, что я буду помогать людям не так, как дать ему совет о sql-инъекции , я дам ему полный ответ после того, как исправлю его код и дам ему два кода один без параметризованных запросов, а другой с параметризованными запросами после того , как сделаю все это , я дам ему совет о sql-инъекции, это легенда помощи, а не как ? Почему? - куда ? тебе нужна помощь или мне ?
OriginalGriff
Что ж, я знаю, что делаю ... поэтому я подозреваю, что именно вам нужна помощь: смейтесь:
Итак, начните учиться: вы знаете, почему мы используем их сейчас, но как выглядит параметризованный запрос?
Member 13421231
я пытаюсь, но я нашел так мало информации о c# и sql
OriginalGriff
Ты ведь шутишь, правда? Быстрый поиск на этом сайте показывает около 10 000 статей, связанных только с SQL и C# - это игнорирует форумы, вопросы, ответы ... и Google найдет еще огромное количество.