gpt4 book ai didi

oracle - 德尔福TDBX事务 'Invalid transaction Object'

转载 作者:行者123 更新时间:2023-12-03 15:55:04 27 4
gpt4 key购买 nike

首先,我是 Delphi 的新手,所以这可能是一个被忽视的“平凡细节”。 [提前抱歉]

当我尝试通过连接到 Oracle 11g DB 的 datasnap 服务器运行事务时,出现“无效事务对象” 错误。

由于系统详细信息和公司业务计划,我们选择不使用 ClientDataSets 来处理我们的交易。相反,我们尝试使 Snap 服务器非常通用,仅通过接收查询和返回 native 类型来处理数据访问。

话虽这么说,这里有一些示例代码,很适合我:

function TSnapMethods.TransUpdate: boolean;
var
dbx: TDBXTransaction;
params:TParams;
begin
SqlCon.Open;
dbx := SQLCon.DBXConnection.BeginTransaction(TDBXIsolations.ReadCommitted);
try
params:= TParams.Create(self);
with Params.AddParameter do
begin
name:= 'param';
DataType:= ftWideString;
ParamType:= ptInput;
asString:= 'Bugsville';
end;
with Params.AddParameter do
begin
name:= 'var';
DataType:= ftWideString;
ParamType:= ptInput;
asString:= 'ZZZTOP';
end;
sqlcon.Execute('Update Name set City=:param Where Abrv=:var',params);

SQLcon.CommitFreeAndNil(dbx);//Breaks here...
result:= true;
except
Sqlcon.RollbackFreeAndNil(dbx);//Breaks here also...
result:= false;
end;
end;

最佳答案

通过调用SQLCon.DBXConnection.BeginTransaction(),您绕过了内部TTransactionItem的设置,当您调用提交事务时会检查该内部TTransactionItem SQLConnection 对象上的 >SQLcon.CommitFreeAndNil()。请注意,您正在 DBXConnection 对象上启动事务,但并未同样提交它。

替换

SQLCon.DBXConnection.BeginTransaction()

SQLCon.BeginTransaction()

关于oracle - 德尔福TDBX事务 'Invalid transaction Object',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12941403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com