ClientDataSet中的PacketRecords属性,减轻网络负载,提升服务器与客户端性能

ClientDataSet.PacketRecords属性控制一次性从数据库服务器读取的数据记录条数,默认值-1(表示全部读取),如果数据量很大,会加重网络负载,影响服务器和客户端性能。将

PacketRecords设置成一合理的正值表示一次从数据库读取的数量,通常局域网设置成100-500,广域网设置成50-200,视自身需求适当调整,当浏览的数量超过时,会自动从服务器中读取PacketRecords个数据。

下图PacketReords设置为3,注意状态栏中的数值:

**************************************************************************************

具体操作:

**************************************************************************************

DBGrid1.DataSource->DataSource1.DataSet->ClientDataSet1.ProviderName->DataSetProvider1.DataSet->

SQLDataset1.SQLConnection->SQLConnection1具体数据库(这里连接的是oracle中的EMP表);

SQLDataSet1.CommandText:=SELECT * FROM EMP;ClientDataSet1.Active:=true;

DBNavigator1.DataSource->DataSource1;

**************************************************************************************

相关代码:

**************************************************************************************

procedure TForm3.ClientDataSet1AfterGetRecords(Sender: TObject;
  var OwnerData: OleVariant);
begin
  if ClientDataSet1.Active then
  begin
    StatusBar1.Panels[0].Text := format('%d', [ClientDataSet1.RecordCount]);
  end;
end;

连接到ClientDataSet1.AfterGetRecords事件中。能上代码中delphi XE5,win7 x64,Oracle 11g中测试通过

原文地址:https://www.cnblogs.com/sun998/p/6505694.html