Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651

Параметризованный запрос

03.04.2019, 00:48. Показов 646. Ответов 5
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток. Для работы с MySQL использую компоненты MyDAC. Выполняется параметризованный запрос:
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
procedure TForm6.BT_authClick(Sender: TObject);
var
  MyQuery: TMyQuery;
  DataSource: TMyDataSource;
begin
  MyQuery:= TMyQuery.Create(Form6);
  DataSource:= TMyDataSource.Create(Form6);
 
  MyQuery.SQL.Clear();
  MyQuery.SQL.Add('select level from user where login = :login and password = :password');
 
  MyQuery.Params.ParamByName('login').Value:= TB_login.Text;
  MyQuery.Params.ParamByName('password').Value:= TB_pass.Text;
 
  ExecQuery(MyQuery, DataSource, true);
  ShowMessage(MyQuery.FieldByName('level').Value);
end;


В итоге ошибка: поле 'level' не найдено. В

Выполнение запроса вынесено в отдельный метод (проверено, работает):
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
procedure ExecQuery(var Query: TMyQuery; var DataSource: TMyDataSource; needReturn: boolean);
var
  Connection: TMyConnection;
  t: SettingsFile;
begin
  if(FileExists(PATH))
  then
  begin
      t:= ReadSettings();
 
      Connection:= TMyConnection.Create(nil);
 
      Connection.ConnectString:= 'User ID=' + t.BD_login + ';Password=' + t.BD_password + ';Data Source=' + t.BD_server +
      ';Database=' + t.BD_name + ';Port=' + IntToStr(t.BD_port);
      DataSource.DataSet := Query;
 
      Query.Connection := Connection;
 
      Connection.Connected := true;
      Connection.Open;
 
      if(needReturn)
      then
        Query.open()
      else
        Query.ExecSQL();
 
  end
  else
    ShowтMessage('5 Файл настроек отсутствует');
end;


Есть аналогичный случай, по факту та же работа с БД
Кликните здесь для просмотра всего текста
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
procedure SetGrid(var grid: TDBGrid);
var
   DataSource: TMyDataSource;
   MyQuery: TMyQuery;
begin
  DataSource := TMyDataSource.Create(nil);
  MyQuery:= TMyQuery.Create(nil);
 
  MyQuery.SQL.Add('select * from unit where isDelete = 0');
  ExecQuery(MyQuery, DataSource, true);
 
  SetLength(ids, 1);
  MyQuery.First;
  while(not MyQuery.Eof) do
  begin
    ids[Length(ids) - 1]:= MyQuery.FieldByName('Id').AsString;
    SetLength(ids, Length(ids) + 1);
 
    MyQuery.Next;
  end;
 
  grid.DataSource := DataSource;
end;


Только в первом случае возвращаемых значений нет, а во втором - они есть. Думаю, все-таки, проблема в том, что запрос параметризованный. Но почему - не понимаю

Добавлено через 8 минут
Если Вы приведете другой пример работы с MySQL, то тоже буду благодарен
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
03.04.2019, 00:48
Ответы с готовыми решениями:

Параметризованный запрос
Доброго времени суток. Есть параметризованный запрос(Enter - структура, из которой берутся данные): var com = new...

Параметризованный запрос
У меня есть запрос на выборку из бд. insertDataInDGV("SELECT Id_Дисциплины, Название_дисциплины, Название_файла, Комментарий FROM...

параметризованный запрос ООП
$db = db_connect(); $statement = $db->prepare ( 'SELECT `email` FROM `users` WHERE `email` = ? AND `page_address` = ?' ); ...

5
Модератор
 Аватар для D1973
9922 / 6458 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
03.04.2019, 05:36
Интересно, а Level не является каким-нибудь зарезервированным словом для MySQL?
А так изменится что-нибудь?
Delphi
1
2
3
4
5
MyQuery.SQL.Add('select * from user where (login = :L) and (password = :P');
MyQuery.Params.ParamByName('L').Value:= TB_login.Text;
MyQuery.Params.ParamByName('P').Value:= TB_pass.Text;
ExecQuery(MyQuery, DataSource, true);
ShowMessage(MyQuery.FieldByName('level').AsString);
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
03.04.2019, 23:59  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
Level не является каким-нибудь зарезервированным словом для MySQL?
Да, это так, но это проходит. Проверено через Workbench

Добавлено через 1 минуту
D1973, как Вы работаете с БД? Т.е. с помощью чего?
0
Модератор
 Аватар для D1973
9922 / 6458 / 2457
Регистрация: 21.01.2014
Сообщений: 27,409
Записей в блоге: 3
04.04.2019, 05:08
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
с помощью чего?
с Акцессом - через ADO
с FB и SQLIte - через FireDAC
Других СУБД у меня нет...

Добавлено через 1 минуту
Цитата Сообщение от Zwelenewskiy Посмотреть сообщение
но это проходит
А, может, как-то экранировать это служебное слово? Квадратными скобками, или как там оно в MySQL делается?
0
 Аватар для Zwelenewskiy
129 / 127 / 107
Регистрация: 09.01.2017
Сообщений: 1,651
04.04.2019, 09:12  [ТС]
Цитата Сообщение от D1973 Посмотреть сообщение
как-то экранировать это служебное слово
Зачем, если скрипт все равно выполняется в СУБД?
0
 Аватар для krapotkin
6849 / 4676 / 1464
Регистрация: 14.04.2014
Сообщений: 20,670
Записей в блоге: 21
04.04.2019, 11:18
а на вопрос из #2 не ответите?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
04.04.2019, 11:18
Помогаю со студенческими работами здесь

Полу параметризованный запрос
Идея такая: есть параметризованный запрос. Можно ли сделать так, что если параметр не указан, то выводить все значения запроса (параметр...

Параметризованный запрос: Не совпадает число значений запроса и число результирующих полей
Параметризованный запрос НЕ ВЫПОЛНЯЕТСЯ Среда Visual Basic STUDIO’2010 Professional Не совпадает число значений запроса и число...

Параметризованный запрос ожидает параметр "@Ccal" который не был указан
При записи в ячейку "Ccal" - выходит ошибка, указанная в теме. Код был вот такой: adapt.SelectCommand = new...

Параметризованный скрипт
Подскажите пожалуйста, как сделать два режима работы скрипта, т.е. в одном случае пользователь берет и вводит параметры, при этом скрип у...

параметризованный чертеж
Здравствуйте, помогите построить вот такой параметризованный чертеж: Нужно задать длину сторон, скругление, диаметр круга. Нарисовать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru