Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881

    vb - insert da datareader

    mi sfugge qualcosa...

    ho un datareader DR dal quale devo prendere (con un ciclo while) i vari record e utilizzarne i campi per fare degli inserimenti in un'altra tabella.... una cosa così + o -:

    while DR.read()
    comando.commandtext = "INSERT INTO tabella (campo1, campo2) VALUES (" & DR.item("col1") & "," & DR.item("col1") & ")"
    comando.connection = cn
    cn.open()
    comando.executenonquery()
    cn.close()
    end while


    si può? mi dice di no...
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  2. #2

    Re: vb - insert da datareader

    Originariamente inviato da supermac
    si può? mi dice di no...
    non e' che cn e' la stessa connection utilizzata dal datareader? In questo caso, e' il datareader che la sta utilizzando e quindi la tiene occupata finche non chiudi il datareader. Devi utilizzare una nuova connection.
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    è tragicamente così! magico riccardone!

    a questo punto la nuova connessione cn2 me la apro e chiudo fuori dal ciclo while: nel ciclo ridefinisco solo il commandtext e lancio l'executenonquery, forse è più veloce che ne dici?
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  4. #4
    Originariamente inviato da supermac
    a questo punto la nuova connessione cn2 me la apro e chiudo fuori dal ciclo while: nel ciclo ridefinisco solo il commandtext e lancio l'executenonquery, forse è più veloce che ne dici?
    Puoi anche guardare la documentazione del comando Prepare del command che forse nel tuo codice, chiamato prima del ciclo, potrebbe velocizzare il tutto.
    Aggiungo che il commandtext lo prepari prima del ciclo. Dentro il ciclo non fai altro che modificare i parametri dell'sql.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    grazie rik, mi sopravvaluti :-)
    non vorrei aggiungere casino al casino che ho in testa: è già tanto se riesco a usare i parametri (che non ho mai usato), per cui mi guardo il Prepare ma non so se riesco a usarlo!!!

    dovrebbe diventare + o - così secondo le tue indicazie:

    comando.commandtext = "INSERT INTO tabella (campo1, campo2) VALUES ( ?col1 , ?col2 )"
    comando.connection = cn2
    cn2.open()

    while DR.read()
    comando.Parameters.Add("?col1", OdbcType.VarChar, 5).Value = DR.item("campo1")
    comando.Parameters.Add("?col2", OdbcType.VarChar, 8).Value = DR.item("campo2")
    comando.executenonquery()
    end while

    cn2.close()



    è corretto? (sto andando via ODBC su un db parente di MySQL)

    domanda:
    l'Add che uso per valorizzare i parametri serve anche a ridefinirli o devo in qualche modo "svuotare i valori dei parametri" definiti nel ciclo precedente? (spero di essere riuscito a farmi capire)

    grazie
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  6. #6
    Originariamente inviato da supermac
    ...per cui mi guardo il Prepare ma non so se riesco a usarlo!!!
    prima del ciclo per usarlo basta fare
    codice:
    comando.Prepare
    ma serve solo per ottimizzare l'esecuzione ripetuta dello stesso comando quindi ne puoi fare anche a meno.
    Il codice dovrebbe essere cosi modificato
    ....
    comando.Parameters.Add("?col1", OdbcType.VarChar, 5)
    comando.Parameters.Add("?col2", OdbcType.VarChar, 8)
    comando.Prepare
    while DR.read()
    comando.Parameters("?col1").Value = DR.item("campo1")
    comando.Parameters.Add("?col2").Value = DR.item("campo2")
    comando.executenonquery()
    end while
    ....
    Saluti a tutti
    Riccardo

  7. #7
    Controlla la sintassi dei parametri odbc perche' non mi sembra che sia corretta. Il segno ? mi sembra sia usato da OleDb mntre Odbc usa @. Ma potrei sbagliarmi quindi controlla.
    Saluti a tutti
    Riccardo

  8. #8
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    l'help del visualstudio .NET è a dir poco esilarante:
    come segnaposto dice di usare ? sia per odbc che per oledb e poi nell'esempio mette @ ovunque!!!!!

    fossi bill gates farei una spremuta di maroni a chi ha fatto quel'help!

    ora farò un po' di prove
    intanto grazie al quadrato rik!
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

  9. #9
    Utente di HTML.it L'avatar di Aki
    Registrato dal
    Dec 2002
    Messaggi
    2,206
    il parametro per OleDb è ?param
    per ODBC è @param
    per Oracle è aram

  10. #10
    Utente di HTML.it L'avatar di supermac
    Registrato dal
    Jun 2001
    Messaggi
    1,881
    avevo già appurato, grazie comunque
    W la Ferari effetrenavenave!
    il computer è un somaro veloce! (neanche tanto ndr)

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.