Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

BDE vs ADO em Delphi


Não sei sobre o Delphi 2007, mas fiz a mesma coisa com o Delphi 7 e o Oracle 8.

Aqui estão as coisas que eu fiz:
  • Definir TAdoDataSet.CursorLocation de acordo com a consulta:
    • clUseClient se a consulta buscar registros para GUI e a consulta for relativamente "simples" - sem agrupamento ou soma
    • clUseServer se a consulta tiver algum tipo de agregação (soma, agrupamento, contagem)
  • Definir TAdoDataSet.CursorType de acordo com a consulta:
    • ctForwardOnly para relatórios em que você não precisa rolar para trás no conjunto de dados - funciona apenas com clUseServer
    • ctEstático para GUI. Este é o único modo que funciona com clUseClient
  • Definir TAdoDataSet.LockType de acordo com a consulta:
    • ltReadOnly para cada conjunto de dados que não é usado para edição (grades, relatórios)
    • ltOtimista quando os registros são postados no banco de dados imediatamente após a alteração (por exemplo, usuário editando dados no formulário)
    • ltBatchOptimistic quando você altera um grande número de registros. Isso é para situações em que você busca um número de registros, faz algum processamento neles e envia atualizações para o banco de dados em lote. Isso funciona melhor combinado com clUseClient e ctStatic.
  • Na minha experiência, o provedor Microsoft OLEDB para Oracle funcionou melhor que o provedor Oracle OleDb. Você deveria testar isso.
    Editar: Confira o comentário do Fabricio sobre possíveis problemas de blob.
  • Substituir TAdoQuery com TAdoDataSet . O TAdoQuery foi criado para conversão de aplicativos de BDE para ADO, mas a recomendação da Borland/Codegear era usar o TAdoDataSet
  • Verifique novamente a string de conexão do Oracle para ter certeza de que você não tem latência de rede. Quanto tempo dura para se conectar ao Oracle? Quanto tempo dura o TnsPing?