您的位置:首页 > 数据库

往数据库保存数据更新日志

2011-09-03 14:43 295 查看
function TNSHTLinkPrjServer.UpdateData(const delta: Binary;

const sTableName: UnicodeString; const sAppId: UnicodeString): Variant;

{ =============================================================================

用来更新数据包日志的更新过程,不被外面调用

=============================================================================

}

var

errcnt: Integer;

RdataRec: TRdataRec;

source: TROBinaryMemoryStream;

decstream: TDecompressionStream;

comStream: TCompressionStream;

sAccount: string;

begin

// 判断版本

if Copy(After('_', UncrypStr(sAppId, strkey)), 1, 4) <> 'sage' then

begin

try

StrToInt('y')

except

on e: Exception do

raise Exception.Create('非授权客户端程序(含图片更新)!');

end;

end;

if not JugeUsered(UncrypStr(sAppId, strkey)) then

Exit; // 非法用户不能进入

sAccount := Trim(GetAccount(UncrypStr(sAppId, strkey)));

if (not ADOConnection1.Connected) or (not SQLConnection1.Connected) then

Connect2DataBase(sAccount);

try

RdataRec.deltas.Add(delta);

RdataRec.sTableName.Add(sTableName);

// cds 的命名规则为ProviderName:中文名称_表名

RdataRec.bChecked := True;

RdataRec.iiCount := 0;

result := 0;

ADOQuery1.Close;

ADOQuery1.SQL.Text := 'select * from ' + sTableName + ' where 1=0';

ADOQuery1.Open;

dsSetWhere(ADOQuery1, ADOQuery2, sTableName);

decstream := TDecompressionStream.Create(delta);

decstream.Position := 0;

cdsdataset.LoadFromStream(decstream);

DataSetProvider.ApplyUpdates(cdsdataset.Data, 0, errcnt);

// 保存操作日志

SaveLogRecord(RdataRec, sTableName, sAppId);

//

if (errcnt > 0) then

begin

result := 1;

raise Exception.CreateFmt('There were %d errors', [errcnt]);

end;

finally

ADOQuery1.Close;

decstream.Free;

end;

end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