⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.pas

📁 ODAC+SDAC源代码
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  // BDE
    if cbBDE.Checked then begin
      ResBDE := MasterDetailTest(BDEQuery, BDEQuery1, i*10);
      Chart.Series[1].AddXY(i*10, ResBDE/1000, '', clTeeColor);
    end;
  // ADO
    if cbADO.Checked then begin
      ResADO := MasterDetailTest(ADOQuery, ADOQuery1, i*10);
      Chart.Series[2].AddXY(i*10, ResADO/1000, '', clTeeColor);
    end;
  // dbExpress
    if cbdbExpress.Checked then begin
      ResdbExp := MasterDetailTest(BorlandSQLQuery, BorlandSQLQuery1, i*10);
      Chart.Series[3].AddXY(i*10, ResdbExp/1000, '', clTeeColor);
    end;
  // dbExpSda
    if cbdbExpSda.Checked then begin
      ResdbExpSda := MasterDetailTest(CrLabSQLQuery, CrLabSQLQuery1, i*10);
      Chart.Series[4].AddXY(i*10, ResdbExpSda/1000, '', clTeeColor);
    end;

    if ResSDAC > 0 then begin
      mBDE := ((i - 1)*mBDE + ResBDE/ResSDAC)/i;
      mADO := ((i - 1)*mADO + ResADO/ResSDAC)/i;
      mdbExp := ((i - 1)*mdbExp + ResdbExp/ResSDAC)/i;
      mdbExpSda := ((i - 1)*mdbExpSda + ResdbExpSda/ResSDAC)/i;
      lbSDAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
      lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
      lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
      lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
      lbdbExpSda.Caption := FloatToStrF(mdbExpSda, ffGeneral, 5, 3);
      lbBDE.Update;
      lbADO.Update;
      lbdbExpress.Update;
      lbdbExpSda.Update;
    end;

    Chart.Update;
  end;
  PrintResults;
end;

procedure TfmMain.btSPCallTestClick(Sender: TObject);
var
  i:integer;
  ResSDAC, ResBDE, ResADO, ResdbExp, ResdbExpSda: integer;
  mBDE, mADO, mdbExp, mdbExpSda: double;
const
  Step = 10;
begin
  CheckConnected;

  Chart.Title.Text.Text := 'StoredProc Call Test';
  for i := 0 to Chart.SeriesCount - 1 do
    Chart.Series[i].Clear;
  Chart.BottomAxis.Minimum := 0;
  Chart.BottomAxis.Maximum := 11 * Step;

  mBDE := 0;
  mADO := 0;
  mdbExp := 0;
  mdbExpSda := 0;
  for i := 1 to 10 do begin
    ResSDAC := 0;
    ResBDE := 0;
    ResADO := 0;
    ResdbExp := 0;
    ResdbExpSda := 0;

    meResult.Lines.Add('---------------');
  // SDAC
    if cbSDAC.Checked then begin
      ResSDAC := SPCallTest(MSStoredProc, i*Step);
      Chart.Series[0].AddXY(i*Step, ResSDAC/(Step * 10), '', clTeeColor);
    end;
  // BDE
    if cbBDE.Checked then begin
      ResBDE := SPCallTest(BDEStoredProc, i*Step);
      Chart.Series[1].AddXY(i*Step, ResBDE/(Step * 10), '', clTeeColor);
    end;
  // ADO
    if cbADO.Checked then begin
      ResADO := SPCallTest(ADOStoredProc, i*Step);
      Chart.Series[2].AddXY(i*Step, ResADO/(Step * 10), '', clTeeColor);
    end;
  // dbExpress
    if cbdbExpress.Checked then begin
      ResdbExp := SPCallTest(BorlandSQLStoredProc, i*Step);
      Chart.Series[3].AddXY(i*Step, ResdbExp/(Step * 10), '', clTeeColor);
    end;
  // dbExpSda
    if cbdbExpSda.Checked then begin
      ResdbExpSda := SPCallTest(CrLabSQLStoredProc, i*Step);
      Chart.Series[4].AddXY(i*Step, ResdbExpSda/(Step * 10), '', clTeeColor);
    end;

    if ResSDAC > 0 then begin
      mBDE := ((i - 1)*mBDE + ResBDE/ResSDAC)/i;
      mADO := ((i - 1)*mADO + ResADO/ResSDAC)/i;
      mdbExp := ((i - 1)*mdbExp + ResdbExp/ResSDAC)/i;
      mdbExpSda := ((i - 1)*mdbExpSda + ResdbExpSda/ResSDAC)/i;
      lbSDAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
      lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
      lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
      lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
      lbdbExpSda.Caption := FloatToStrF(mdbExpSda, ffGeneral, 5, 3);
      lbBDE.Update;
      lbADO.Update;
      lbdbExpress.Update;
      lbdbExpSda.Update;
    end;

    Chart.Update;
  end;
  PrintResults;
