往数据库保存数据更新日志
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;
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;
相关文章推荐
- Hibernate+Mysql在向数据库中保存 / 更新数据时设置编码格式
- WPF学习日志1---DataGrid绑定与修改更新(数据List & 数据库)[部分代码有摘录其他文章]
- 数据库保存原来数据更新
- 写个单线程读写xml文件并保存数据到数据库(公司xml文件是项目运行方法的日志)
- 使用navicat8通过数据转移实现更新 和 数据库保存实现备份[图文]
- 我用showmodaldialog打开窗口,编辑数据保存后,但虽然数据库里的数据更新了,第二次再showmodaldialog打开窗口时数据并不是更新的状态:
- 关于数据库应用编程——将更新的数据保存到数据库中的一种奇怪现象
- Oracle数据库利用日志挖掘来恢复误删除的数据
- 游戏服务器中的数据库异步操作技术和游戏数据的保存机制
- Android官方文档---把数据保存到数据库中(二)
- 记录部件新增后保存成功,但是数据库没有数据
- 将DataTable保存到数据库的数据表中
- #python学习笔记#使用python爬取网站数据并保存到数据库
- 利用DBLink创建数据库数据定时更新或同步
- VC++ ODBC 读取数据库中的数据保存到EXCEL
- 对于分页时,若数据库的数据不断更新,不让前台显示脏数据(同一条数据重复显示)的处理方式
- 别太轻信测试脚本中返回的测试信息就判断脚本成功,需要核对数据库数据,日志信息才最真实
- 一个简单的批量更新oracle 数据库中 最近的服务商名称的数据
- Tab总结及完美解决FragmentPagerAdapter保存数据更新问题
- 购物车的数据是否应该保存在数据库中?