2009-10-06 7 views
0

Salut, je continue à obtenir l'erreur:sql Erreur serveur - 3709

Erreur (3709) - /mysite/Pages_Secure/mypage.asp ADODB.Recordset.

« La connexion ne peut pas être utilisé pour effectuer cette opération. Il est soit fermé ou non valide dans ce contexte .. »

strQuery = "" 
strQuery = strQuery + "SET ROWCOUNT 0 " 
strQuery = strQuery + "SELECT FIRSTNAME, LASTNAME, EMAIL, USER_TEAM_ID, USER_SERVICE_ID, USER_DIRECTORATE_ID " 
strQuery = strQuery + "FROM Web_Users " 
strQuery = strQuery + "WHERE USER_ID = '" + Cstr(lOwnerID) + "'" 

CALL subOpenConnection("", "") 

Set RS = Server.CreateObject("ADODB.RecordSet") 

RS.Open strQuery, objDBConnection 

erreur se produit ici après l'ouverture ....

SUB subOpenConnection(strErrorPage, strErrorQueryArguments) 

    Set objDBConnection = Server.CreateObject("ADODB.Connection") 

    objDBConnection.ConnectionTimeout = Application("ConnectionTimeout") 
    objDBConnection.CommandTimeout = Application("CommandTimeout") 
    objDBConnection.CursorLocation = Application("CursorLocation") 
    objDBConnection.Open Application("ConnectionString") 

END SUB 

Des idées?

+0

Ce code est vulnérable à l'injection sql –

Répondre

1

Je pense que c'est parce que vous utilisez SUB plutôt que FUNCTION. Le sous ne retournera pas l'objet de connexion (c'est pourquoi vous obtenez une erreur qu'il est fermé), alors qu'une fonction peut retourner l'objet de connexion. Ce sous-marin fonctionne-t-il ailleurs? Ou est-ce la seule fois où il est utilisé?

+0

c'est la chose, il est utilisé elsewere .... – thegunner

+0

La seule autre chose que je pourrais penser est de supprimer l'ensemble rowcount de la chaîne SQL parce que je serais normalement courir quelque chose comme ça dans un proc stocké. J'ai toujours pensé que ADO ne serait pas capable de faire plus de 1 déclaration par jeu d'enregistrements. –

0

ok réussi à obtenir ce travail ... ne me souviens pas très bien comment - mais était quelque chose que j'avais raté! D'oh!