end;

procedure TfmMain.btDataLoadingTestClick(Sender: TObject);
begin
  //
end;
(*
const
  Step = 1000;
var
  i:integer;
  ResSDAC,ResBDE,ResADO,ResdbExp: integer;
  mBDE,mADO,mdbExp: double;
begin
  Chart.Title.Text.Text := 'DataLoading Test';
  for i := 0 to Chart.SeriesCount - 1 do
    Chart.Series[i].Clear;
  Chart.BottomAxis.Minimum := 0; //-100;
  Chart.BottomAxis.Maximum := Step*6;//11;

  mBDE := 0;
  mADO := 0;
  mdbExp := 0;
  for i := 1 to 5 do begin
    ResSDAC := 0;
    ResBDE := 0;
    ResADO := 0;
    ResdbExp := 0;

    meResult.Lines.Add('---------------');
    
    ExecSQL('TRUNCATE TABLE Loaded');
  // SDAC
    if cbSDAC.Checked then begin
      ResSDAC := DataLoadingTest(MSLoader, i*Step);
      Chart.Series[0].AddXY(i*Step, ResSDAC/1000, '', clTeeColor);
    end;
    MSConnection.Commit;
    MSConnection.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
    Database.StartTransaction;
  // BDE
    if cbBDE.Checked then begin
      ResBDE := DataLoadingTest(BDEQuery, i*Step);
      Chart.Series[1].AddXY(i*Step, ResBDE/1000, '', clTeeColor);
    end;
    Database.Commit;
    MSConnection.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
  // ADO
    if cbADO.Checked then begin
      ResADO := DataLoadingTest(ADOQuery, i*Step);
      Chart.Series[2].AddXY(i*Step, ResADO/1000, '', clTeeColor);
    end;
  // dbExpress
    MSConnection.ExecSQL('TRUNCATE TABLE Loaded', [Null]);
    if cbdbExpress.Checked then begin
      ResdbExp := DataLoadingTest(BorlandSQLQuery, i*Step);
      Chart.Series[3].AddXY(i*Step, ResdbExp/1000, '', clTeeColor);
    end;

    if ResSDAC > 0 then begin
      mBDE := ((i - 1)*mBDE + ResBDE/ResSDAC)/i;
      mADO := ((i - 1)*mADO + ResADO/ResSDAC)/i;
      mdbExp:= ((i - 1)*mdbExp+ ResdbExp/ResSDAC)/i;
      lbSDAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
      lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
      lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
      lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
      lbBDE.Update;
      lbADO.Update;
      lbdbExpress.Update;
    end;

    Chart.Update;
  end;
end;
*)

procedure TfmMain.edFetchRowsExit(Sender: TObject);
var
  Connected: boolean;
begin
  try
    MSQuery.FetchRows := StrToInt(edFetchRows.Text);
    MSQuery1.FetchRows := StrToInt(edFetchRows.Text);
    Connected := Database.Connected;
    Database.Close;
    Database.Params.Values['ROWSET SIZE'] := edFetchRows.Text;
    if Connected then begin
      Database.LoginPrompt := False;
      Database.Open;
      Database.LoginPrompt := True;
    end;
    ADOQuery.CacheSize := StrToInt(edFetchRows.Text);
    ADOQuery1.CacheSize := StrToInt(edFetchRows.Text);    
  finally
    edFetchRows.Text := IntToStr(MSQuery.FetchRows);
  end;
