我对delphi中的程序有这个问题。我想使用此请求网址删除表格中的数据:http://localhost:8001/delete/woodSpecie?json={"SessionID":"MVykZKX31d19dYnywxsXM1MdPy0U7VW8","wood_specie_id":"80"}
我正在创建一个Web服务。
以下是我的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"
}
我真的不知道出了什么问题。我无法删除,我的表首先不是空的。 而且,我无法看到所有例外情况。
答案 0 :(得分:0)
从您的问题来看,无法说明为什么您的表可能为空,但我的预感是WebService调用是无状态的,并且您认为您正在访问在您的调用环境中超出范围的数据集实例你正在获得一个新的空实例。
你应该追溯到'dshWoodSpecie:= TDSHandlerWoodSpecie.Create(nil,dm);'并在运行时检查您的实例状态。
至于调试:如果您正在运行Web调试应用程序,您可以像任何exe一样跟踪 - 但如果您在真实的Web服务器(即IIS)中运行,那么构建您的Web服务DLL在虚拟目录本身中,启动webservice进程,然后使用run-> attach to process附加到它。
如果您需要有关如何调试的更多信息,请告诉我们您正在运行的Delphi版本以及如何部署WebService。
“我无法看到所有例外”
你是什么意思?你看到了如果你的数据集是空的你应该看到的一个例外 - 一旦抛出该异常并且没有处理(如在你的代码中),没有什么可看的 - 你的调用栈终止于第一个未处理的期望。HTH