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

Вниз

Как правильно передать параметры запросу?   Найти похожие ветки 

 
Вован Петрович   (2014-10-26 13:52) [0]

Так:

  IBQuery1.SQL.Text:="SELECT * FROM MyTable WHERE MyField=:Name_param1 ";
  IBQuery1.ParamByName("Name_param1").AsString := Edit1.text;
  if not IBQuery1.Prepared then IBQuery1.Prepare;
  IBQuery1.Open;
 
или так:

  IBQuery1.SQL.Text:="SELECT * FROM MyTable WHERE MyField=:Name_param1 ";
  IBQuery1.Params[0].AsString := Edit1.text;
  if not IBQuery1.Prepared then IBQuery1.Prepare;
  IBQuery1.Open;

В чем разница между ParamByName("Name_param1").AsString  и Params[0].AsString ?


 
Kilkennycat ©   (2014-10-26 14:19) [1]


> В чем разница между ParamByName("Name_param1").AsString
>  и Params[0].AsString ?

в удобстве понимания. понять, глядя на ноль, что это "Name_param1" довольно-таки сложно.
кроме того, если точно известно, что нужен "Name_param1" а его там нет, то это можно будет отловить. в случае с прямым указанием пофиг имя.
ну и если порядок в массиве будет нарушен, то тоже кака будет.


 
Вован Петрович   (2014-10-26 14:28) [2]

Почему тогда если писать IBQuery1.ParamByName("Name_param1").AsString := Edit1.text вылетает ошибка Name_param1 not found? При втором способе все ОК


 
Kilkennycat ©   (2014-10-26 15:12) [3]

пробел перед двоеточием поставь.


 
Kilkennycat ©   (2014-10-26 15:13) [4]

WHERE MyField= :Name_param1


 
Вован Петрович   (2014-10-27 09:53) [5]

Я думал компилятор игнорирует пробелы. Выходит они значимы для переменных?


 
icWasya ©   (2014-10-27 10:32) [6]

Кроме того, некоторые движки SQL не умеют обрабатывать параметры, которые встречаются несколько раз. Например, если :NameParam встретится в тексте запроса два раза, то парсер будет считать, что это два разных параметра, хотя и с одинаковыми именами.(повторяю только некоторые базы, может быть в последних версиях исправлено) И в таком случае обращение по имени будет работать неправильно.


 
Kilkennycat ©   (2014-10-27 11:24) [7]


> Вован Петрович   (27.10.14 09:53) [5]
> Я думал компилятор игнорирует пробелы.

правильно думал.
но это вообще не компилятор обрабатывает, ему эт просто строка, а движок бд пробелы любит.



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

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

Наверх




Память: 0.48 MB
Время: 0.013 c
15-1445361141
Rouse_
2015-10-20 20:12
2016.07.24
Таксь, у нас опять кто-то умный появился.


4-1278405370
tytus
2010-07-06 12:36
2016.07.24
CryptoAPI (Delphi 2010, XP SP3)


2-1414329724
M.A.
2014-10-26 17:22
2016.07.24
Помогите переделать проседуру рисования под WinApi(Delphi).


15-1445526860
Dimka Maslov
2015-10-22 18:14
2016.07.24
Чем теперь давить рекламу?


15-1442015464
trenkin
2015-09-12 02:51
2016.07.24
Ошибка при открытии файла PDF из вложения