Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > Outils > XMLRAD
XMLRAD Environnement de développement Web XML/XSL. Avant de poster -> F.A.Q XMLRAD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/07/2003, 09h45   #1
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
Par défaut pb curseurs ....

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
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 11h13   #2
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
Bon passons sur le fait que de faire des requêtes à la main ne soit pas la meilleure chose

le code correct serait:
Code :
1
2
3
4
5
6
7
8
9
10
11
 
  Qry.SQL.text := 'SELCT * FROM FICHIER WHERE CLE=:pCle'; 
  Qry.Prepare; 
  Qry.SetParamType('pCle','VARCHAR'); 
  Qry.SetParamAsString('pCle',Context.Values['MaValeur']); 
  Qry.Open; 
  try
   MyField := Qry.GetFieldAsString('AField');
  finally
    Qry.Close;
  end;
Ne JAMAIS oublier de fermer un curseur en fermant la Query.
__________________
RDM
Tout Est Relatif
Rubrique XMLRAD: http://xmlrad.developpez.com
FAQ XMLRAD: http://xmlrad.developpez.com/faq/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 11h29   #3
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
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
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 12h41   #4
Membre régulier
 
Inscription : janvier 2003
Messages : 85
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 85
Points : 92
Points : 92
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.
Julien C. est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 14h25   #5
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
ok, j'essaie ça de suite !
__________________
Renaud
W2003 / XP /VISTA
SQL SERVER / ORACLE
ADO
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 14h58   #6
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 15h01   #7
Membre régulier
 
Inscription : janvier 2003
Messages : 207
Détails du profil
Informations forums :
Inscription : janvier 2003
Messages : 207
Points : 94
Points : 94
Envoyer un message via MSN à rgarnier
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
rgarnier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/07/2003, 15h09   #8
RDM
Membre Expert
 
Inscription : mars 2002
Messages : 1 426
Détails du profil
Informations forums :
Inscription : mars 2002
Messages : 1 426
Points : 1 546
Points : 1 546
Envoyer un message via ICQ à RDM
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/
RDM est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 05h24.


 
 
 
 
Partenaires

Hébergement Web