Recorset annidati

venerdì 10 novembre 2006 - 17.26

6969 Profilo | Junior Member

Sto provando a lavorare con 2 recordset uno annidato nell'altro, cioè prima devo leggere i dati in una tabella e volta per volta li devo inserire in un altra:

sqlDataSelect1 = New System.Data.SqlClient.SqlCommand("SELECT .... , connessione)
recordsetData1 = sqlDataSelect.ExecuteReader()

While recordsetData1.Read()
sqlDataInsert2 = New System.Data.SqlClient.SqlCommand("insert into .... , connessione)
.....
sqlDataInsert2.ExecuteNonQuery()
End While

recordsetData1.Close()
sqlDataInsert2.Close()
connMedtronic.Close()

però ottengo l'errore:

ERRORE: System.InvalidOperationException: There is already an open DataReader associated with this Connection which must be closed first.

è possibile secondo voi fare una cosa di questo tipo??
grazie per qualsiasi consiglio
ciao
ale

alx_81 Profilo | Guru

>Sto provando a lavorare con 2 recordset uno annidato nell'altro,
>cioè prima devo leggere i dati in una tabella e volta per volta
>li devo inserire in un altra:
>
>però ottengo l'errore:
>
>ERRORE: System.InvalidOperationException: There is already an
>open DataReader associated with this Connection which must be
>closed first.

Questo perchè ad una connessione può essere associato un solo datareader, poichè rimane connesso, non "si stacca" dalla connessione.. se chiudi la connessione allora puoi creare un altro datareader, ma non puoi comunque nidificarli..
Per fare quello che vuoi ottenere, seguendo la tua logica, dovresti farti un datatable esterno, poichè il datatable è invece disconnesso..
per ogni riga del datatable, esegui il comando di insert come già fai..
in poche parole, il ciclo va fatto su un datatable (creato tramite un sqldataadapter relativo al sqlcommand), non su un datareader..

Se però la tua logica impone di inserire ogni riga di una select all'interno di una tabella, senza applicare logiche particolari per riga (potrebbe essere proprio quello che fai nella parte di codice omessa), ti consiglio di usare un solo statement SQL, facendo una

INSERT Tabella1
SELECT campi FROM Tabella2
...

Ciao!

Alx81 =)

http://blogs.dotnethell.it/suxstellino

6969 Profilo | Junior Member

grazie per il consiglio
ci provo e ti faccio sapere
ciao
alessandro
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5