sql >> Databáze >  >> RDS >> Oracle

BDE vs ADO v Delphi

Nevím o Delphi 2007, ale udělal jsem to samé s Delphi 7 a Oracle 8.

Zde jsou věci, které jsem udělal:

  • Nastavte TAdoDataSet.CursorLocation podle dotazu:
    • clUseClient pokud dotaz načte záznamy pro GUI a dotaz je relativně "jednoduchý" - žádné seskupování nebo součet
    • clUseServer pokud dotaz má nějaký druh agregace (součet, seskupení, počítání)
  • Nastavte TAdoDataSet.CursorType podle dotazu:
    • ctForwardOnly pro sestavy, kde nepotřebujete procházet datovou sadou zpět – funguje pouze s clUseServer
    • ctStatic pro GUI. Toto je pouze režim, který funguje s clUseClient
  • Nastavte TAdoDataSet.LockType podle dotazu:
    • ltReadOnly pro každou datovou sadu, která se nepoužívá k úpravám (mřížky, sestavy)
    • ltOptimistický když jsou záznamy odesílány do databáze ihned po změně (např. uživatel editující data ve formuláři)
    • ltBatchOptimistic při změně velkého počtu záznamů. To je pro situace, kdy načtete určitý počet záznamů, poté s nimi provedete nějaké zpracování a poté odešlete aktualizace do databáze v dávce. To funguje nejlépe v kombinaci s clUseClient a ctStatic.
  • Podle mých zkušeností fungoval poskytovatel Microsoft OLEDB pro Oracle lépe než poskytovatel Oracle OleDb. Měl bys to otestovat.
    Upravit: Zkontrolujte Fabriciův komentář o možných problémech s objekty blob.
  • Nahradit TAdoQUery pomocí TAdoDataSet . TAdoQuery byl vytvořen pro konverzi aplikací z BDE na ADO, ale doporučení Borland/Codegear bylo použít TAdoDataSet
  • Znovu zkontrolujte připojovací řetězec Oracle, abyste se ujistili, že nemáte latenci sítě. Jak dlouho trvá připojení k Oracle? Jak dlouho trvá TnsPing?


  1. SQL Jedinečné omezení napříč více tabulkami

  2. Jak získám aktuální rok pomocí SQL na Oracle?

  3. Snadný způsob výběru pravého sloupce jako primárního klíče pro danou tabulku

  4. ORA-24550:signál přijat:chyba [si_signo=6]