Il y a déjà un DataReader ouvert associé à cette Commande, qui doit d'abord être fermés
C'est le code que j'ai.
///<summary>
///Method calls stored procedure and fills DataSet of contacts associated with Lead
///</summary>
///<param name="leadID">The ID associated with a Lead</param>
///<returns>contacts list as DataSet</returns>
public static DataSet GetContactResultSetByLead(int leadID)
{
SqlCommand Sqlmd = new SqlCommand("dbo.proc_contact");
Sqlmd.CommandType = CommandType.StoredProcedure;
Sqlmd.Parameters.Add("@LeadInfoID", SqlDbType.Int).Value = leadID;
Sqlmd.Connection = m_ConStr;
SqlDataAdapter da = new SqlDataAdapter(Sqlmd);
DataSet data = new DataSet();
try
{
da.Fill(data);
}
finally
{
m_ConStr.Close();
}
return data;
}
Qu'est-ce que
modifiez cette ligne Sqlmd.Les paramètres.Add("@LeadInfoID", SqlDbType.Int).Valeur = leadID; Sqlmd.Les paramètres.AddWithValue("@LeadInfoID", leadID); Si vous voulez garder le Mondial de vous Connecter, Vérifiez l'État de la Connexion s'ouvrir et de la fermer avant de l'utiliser. RESTRUCTURER LE CODE ET L'UTILISATION SIGNIFICATIVE DES NOMS DE VARIABLES....! Enveloppez votre Connexion autour d'une aide() {}
Sqlmd sera exécuté au cours de la da.Remplir appel. m_ConStr semble être un mal nommée variable, il semble faire référence à la connexion en elle-même, et non pas la chaîne de connexion.
m_ConStr
?modifiez cette ligne Sqlmd.Les paramètres.Add("@LeadInfoID", SqlDbType.Int).Valeur = leadID; Sqlmd.Les paramètres.AddWithValue("@LeadInfoID", leadID); Si vous voulez garder le Mondial de vous Connecter, Vérifiez l'État de la Connexion s'ouvrir et de la fermer avant de l'utiliser. RESTRUCTURER LE CODE ET L'UTILISATION SIGNIFICATIVE DES NOMS DE VARIABLES....! Enveloppez votre Connexion autour d'une aide() {}
Sqlmd sera exécuté au cours de la da.Remplir appel. m_ConStr semble être un mal nommée variable, il semble faire référence à la connexion en elle-même, et non pas la chaîne de connexion.
OriginalL'auteur Marcus3329 | 2012-01-26
Vous devez vous connecter pour publier un commentaire.
Votre problème est que vous ne semblent avoir qu'une seule instance de
m_ConStr
; si la méthode est appelé en même temps un seul d'entre eux sera en mesure d'utiliser la connexion et l'autre échouera avec l'exception que vous recevez.Utiliser ce modèle à la place:
En d'autres termes, ne pas définir les paramètres de connexion comme une variable globale à la classe.
OriginalL'auteur Icarus
Tous de votre de courte durée IDisposable objets sont dépourvus d'une "aide". Par extension, il est alors possible que vous avez fait quelque chose comme:
Mais cela ne jetez pas /fermer le lecteur. Si c'est le cas, ajouter "à l'aide":
Qui ferme le lecteur, indépendamment de la façon dont nous quitter. Les commandes, les connexions, les lecteurs et les transactions sont tous à usage unique et doit normalement utiliser "utiliser".
OriginalL'auteur Marc Gravell
je suggère que Vous pouvez à l'aide de bloc pour assurer une bonne élimination de sqlconnection.
l'autre manière est que vous pouvez également définir des MARS de propriété en votre connexion, si vous avez besoin.
c'est également une bonne idée:) ok pour le modifier 🙂
OriginalL'auteur Ravi Gadag
Que vous essayez d'exécuter de multiples active des ensembles de résultats (aka MARS).
Deux solutions me viennent à l'esprit:
OriginalL'auteur RQDQ