Форум: "Прочее";
Текущий архив: 2014.08.24;
Скачать: [xml.tar.bz2];
ВнизКак использовать строковую переменную в SQL-запросе? Найти похожие ветки
← →
Novicer (2014-01-25 19:45) [0]Здравствуйте! Можно обойтись без ParamByName или нет в Firebird используя IbQuery? Пробовал использовать стр.переменные всяко-разно получаю то ошибку синтаксиса, то ошибку выполнения запроса :(
← →
clickmaker © (2014-01-25 19:53) [1]можно.
> Пробовал использовать стр.переменные всяко-разно получаю
> то ошибку синтаксиса, то ошибку выполнения запроса
значит неправильно пробовал
← →
RWolf © (2014-01-25 20:23) [2]а зачем обходиться без ParamByName, если есть возможность его использовать?
← →
Novicer (2014-01-25 21:24) [3]Хочу без указания параметров передавать через переменные требуемые данные прямо в запрос. Покажите плиз на примере как это можно сделать?
← →
Inovet © (2014-01-25 21:32) [4]> [3] Novicer (25.01.14 21:24)
> через переменные
Через какие такие переменные? Параметры и есть переменные.
← →
ухты (2014-01-25 22:13) [5]прямо не получается, подскажите как криво делать
← →
Novicer (2014-01-25 22:31) [6]Строковые переменные
← →
Novicer (2014-01-25 23:02) [7]Прямо получается, хочу уменьшить количество строк в программе. Слышал что без ParamByName можно обойтись используя переменные в запросе.
← →
Юрий Зотов © (2014-01-25 23:13) [8]> Novicer (25.01.14 23:02) [7]
Можно. Но не нужно.
var
S: string;
S := "Значение";
SQL := "select * from Table where Field = """ + S + """";
Только не говорите, что я Вам это посоветовал. Наоборот, советую все же использовать параметры.
← →
Иксик © (2014-01-25 23:31) [9]Классика :)
s := "x or 1=1; delete from table_name..." :)
← →
Novicer (2014-01-25 23:48) [10]>Юрий Зотов Все работает, спасибо большое! Если можно расскажите о плюсах ParamByName. Зачем перед каждым запросом писать лишние строчки с параметрами, если их можно указать прямо в запросе?
← →
Novicer (2014-01-25 23:55) [11]У меня почему-то после выполнения пару одинаковых запросов подряд вылетает ошибка параметра, хотя он указан перед выполнением запроса:
IBQuery1.Close;
if not IBQuery1.Prepared then IBQuery1.Prepare;
IBQuery1.ParamByName("Name_param").Value := "значение";
IBQuery1.SQL.Text := "SELECT * FROM MAINLIST WHERE (ZNAME CONTAINING :Name_param)";
IBQuery1.Open;
Mainlist - имя таблицы, zname - ее колонка. код прописан на OnClick кнопки
← →
Иксик © (2014-01-25 23:56) [12]Проверка типов в ParamByName есть? Ну и главное: см. SQL Injection.
← →
Иксик © (2014-01-25 23:57) [13][12] было к [10]
← →
clickmaker © (2014-01-25 23:58) [14]а ParamByName и SQL.Text не надо местами поменять?
да и какой смысл делать IBQuery1.Prepare до того как задал текст запроса?
← →
Novicer (2014-01-26 00:12) [15]>Иксик DataType - ftString, ParamType - ptInput
Ошибка из-за неправильной последовательности строк?
← →
Плохиш © (2014-01-26 00:34) [16]
> Юрий Зотов © (25.01.14 23:13) [8]
О, а как же Д"Артаньян?
> Novicer (26.01.14 00:12) [15]
Ты б почитал всë-таки об основах.
← →
Novicer (2014-01-26 00:37) [17]>Плохиш Начал читать, пока слабоват в SQL :(
← →
ухты (2014-01-26 00:47) [18]а при чем тут SQL?
← →
Novicer (2014-01-26 00:53) [19]>ухты ?
← →
Inovet © (2014-01-26 13:11) [20]> [7] Novicer (25.01.14 23:02)
> хочу уменьшить количество строк в программе.
Это самоцель?
← →
Novicer (2014-01-26 14:33) [21]>Inovet Если можно обойтись без ParamByName,зачем применять? Где-то вычитал, что чем меньше играться с параметрами, тем стабильнее работает код... Ваше мнение?
← →
Германн © (2014-01-26 14:38) [22]
> Где-то вычитал, что чем меньше играться с параметрами, тем
> стабильнее работает код... Ваше мнение?
С программами вообще играться не надо. Их надо делать грамотно. :)
← →
RWolf © (2014-01-26 14:44) [23]без параметров серверу придётся каждый раз делать Prepare запросу.
← →
Inovet © (2014-01-26 16:13) [24]> [21] Novicer (26.01.14 14:33)
> Если можно обойтись без ParamByName,зачем применять?
Причём тут ParamByName, речь о параметрах, а не способе доступа к ним в Делфи.
← →
Inovet © (2014-01-26 16:14) [25]> [21] Novicer (26.01.14 14:33)
> Где-то вычитал, что чем меньше играться с параметрами, тем
> стабильнее работает код... Ваше мнение?
Вычитать можно много всякого, и, что интересно, больше вычитывается глупостей.
← →
Кшиштоф Маннергейм (2014-01-26 21:40) [26]S := "Значение";
SQL := "select * from Table where Field = " + QuotedStr(s);
Дело в том, что если значение s не дай бог содержит одиночную кавычку, то при иных подходах могут возникнуть серьезные проблемы.
Хотя согласен с Зотовым, лучше приучить себя пользоваться параметрами.
← →
ухты (2014-01-26 21:45) [27]
> Field = " + QuotedStr(s);
и зачем все стараються кавычить значение?
на тип надо поля смотреть.. разные они и не всегда кастинг пройдет как надо
← →
clickmaker © (2014-01-26 22:01) [28]> [27] ухты (26.01.14 21:45)
собственно, для этого и придумали параметры...
← →
ухты (2014-01-26 22:18) [29]
> clickmaker © (26.01.14 22:01) [28]
[5], а [27] уже так.. для разнообразия :)
← →
Novicer (2014-01-26 23:02) [30]Видно сразу что мастера! Убедили, буду использовать параметры. Все-таки хочется писать правильные программы :) Можно пример в пару строк с применением параметров в запросе?
← →
Плохиш © (2014-01-26 23:38) [31]Чем пример из справки не устраивает?
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2014.08.24;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.003 c