Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2014.06.08;
Скачать: CL | DM;

Вниз

поиск по базе   Найти похожие ветки 

 
lancomm ©   (2013-08-19 21:24) [0]

Доброго вечера. Подскажите пожалуйста как совершать поиск по таблице более какого то значения. Есть код
datamodule1.ADOQuery1.Active :=False;
datamodule1.ADOQuery1.SQL.Clear;
datamodule1.ADOQuery1.SQL.Add("SELECT*");
datamodule1.ADOQuery1.SQL.Add("FROM sey1");
datamodule1.ADOQuery1.SQL.Add("WHERE Cena > 31000");
datamodule1.ADOQuery1.Active := true;
form9.ShowModal;

ищет в таблице sey1 в столбце Cena значения больше 31000, если не трудно подскажите синтаксис как искать больше не уже известного значения, а больше введенного например в Edit


 
Dennis I. Komarov ©   (2013-08-19 21:49) [1]

datamodule1.ADOQuery1.Active :=False;
datamodule1.ADOQuery1.SQL.Clear;
datamodule1.ADOQuery1.SQL.Add("SELECT*");
datamodule1.ADOQuery1.SQL.Add("FROM sey1");
datamodule1.ADOQuery1.SQL.Add("WHERE Cena > " + TEdit(указатель).Text);
datamodule1.ADOQuery1.Active := true;
form9.ShowModal;


P.S. Только бред это


 
Dennis I. Komarov ©   (2013-08-19 21:50) [2]

Избавиться от Query и использовать параметры


 
lancomm ©   (2013-08-19 21:57) [3]

Спасибо, работает, подскажите поподробнее о параметрах, если не трудно, или ссылку где почитать, делаю все по древним методичкам


 
Dennis I. Komarov ©   (2013-08-19 22:02) [4]

http://docwiki.embarcadero.com/Libraries/XE2/en/Data.Win.ADODB.TParameters
Пойдет?


 
lancomm ©   (2013-08-19 22:05) [5]

Спасибо еще раз, буду разбираться


 
megavoid ©   (2013-08-19 22:39) [6]

[1] опасно, а если в TEdit(указатель) впишут что-то типа 31000; TRUNCATE TABLE sey1; ?


 
Юрий Зотов ©   (2013-08-19 23:21) [7]


> megavoid ©   (19.08.13 22:39) [6]

Видел забавную картинку: перед ГАИшной камерой едет авто с номерным знаком "Drop Database".

PS
Для двоичных программистов - это на тему внедренного SQL-кода.

PPS
Для супердвоичных программистов - я в курсе, что код не выполнится.


 
Dennis I. Komarov ©   (2013-08-19 23:21) [8]

megavoid ©   (19.08.13 22:39) [6]
> [1] опасно

Говорю же, бред...


 
megavoid ©   (2013-08-19 23:34) [9]

[8] Да Dennis I. Komarov-то знает, не сомневаюсь, а вот ТС :))


 
Dennis I. Komarov ©   (2013-08-19 23:40) [10]


> megavoid ©   (19.08.13 23:34) [9]
> [8] Да Dennis I. Komarov-то знает, не сомневаюсь, а вот
> ТС :))

Судя по запросу, оно и не надо - работает и ...


 
lancomm ©   (2013-08-20 08:04) [11]

я понимаю что вы знаете в чем проблема, но не могли бы вы мне человеческим языком объяснить в чем суть проблемы при
[1] опасно, а если в TEdit(указатель) впишут что-то типа 31000; TRUNCATE TABLE sey1; ?


 
Anatoly Podgoretsky ©   (2013-08-20 09:35) [12]

Cуть проблемы в "TRUNCATE TABLE sey1;"


 
lancomm ©   (2013-08-20 11:17) [13]

вписывал 31000 и более, все ок


 
megavoid ©   (2013-08-20 11:38) [14]

Заменяем всего одно слово, роберта на truncate - и визуальная запоминалка xkcd начинает пробуксовывать, а значит, не столь эффективна :)

[13] Datamodule1.ADOQuery1.SQL.Add формирует SQL запрос, чтобы потом отобразить полученный набор данных куда-нибудь, в dbgrid, например. Если вписать в TEdit обыкновенное число - то запрос к базе получится такой, как и планировался, то бишь SELECT * FROM sey1 WHERE Cena > 31000

Некоторые же персоналии, со зла или по недомыслию, могут попробовать вписать в Edit1 более оригинальный текст, как уже привёл пример: 31000; TRUNCATE sey1;. К чему это приведёт? Получится не один запрос к базе, а два; точка с запятой служит признаком конца запроса для SQL, и база выполнит не только первую команду с селектом, но и вторую, которая стирает все данные из заданной таблицы. Это можно лечить разными способами, можно кавычками, а в данном случае можно и просто заменить Tedit на TSpinEdit, например.

PS гыы, вбил в поиск "adoquery sql injection" - на первом же месте ветка с SQL.ru от 2009 года, где АП с грустью во словах в который раз её объясняет :D



Страницы: 1 вся ветка

Текущий архив: 2014.06.08;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.007 c
1-1325530715
S-C-L
2012-01-02 22:58
2014.06.08
XML Parser


15-1385394712
Абориген
2013-11-25 19:51
2014.06.08
Где взять карты из Windows?


15-1385641583
Девушка
2013-11-28 16:26
2014.06.08
HTTPRIO просунуть xml


2-1376642323
i2e
2013-08-16 12:38
2014.06.08
Определить нажатие кнопки


15-1385370166
Empleado
2013-11-25 13:02
2014.06.08
Немного о вирусах