Главная страница
    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.004 c
2-1413238792
Германн
2014-10-14 02:19
2016.07.24
Где кликнули правой кнопкой мыши вызывая попап меню?


15-1447058234
K-1000
2015-11-09 11:37
2016.07.24
Record -> String (2)


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


6-1281358726
PonosetcDM
2010-08-09 16:58
2016.07.24
Проблемма зависания IDTCPClient


3-1307795544
Geo
2011-06-11 16:32
2016.07.24
Каскадное обновление связных таблиц Oracle+Delphi





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