Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
ASP.NET 1.0/1.1
Recorset annidati
venerdì 10 novembre 2006 - 17.26
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
6969
Profilo
| Junior Member
88
messaggi | Data Invio:
ven 10 nov 2006 - 17:26
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
8.814
messaggi | Data Invio:
ven 10 nov 2006 - 21:48
>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
88
messaggi | Data Invio:
sab 11 nov 2006 - 17:06
grazie per il consiglio
ci provo e ti faccio sapere
ciao
alessandro
Torna su
Stanze Forum
Elenco Threads
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 !