end;

procedure TfmMain.btCreateClick(Sender: TObject);
begin
  scCreate.Execute;
  scCreate2.Execute;
end;

procedure TfmMain.btDropClick(Sender: TObject);
begin
  scDrop.Execute;
end;

procedure TfmMain.cbMarkClick(Sender: TObject);
var
  i: integer;
begin
  for i := 0 to Chart.SeriesCount - 1 do
    Chart.Series[i].Marks.Visible := cbMark.Checked;
end;

(*
procedure TfmMain.MSLoaderPutData(Sender: TMSLoader);
var
  i: integer;
begin
  for i := 1 to LoadCount do begin
    Sender.PutColumnData(0, i, i);
    Sender.PutColumnData(1, i, '01234567890123456789');
  end;
end;*)

procedure TfmMain.btnMultiExecutingClick(Sender: TObject);
var
  i:integer;
  ResSDAC, ResBDE, ResADO, ResdbExp, ResdbExpSda: integer;
  mBDE, mADO, mdbExp, mdbExpSda: double;
begin
  CheckConnected;

  Chart.Title.Text.Text := 'MultiExecuting Test';
  for i := 0 to Chart.SeriesCount - 1 do
    Chart.Series[i].Clear;
  Chart.BottomAxis.Minimum := 0;
  Chart.BottomAxis.Maximum := 1100;

  mBDE := 0;
  mADO := 0;
  mdbExp := 0;
  mdbExpSda := 0;
  for i := 1 to 10 do begin
    ResSDAC := 0;
    ResBDE := 0;
    ResADO := 0;
    ResdbExp := 0;
    ResdbExpSda := 0;

    meResult.Lines.Add('---------------');
  // SDAC
    if cbSDAC.Checked then begin
      ResSDAC := MultiExecutingTest(MSSQL, i*100);
      Chart.Series[0].AddXY(i*100, ResSDAC/1000, '', clTeeColor);
    end;
  // BDE
    if cbBDE.Checked then begin
      ResBDE := MultiExecutingTest(BDEQuery, i*100);
      Chart.Series[1].AddXY(i*100, ResBDE/1000, '', clTeeColor);
    end;
  // ADO
    if cbADO.Checked then begin
      ResADO := MultiExecutingTest(ADOQuery, i*100);
      Chart.Series[2].AddXY(i*100, ResADO/1000, '', clTeeColor);
    end;
  // dbExpress
    if cbdbExpress.Checked then begin
      ResdbExp := MultiExecutingTest(BorlandSQLQuery, i*100);
      Chart.Series[3].AddXY(i*100, ResdbExp/1000, '', clTeeColor);
    end;
  // dbExpSda
    if cbdbExpSda.Checked then begin
      ResdbExpSda := MultiExecutingTest(CrLabSQLQuery, i*100);
      Chart.Series[4].AddXY(i*100, ResdbExpSda/1000, '', clTeeColor);
    end;

    if ResSDAC > 0 then begin
      mBDE := ((i - 1)*mBDE + ResBDE/ResSDAC)/i;
      mADO := ((i - 1)*mADO + ResADO/ResSDAC)/i;
      mdbExp := ((i - 1)*mdbExp + ResdbExp/ResSDAC)/i;
      mdbExpSda := ((i - 1)*mdbExpSda + ResdbExpSda/ResSDAC)/i;
      lbSDAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
      lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
      lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
      lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
      lbdbExpSda.Caption := FloatToStrF(mdbExpSda, ffGeneral, 5, 3);
      lbBDE.Update;
      lbADO.Update;
      lbdbExpress.Update;
      lbdbExpSda.Update;
    end;

    Chart.Update;
  end;
  PrintResults;
end;

procedure TfmMain.FormDestroy(Sender: TObject);
begin
  btDisconnectClick(nil);
end;

procedure TfmMain.btnInsertPostClick(Sender: TObject);
var
  i: integer;
  ResSDAC, ResBDE, ResADO, ResdbExp, ResdbExpSda: integer;
  mBDE, mADO, mdbExp, mdbExpSda: double;
const
  Step = 10;
