Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2014.06.08;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.001 c
15-1385474888
Абориген
2013-11-26 18:08
2014.06.08
SaveToFile. Отказано в доступе.


1-1325530715
S-C-L
2012-01-02 22:58
2014.06.08
XML Parser


15-1385393065
Абориген
2013-11-25 19:24
2014.06.08
Простая задачка


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


15-1385670603
Юрий
2013-11-29 00:30
2014.06.08
С днем рождения ! 29 ноября 2013 пятница





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский