Отправляет email-рассылки с помощью сервиса Sendsay

RFpro.ru: Базы данных MySQL

  Все выпуски  

RusFAQ.ru: Базы данных SQL


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Базы данных SQL

Выпуск № 274
от 01.08.2007, 20:35

Администратор:Калашников О.А.
В рассылке:Подписчиков: 442, Экспертов: 59
В номере:Вопросов: 1, Ответов: 3


Вопрос № 96647: Подскажите, как задать параметры в SQL-запросе? Необходимо в запросе задать значение, используя компонент Tedit на какой-либо форме....

Вопрос № 96.647
Подскажите, как задать параметры в SQL-запросе? Необходимо в запросе задать значение, используя компонент Tedit на какой-либо форме.
Отправлен: 27.07.2007, 20:19
Вопрос задал: Aleks2602 (статус: Посетитель)
Всего ответов: 3
Мини-форум вопроса >>> (сообщений: 1)

Отвечает: Gines
Здравствуйте, Aleks2602!

К сожалению Вы не указали какой язык и какие компоненты вы используете. Если используете C++ Builder или Delphi и компонент Query из BDE, то использование значение из поля можно организовать следующим образом:

переменная=Edit1->Text;
Query1->SQL->Strings[0]="select * from 'Ваша_таблица' where поле like '"+переменная+"';";
Ответ отправил: Gines (статус: 2-ой класс)
Ответ отправлен: 27.07.2007, 22:00
Оценка за ответ: 3

Отвечает: Виктор Пырлик
Здравствуйте, Aleks2602!

Возможно несколько вариантов запроса с параметрами, например:
1. Параметризованный запрос
2. Непосредственно формирование запроса

«Параметризованный запрос» - использовать в условии WHERE подстановку – параметр:
SELECT * FROM Country
where Name = :p

----------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
Query1.Active := false;
Query1.ParamByName('p').AsString := Edit1.Text;
Query1.Active := true;
end;
-----------------------------
:p – параметр, произвольное имя. В случае, если имя будет иметь определенное значение совпадающее с именем поля другой таблицы, можно назначить свойству DataSource компонента запроса датасет таблицы связи, таким образом, получить связанные таблицы по схеме «мастер – подчиненный».

«Непосредственное формирование запроса» - это формирование строки запроса во время исполнения программы:
-------------------------------------------------------------------
procedure TForm1.Button2Click(Sender: TObject);
var s:String;
begin
s := Format('SELECT * FROM Country WHERE Name = %s',[QuotedStr(Edit1.Text)]);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add(s);
Query1.Open;
end;
-----------------------------------------------------------------------


---------
Если ничего не помогло - надо читать инструкцию
Ответ отправил: Виктор Пырлик (статус: Студент)
Ответ отправлен: 27.07.2007, 22:26
Оценка за ответ: 5

Отвечает: Щекунов Владимир Леонидович
Здравствуйте, Aleks2602!

Если Вы программируете в Delphi/Builder, то необходимо использовать соответствующие компоненты: например ADOQuery для MS SQL Server, IBQuery в случае Interbase.
Запрос может выглядеть так - SELECT * FROM Table WHERE Field1 = :Param1 AND Fileld2 < :Param2 или
INSERT INTO Table VALUES (:Param1, :Param2).
Далее в свойствах соответствующего компонента необходимо выбрать свойство Params, и в появившемся окне Editing нужно отредактировать параметры (имя параметра, тип данных и т.д.).
Передавать значения параметров из приложения можно так:
IBQuery.Params.ParamByName('Param1').Value = EditBox.Text; //строковое значение

ADOQuery.Params.ParamByName('Param2').Value = StrToInt(EditBox.Text); //целочисленное значение

Советую ознакомится с книгой "Разработка клиент-серверных приложений в Delphi", автор Андрей Шкрыль. В ней приведены примеры приложений для доступа к БД Interbase/Firebird, MS SQL Server 2000

---------
Настоящий программист сначала долго думает, чтобы потом ничего не делать.
Ответ отправил: Щекунов Владимир Леонидович (статус: 1-ый класс)
Ответ отправлен: 30.07.2007, 18:26


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2007, Портал RusFAQ.ru, Россия, Москва.
Авторское право: ООО "Мастер-Эксперт Про"
Email: support@rusfaq.ru, тел.: +7 (926) 535-23-31
Хостинг: "Московский хостер"
Поддержка: "Московский дизайнер"
Авторские права | Реклама на портале
Версия системы: 4.54 beta от 01.08.2007
Яндекс Rambler's Top100
RusFAQ.ru | MosHoster.ru | MosDesigner.ru | RusIRC.ru
Kalashnikoff.ru | RadioLeader.ru | RusFUCK.ru

В избранное