begin
  CheckConnected;

  Chart.Title.Text.Text := 'Insert / Post Test';
  for i := 0 to Chart.SeriesCount - 1 do
    Chart.Series[i].Clear;
  Chart.BottomAxis.Minimum := 0;
  Chart.BottomAxis.Maximum := 11 * Step;

  mBDE := 0;
  mADO := 0;
  mdbExp := 0;
  mdbExpSda := 0;
  for i := 1 to 10 do begin
    ResSDAC := 0;
    ResBDE := 0;
    ResADO := 0;
    ResdbExp := 0;
    ResdbExpSda := 0;

    meResult.Lines.Add('---------------');
  // SDAC
    if cbSDAC.Checked then begin
      ResSDAC := InsertPostTest(MSTable, i*Step);
      Chart.Series[0].AddXY(i*Step, ResSDAC/10 * Step, '', clTeeColor);
    end;
  // BDE
    if cbBDE.Checked then begin
      ResBDE := InsertPostTest(BDETable, i*Step);
      Chart.Series[1].AddXY(i*Step, ResBDE/10 * Step, '', clTeeColor);
    end;
  // ADO
    if cbADO.Checked then begin
      ResADO := InsertPostTest(ADOTable, i*Step);
      Chart.Series[2].AddXY(i*Step, ResADO/10 * Step, '', clTeeColor);
    end;
  // dbExpress
    if cbdbExpress.Checked then begin
      ResdbExp := InsertPostTest(BorlandClientDataSet, i*Step);
      Chart.Series[3].AddXY(i*Step, ResdbExp/10 * Step, '', clTeeColor);
    end;
  // dbExpSda
    if cbdbExpSda.Checked then begin
      ResdbExpSda := InsertPostTest(CrLabClientDataSet, i*Step);
      Chart.Series[4].AddXY(i*Step, ResdbExpSda/10 * Step, '', clTeeColor);
    end;

    if ResSDAC > 0 then begin
      mBDE := ((i - 1)*mBDE + ResBDE/ResSDAC)/i;
      mADO := ((i - 1)*mADO + ResADO/ResSDAC)/i;
      mdbExp := ((i - 1)*mdbExp + ResdbExp/ResSDAC)/i;
      mdbExpSda := ((i - 1)*mdbExpSda + ResdbExpSda/ResSDAC)/i;
      lbSDAC.Caption := FloatToStrF(1, ffGeneral, 5, 3);
      lbBDE.Caption := FloatToStrF(mBDE, ffGeneral, 5, 3);
      lbADO.Caption := FloatToStrF(mADO, ffGeneral, 5, 3);
      lbdbExpress.Caption := FloatToStrF(mdbExp, ffGeneral, 5, 3);
      lbdbExpSda.Caption := FloatToStrF(mdbExpSda, ffGeneral, 5, 3);
      lbBDE.Update;
      lbADO.Update;
      lbdbExpress.Update;
      lbdbExpSda.Update;
    end;

    Chart.Update;
  end;
  PrintResults;
end;

procedure TfmMain.cbSetInternalNameClick(Sender: TObject);
var
  AConnected: boolean;
  ALoginPrompt: boolean;
begin
  AConnected := MSConnection.Connected;
  ALoginPrompt := MSConnection.LoginPrompt;
  MSConnection.Connected := false;
  MSConnection.LoginPrompt := false;
  MSConnection.Connected := AConnected;
  MSConnection.LoginPrompt := ALoginPrompt;
end;

procedure TfmMain.cbResultLogClick(Sender: TObject);
begin
  meResult.Visible := cbResultLog.Checked;
  Splitter1.Visible := cbResultLog.Checked;
end;

const
  coFetchAll = TSQLConnectionOption(301); // boolean
  coPermitPrepare       = TSQLConnectionOption(104);
  
procedure TfmMain.CrLabSQLConnectionAfterConnect(Sender: TObject);
begin
  CrLabSQLConnection.SQLConnection.SetOption(coFetchAll, Integer(False));
  CrLabSQLConnection.SQLConnection.SetOption(coPermitPrepare, Integer(True));
end;

procedure TfmMain.cbPermitPrepareClick(Sender: TObject);
begin
  CrLabSQLConnection.Close;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -