Как получить выбранные результаты, используя zeoslib

0

Я работаю над проектом с mysql, и для этого я занимаюсь классом с помощью zeoslib, я могу установить соединение, я могу выполнять запросы, такие как вставка, обновление и т.д. Но моя проблема заключается в выборе, я запускаю его тихо, но как бы я сделал, чтобы получить возвращение? Я хотел бы что-то вроде PHP в том, что я сообщаю имя столбца, и он возвращает мне значение строки, которая находится в этом столбце.

  • 1
    Вы когда-нибудь работали с потомками TDataSet, такими как TTable, или компонентами ADO? Я никогда не использовал Zeos, но если TZQuery не происходит от TDataSet, возможно, есть еще один компонент TZ. После этого все станет стандартным, и вы, вероятно, сможете найти подробные сведения о том, как связать элементы управления, осведомленные о данных, с набором данных. См. Например: Связывание элемента управления данными с набором данных в документации Delphi.
Теги:

1 ответ

0
Лучший ответ

Важно, что вы хотите выбрать, вот пример, который использует TZQuery для получения целочисленного значения;

function TAccess.getProgramNo(aProgramName:WideString):Integer;
 var
  q:TZQuery;
begin
  Result := -1;
  q := TZQuery.Create(Self);
  try
      q.Connection := conn;
      q.SQL.Text := ' SELECT progno FROM programs WHERE name = :name ORDER BY progno ASC ';
      q.ParamByName('name').Value := aProgramName;
      q.Open;
      if q.RecordCount > 0 then
        Result := q.FieldByName('progno').AsInteger;
  finally
    q.Free();
  end;
end;

Если вы хотите вернуть список объектов (я не компилировал это);

function TAccess.getPrograms(aProgramName:WideString):TList;
 var
  q:TZQuery;
begin
  Result := TList.Create;
  q := TZQuery.Create(Self);
  try
      q.Connection := conn;
      q.SQL.Text := ' SELECT progno FROM programs WHERE name = :name ORDER BY progno ASC ';
      q.ParamByName('name').Value := aProgramName;
      q.Open;
      While not q.EOF do
        begin
          result.Add(TZoo.Create(....));
          q.Next;
        end;
  finally
    q.Free();
  end;
end;
  • 1
    Вы должны использовать q.Free, а не q.Destroy ().
  • 0
    я редактировал, ты прав.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню