mon problème est que je vais lire des enregistrements dans la db, j'ouvre donc un reader, je parcour ce reader et je dois inserer ces données dans une table.
Mais il refuse de faire mon myCommand3.ExecuteNonQuery() parceque j'ai un reader d'ouvert ... mais j'ai besoin de ce reader vu qu'il contient les infos que je dois inserer
voici l'exception
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
24
25
26
27
28
29
30 Try cnn.Open() myCommand = New SqlCommand("DELETE FROM A_fait_temp", cnn) myCommand.ExecuteNonQuery() myCommand2 = New SqlCommand(str_query, cnn) Dim myReader As SqlDataReader = myCommand2.ExecuteReader() myCommand3 = New SqlCommand("", cnn) If myReader.HasRows <> False Then Do While myReader.Read() myCommand3.CommandText = "INSERT INTO A_fait_temp (Heures,Nom) VALUES (@h,@n)" With myCommand3.Parameters .Add(New SqlParameter("@h", SqlDbType.Int, 0)) .Add(New SqlParameter("@n", SqlDbType.Char, 0)) End With With myCommand3 .Parameters("@h").Value = myReader.GetValue(0) .Parameters("@n").Value = myReader.GetValue(1) End With myCommand3.ExecuteNonQuery() Loop End If Catch ex As Exception px.Text = ex.ToString End Try
Comment faire ?System.InvalidOperationException: Un DataReader associé à cette commande est déjà ouvert. Il doit d'abord être fermé.
à System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
à System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
à System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
à System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe)
à System.Data.SqlClient.SqlCommand.ExecuteNonQuery()
à WebApplication6.WebForm1.Calcule() dans C:\Users\u028513.AI\Documents\Visual Studio 2008\Projects\WebApplication6\WebApplication6\Occupation.aspx.vb:ligne 111
Merci d'avance
Partager