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

Вниз

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

 
Вован Петрович   (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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.005 c
6-1281092171
__REA
2010-08-06 14:56
2016.07.24
TIdIRC away


15-1444771802
Юрий
2015-10-14 00:30
2016.07.24
С днем рождения ! 14 октября 2015 среда


15-1447882201
Юрий
2015-11-19 00:30
2016.07.24
С днем рождения ! 19 ноября 2015 четверг


15-1442784604
Юрий
2015-09-21 00:30
2016.07.24
С днем рождения ! 21 сентября 2015 понедельник


15-1440711004
Юрий
2015-08-28 00:30
2016.07.24
С днем рождения ! 28 августа 2015 пятница





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский