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
App. WinForms / WPF .NET
Ado.net - gestione di un Datareader
venerdì 09 aprile 2004 - 17.07
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
trinity
Profilo
| Guru
3.303
messaggi | Data Invio:
ven 9 apr 2004 - 17.07
Ragazzi sto utilizzando la tecnologia Ado.net con database mysql e quindi per la connessione ad esso utilizzo ODBCNET, mi capita una cosa stranissima, devo fare una select di una tabella e e nel ciclo while datareader.read devo fare un insert, ora vi posto il mio codice perchè mi esce il seguente errore: "Alla connessione è già associato un datareader aperto, che deve essere chiuso". Come vedrete nel mio codice il datareader non può essere chiuso perchè da esso attingo i dati per l'insert che devo fare, altr persone mi dissero che dovevo creare una nuova connessione al database e appoggiare la seconda commnad a questa connessione, a mio parere è squallido farlo...Mi potete aiutare a capire e risolvere questo problema?
CODICE:
Dimconn As New OdbcConnection()
conn.ConnectionString = "DSN=hmanager"
conn.Open()
Dim sql As String
sql = "DELETE FROM stampaschedine"
Dim cmd As New OdbcCommand(sql, conn)
cmd.ExecuteNonQuery()
'----------------------------------------------
cmd.CommandText = "SELECT * FROM gestcliente WHERE codice='1'" & "ORDER BY codice,progschedina,cod_alloggiato,cognome,nome"
Dim read As OdbcDataReader = cmd.ExecuteReader()
Dim sql1 As String
While read.Read()
Try
sql1 = "INSERT INTO stampaschedine(codice,data_elaborazione,progschedina,tipo_alloggiato,data_arrivo,cognome,nome,sesso,data_nascita,luogo_nascita,comune_nascita,prov_nascita,cittadinanza,luogo_residenza,prov_residenza,stato_residenza,documento,ndoc,luogo_doc,stato_doc) VALUES ('" & read.GetValue(read.GetOrdinal("codice")) & "','" & read.GetValue(read.GetOrdinal("data_elaborazione")) & "','" & read.GetValue(read.GetOrdinal("progschedina")) & "','" & read.GetValue(read.GetOrdinal("tipo_alloggiato")) & "','" & read.GetValue(read.GetOrdinal("data_arrivo")) & "','" & Replace(read.GetValue(read.GetOrdinal("cognome")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("nome")), "'", "''") & "','" & read.GetValue(read.GetOrdinal("sesso")) & "','" & read.GetValue(read.GetOrdinal("data_nascita")) & "','" & Replace(read.GetValue(read.GetOrdinal("luogo_nascita")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("comune_nascita")), "'", "''") & "','" & read.GetValue(read.GetOrdinal("prov_nascita")) & "','" & Replace(read.GetValue(read.GetOrdinal("cittadinanza")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("luogo_residenza")), "'", "''") & "','" & read.GetValue(read.GetOrdinal("prov_residenza")) & "','" & Replace(read.GetValue(read.GetOrdinal("stato_residenza")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("documento")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("ndoc")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("luogo_doc")), "'", "''") & "','" & Replace(read.GetValue(read.GetOrdinal("stato_doc")), "'", "''") & "')"
Dim MySqlcmd As New OdbcCommand(sql1, conn)
MySqlcmd.ExecuteNonQuery()
MySqlcmd.Connection.Close()
Catch
MsgBox(Err.Description, MsgBoxStyle.Critical, "Hotel Manager")
End Try
End While
cmd.Connection.Close()
conn.Close()
Brainkiller
Profilo
| Guru
7.992
messaggi | Data Invio:
ven 9 apr 2004 - 20.57
E' squallido ma è l'unica soluzione possibile.
O chiudi il primo datareader oppure crei una nuova connessione e un nuovo Command.
Invece di usare ODBC .NET utilizza il provider MySql, che è molto meglio.
ciao
david
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 !