|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Membre régulier
![]() |
Bonour,
J'ai de + en + d'erreurs Oracle 'nombre maximum de curseurs atteint', alors que j'en ai 300 de déclarés par user. Le pb se pose sur un service pour lequel je fais beaucoup de requête à la main dans Delphi. Voici un exemple de code, sachant que je déclare 2 TDACQuery que je réutilise une bonne 50aine de fois : Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle'; Qry.Prepare; Qry.SetParamType('pCle','VARCHAR'); Qry.SetParamAsString('pCle',Context.Values['MaValeur']); Qry.Open; Est-ce bien correct ??? J'ai entendu dire que ce pb était connu avec le BDE, mais avec ADO ?? Qqu'un aurait-il une piste ??
__________________
Renaud W2003 / XP /VISTA SQL SERVER / ORACLE ADO |
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() |
Bon passons sur le fait que de faire des requêtes à la main ne soit pas la meilleure chose
le code correct serait: Code :
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
||
|
|
00
|
|
|
#3 |
|
Membre régulier
![]() |
Même si je fais un FreeAndNil ???
voici le code complet que je fais: procedure TEST var Qry : TDacQuery; begin Qry := TDACQuery.Create(nil); try Qry..Database := XMLCollection.GetDatabaseComponent('Database'); Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle'; Qry.Prepare; Qry.SetParamType('pCle','VARCHAR'); Qry.SetParamAsString('pCle',Context.Values['MaValeur']); Qry.Open traitements finally FreeAndNil(qry); end; end;
__________________
Renaud W2003 / XP /VISTA SQL SERVER / ORACLE ADO |
|
|
00
|
|
|
#4 |
|
Membre régulier
![]() Inscription : janvier 2003 Messages : 85 ![]() |
Le fait que tu fasses un FreeAndNil libère les ressources allouées à la Query. TU dois absoluement rajouter le Qry.Close; pour fermer correctement ta connection. Je pense que ca résoudra ton problème.
__________________
Julien C. |
|
|
00
|
|
|
#5 |
|
Membre régulier
![]() |
ok, j'essaie ça de suite !
__________________
Renaud W2003 / XP /VISTA SQL SERVER / ORACLE ADO |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() |
Le destructeur (appelé par FreeAndNil) appelle Close, donc ca devrait etre bon
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() |
dommage .... mais cela ne m'étonne qu'à moitié, car le pb survient en fin de journée (alors que les 300 curseurs on t déjà été utilisés) donc, les curseurs sont bien fermés quasiment tout le temps ....
__________________
Renaud W2003 / XP /VISTA SQL SERVER / ORACLE ADO |
|
|
00
|
|
|
#8 |
|
Membre Expert
![]() |
Peut etre qu'ADO garde des curseurs en "cache", ou bien c'est peut etre Oracle, difficile de dire la.
tu peux essayer de te déconnecter et de te reconnecter à la base Oracle pour voir si ca libère des choses....
__________________
RDM Tout Est Relatif Rubrique XMLRAD: http://xmlrad.developpez.com FAQ XMLRAD: http://xmlrad.developpez.com/faq/ |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com