Bonjour,
Je sais pas trop si je suis au bon endroit, mais j'ai une problématique et j'aimerais savoir si vous avez déjà eu ce cas et si oui si vous avez une solution.
Pour un projet de conversion de donnée je me connecte a une base SQL 2008 R2.
Ma problématique est que lorsque j'arrive a mon second DataReader (instruction ligne 12) j'obtiens l'erreur suivant
Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.C'est en théorie normal, vu que mon DataReader n'est pas fermé. Je pourrais obtenir mon premier résultat dans une liste. Puis recommencer le traitement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 Using ludikDB As New SqlConnection(connexionString) ludikDB.Open() Dim rp As SqlDataReader = (New SqlCommand(String.Format(qry, personFields), ludikDB)).ExecuteReader() While rp.Read() Dim pId As Integer = rp.GetInt32(0) qry = <sql>SELECT p.id, t.TEL FROM TEL t LEFT JOIN [dbo].PERSON_ID p ON t.NO_CLE_TEL=p.no_pers WHERE t.PROV_TEL=3 AND p.id=<%= pId %></sql>.Value Dim rphones As SqlDataReader = (New SqlCommand(qry, ludikDB)).ExecuteReader() While rphones.Read() person.Phones.Add(New ImportedPerson.ImportedPhone() With { .number = rphones.GetString(2), .category = rphones.GetInt32(1), .correspondance = (person.Phones.Count = 0) }) End While rphones.Close() {...} End While End Using
Cependant, si je passe la même BD sous SQL Server 2012, le même code passe sans aucun problème ? Est-ce dû a une configuration quelconque que je pourrais setter sous 2008 R2 ? Ou est-ce seulement que 2012 effectue le traitement d'une manière différentes?
Partager