Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45

    [vb.net] da xml a database

    Salve a tutti

    avrei una domanda da porvi

    ho un porblema di approccio al linguaggio vb.net e a tutto il framework...

    più o meno ho capito come funziona ado.net ma ancora ho dei dubbi

    vi spiego

    ho dei dati in un file xml provenienti da una sorgente li carico in un dataset e qui tutto ok

    adesso dovrei scaricare questi dati (sono due o tre tabelle) in un database avente la stessa struttura delle tre tabelle...

    come fare mi sono bloccato ...

    xml ---> dataset Tabella [ Agenti ] --> database Azienda --> tabella [Agenti]

    ho vari libri ma un problema simile o quasi non è trattato --> si limitano solo a visualizzazioni dei dati e a esempi poco produttivi...

    che seccatura e che delusione --> uno spende centinai di euro per dei libri pieni di esempi scolastici...

    ho visto anche sul sito msdn ma sempre li solo esempi "classici"

    ecco perchè dico che si tratta di un problema di approccio --->
    con asp la cosa è molto più lineare e forse anche con asp.net --> ma in vb.net è necessario conoscere molte più funzioni...

    Comunque se qualcuno può aiutarmi ...
    Grazie anticipatamente...

  2. #2
    Per aggiornare un db con i dati provenienti da un dataset puoi ricorrere ad un datadapter ed utilizzare in particolare la funzione Update del dataadapter. Il dataadapter e' l'oggetto che ti permette di collegare il dataset al database sia per leggere che per modificare i dati.
    Un esempio su msdn
    http://msdn.microsoft.com/library/de...mmandtopic.asp
    Saluti a tutti
    Riccardo

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Grazie per la risposta

    scusa potresti essere più chiaro a quel link non ho trovato quello che tu dici...

    ciao

  4. #4
    si, in effetti il link viene copiato male. Cmq, puoi scrivere su msdn.microsoft.com nella textbox di ricerca la parola
    sqldataadapter.update
    la seconda voce che ti viene fuori corrisponde al link che ti avevo indicato

    In ogni caso, la procedura descritta e' ben documentata. Il dataadapter e' il collegamento tra il dataset e il db. Per poter aggiornare i dati nel db attraverso il dataadapter e' necessario valorizzare correttamente i suoi command con le query di aggiornamento. Supponiamo che utilizzi sql-server e quindi gli oggetti contenuti nel namespace System.Data.SqlClient
    codice:
    Dim m_dap As SqlDataAdapter
                Dim m_ds As DataSet
    
                m_dap = New SqlDataAdapter("SELECT * FROM Clienti", "connectionstring")
                m_ds = New DataSet
                m_dap.Fill(m_ds, "Clienti")
    
                ' Dopo aver aggiunto un nuovo record alla tabella
                ' provvedo a preparare il dataadapter per aggiornare il db
                m_dap.InsertCommand.CommandText = "INSERT INTO Clienti (Nome, Cognome) VALUES (@nome, @cognome)"
                m_dap.InsertCommand.Parameters.Add("@cognome", SqlDbType.VarChar).Value = "Ciccio"
                m_dap.InsertCommand.Parameters.Add("@nome", SqlDbType.VarChar).Value = "Mariano"
                ' Aggiorno il db
                m_dap.Update(m_ds, "Clienti")
    Con il codice appena descritto e' possibile effettuare l'inserimento delle nuove righe nel db. Se nel dataset hai invece dei campi con delle modifiche allora dovrai preparare allo stesso modo l'updatecommand del dataadapter.
    Saluti a tutti
    Riccardo

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Grazie per la risposta

    Ma ho un dubbio

    il tuo esempio va bene per inserire dei nuovi dati in un database

    ma nel mio caso devo caricare tutti i dati contenuti in un dataset così come sono in una tabella del db

    come setto il DataAdapter per l'inserimento?

  6. #6
    Per facilitarti il lavoro, puoi ricorrere alla generazione del dataadapter con il wizard di visual studio che automaticamente ti setta tutti e 4 i command
    insertcommand
    updatecommand
    deletecommand
    selectcommand
    per usare il dataadapter configuration wizard basta che aggiungi alla tua form un dataadapter prendendolo dalla toolbox/data e segui le istruzioni. Dopo averlo creato potrai verificare il codice automaticamente inserito nei command che ti ho indicato, modificarlo e comunque prenderlo come traccia per imparare.
    Saluti a tutti
    Riccardo

  7. #7
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    grazie ora provo

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    non si può fare

    siccome sto sviluppando una applicazione per pocket pc il bottone è disabilitato ---> quindi che mi consigli di fare?

  9. #9
    Di documentarti di piu' sul dataadapter nell'utilizzo di applicazioni pocketpc.
    Non aspetterei di trovare la soluzione con dei post sul newsgroup anche perche' e' un argomento vasto e importante. In ogni caso, posso suggerti anche un'altra strada alternativa e cioe' quella di utilizzare un command senza dataadapter.
    In fondo il dataadapter non fa altro che eseguire un command (uno per le righe inserite, uno per quelle eliminate ecc.) per ogni riga presente nella datatable, quindi puoi fare la stessa cosa.
    es.
    codice:
    Dim m_cmd As SqlClient.SqlCommand
            Dim m_conn As SqlClient.SqlConnection
            
            Try
                m_conn = New SqlClient.SqlConnection("connectionstring")
                m_cmd = m_conn.CreateCommand
    
                m_cmd.CommandText = "INSERT INTO Clienti (Nome, Cognome) VALUES (@Nome, @Cognome)"
                m_cmd.Parameters.Add("@Nome", SqlDbType.VarChar)
                m_cmd.Parameters.Add("@Cognome", SqlDbType.VarChar)
                m_cmd.Prepare()
                m_conn.Open()
                For Each _dr As DataRow In m_ds.Tables("Clienti").Rows
                    m_cmd.Parameters("@Nome").Value = _dr("Nome")
                    m_cmd.Parameters("@Cognome").Value = _dr("Cognome")
                    m_cmd.ExecuteNonQuery()
                Next
            Finally
                m_conn.Close()
            End Try
    Saluti a tutti
    Riccardo

  10. #10
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    45
    Grazie per la risposta

    Ovviamento non cerco la soluzione dei forum ma se leggi il mio primo post noterai che dicevo "si tratta di un problema di approccio" con il linguaggio - perchè ci sono 1000 o più modi per fare una semplice cosa...!!! ( quindi non mi servono codici ma eventualmente dei link da cui posso trarre info che mi possono sbloccare!!! che non siano "msdn confusionari")

    Allora noto che ancora non hai capito la mia domanda...

    Spero di essere più chiaro...

    ecco il codice che sto usando

    codice:
    previa lettura del xml in ds
    
    Dim cn As SqlCeConnection = New SqlCeConnection("connessione")
    Dim commandBuilder As SqlCeCommandBuilder
    Dim MyDataAdapter As New SqlCeDataAdapter
    commandBuilder = New SqlCeCommandBuilder(MyDataAdapter)
    MyDataAdapter.Update(ds)<-- errore
    l'emulatore mi da il seguente errore : Upadate non è in grado di trovare TableMapping['Table'] o DataTable 'Table'

    Premetto che la struttura del dataset è identica a quella della tabella del db.

    Tu nel codice che hai postato, per come ho capito, scandisci in un ciclo le righe del ds e le inserisci nel db -- > ma la cosa è molto lenta e poi nel caso ci fossero migliaia di record ?

    Vediamo se possiamo arrivare a una conclusione, così da lasciare agli utenti del forum del buon materiale da cui partire...

    Grazie

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.