удалить данные в таблице с помощью веб-службы Delphi - PullRequest
0 голосов
/ 13 июля 2011

У меня проблема с моей программой на Delphi.Я хочу удалить данные в таблице с этим URL-адресом запроса: http://localhost:8001/delete/woodSpecie?json={"SessionID":"MVykZKX31d19dYnywxsXM1MdPy0U7VW8","wood_specie_id":"80"}

Фактически я создаю веб-службу.

Ниже приведен мой код delphi:

dm.SessionValidate(SessionID);

dshWoodSpecie := TDSHandlerWoodSpecie.Create(nil, dm);

try
  if dshWoodSpecie.Dataset.isEmpty then
    raise Exception.Create('Wood Specie table is empty.')
  else
  begin
    if Params.Field['wood_specie_id'] = nil then
    begin
      raise Exception.Create('Wood Specie ID is empty.');
    end
    else
    begin
      dshWoodSpecie.AddFilter('wood_specie_id', sqlcmprEqual,
        Params.Field['wood_specie_id'].Value);
    end;
    dshWoodSpecie.ExecSQLWhereHaving;
    dshWoodSpecie.Delete;
    dshWoodSpecie.ApplyUpdates;
  end;
finally
  dshWoodSpecie.Free;
end;

Что случилось, что он вернул бы это сообщение об ошибке:

-
error: {
    msg: "Server Error: Wood Specie table is empty."
    class: "EDatabaseError"
}

Я действительно не знаю, что пошло не так.Я не могу удалить, и моя таблица не пуста в первую очередь.А также я не смог увидеть все свои исключения.

1 Ответ

0 голосов
/ 14 августа 2011

Из вашего вопроса невозможно сказать, почему ваша таблица может быть пустой, но я догадываюсь, что вызовы webService не сохраняют состояние, и вы думаете, что обращаетесь к экземпляру набора данных, который выходит за рамки контекста вашего вызова и вместо этого вы получаете новый пустой экземпляр.

Вы должны проследить в 'dshWoodSpecie: = TDSHandlerWoodSpecie.Create (nil, dm);' и проверьте ваше состояние ваших экземпляров во время выполнения.

Что касается отладки: если вы запускаете веб-приложение для отладки, вы можете отследить так же, как и с любым exe-файлом, - но если вы работаете на реальном веб-сервере (то есть IIS), то создайте свою DLL веб-службы в сам виртуальный каталог, запустите процессы веб-сервиса и затем подключитесь к нему, используя run-> attach to process.

Если вам нужна дополнительная информация о том, как отлаживать, сообщите нам, какую версию Delphi вы используете и как развертываете свой веб-сервис.

«Я не смог увидеть все свои исключения»

Что вы имеете в виду? Вы видели одно исключение, которое вы должны были видеть, если ваш набор данных пуст - как только это исключение выдается и не обрабатывается (как в вашем коде), больше нечего видеть - ваш стек вызовов завершается с первым необработанным исключением.

НТН

...