Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117

    [VB.Net 2008] - Fillare il database col dataset

    Personalmento ho sempre usato i Comand e i Datareader per scrivere, leggere il mio DB.
    E' un metodo abbastanza "noioso" anche se molto più dettagliato come codice e ho notato che spesso rimangono cosettine "pendenti".

    Ho deciso così di passare ai Dataset (il mio nuovo database ha 13 tabelle ricche di campi e non ho proprio voglia di stressarmi :P)

    Uso i dataAdapter e il comando da.Fill per fillare il mio dataSet in un colpo solo tabella per tabella! Il che è molto comodo (oltre al fatto che il DS lo posso usare come dataSource).

    Il problema nasce quando devo fare l'inverso!

    Ovvero a seguito delle mie "manipolazioni" col mio software sui record del mio DS vorrei poter (senza diventare scema) poter aggiornare il mio database col dataset.

    Fare la cosa inversa insomma!

    Esiste un comando tipo Da.Fill ma al contrario? (che Popoli il mio db dal ds e non viceversa?)

    Grazie!

  2. #2
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    Il metodo esiste si chiama update del dataset.
    Devi definire un oggetto di tipo dataadapter per ogni tabella che vuoi aggiornare.
    Popolare manualmente o automaticamente i comandi di insert update delete e select.
    Una volta che hai configurato correttamente il dataadapter puoi eseguire il metodo update passando come argomento il dataset o la datatable.
    Di solito queste cose sono contenute nei capitoli introduttivi di ado.net.

  3. #3
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    scusa la mia ignoranza...che intendi per popolare manualmente?
    Cioè...con da.fill in realtà fa tutto da solo ma non credo il metodo update agisca allo stesso modo!
    Puoi farmi un esempio? Avevo già spulciato un po il metodo update ma non ci ho capito moltissimo...

    Se devo fare "a mano" a quel punto uso il command no?

  4. #4
    Utente di HTML.it
    Registrato dal
    May 2011
    Messaggi
    119
    Ci sono sostanzialmente 2 modi per popolare da codice un dataadapter.
    Il primo è automatico
    codice:
     
    Dim myConnection As New OleDbConnection("stringa connessione")
    'Definisci un nuovo oggetto di tipo dataadapter
    Dim da As New OledbDataAdapter("SELECT * FROM mytable",myconnection)
    'Popoli i 4 command del dataadapter tramite un CommandBuilder a cui passi il dataadapter
    Dim cm As New OleDbCommandBuilder(da)
    A questo punto siamo pronti per tutti i comandi sul dataset tra cui fill e update

    Metodo 2
    codice:
     
    Dim myConnection As New OleDbConnection("stringa connessione")
    'Definisci un nuovo oggetto di tipo dataadapter
    Dim da As New OledbDataAdapter("SELECT * FROM mytable",myconnection)
    A questo punto tramite codice inserisci tutti i command e i relativi parametri
    Dim cm As New OleDbCommand("UPDATE ...",myconnection)
    cm.Parameters.Add(new oledbparameter ...)
    cm.Parameters.Add(new oledbparameter ..)
    ..
    da.UpdateCommand = cm
    [/code]
    Da ripetere per INSERT DELETE E UPDATE (SELECT non serve se l'hai definito durante la creazioone).

    dopo aver popolato il dataset/datatable puoi passare a inserire / variare / cancellare datarows (collection del datatable), il dataset "conserva" la memoria delle righe che sono state inserite / variate modificate

    Tramite il metodo UPDATE del dataadapter ottieni che (se hai lavorato bene) il database sia aggiornato con le rows e i dati aggiornati (le righe unchanged non vengono toccate).
    La cosa più importante per ottenere l'aggiornamento del database è che NON bisogna dare il comando "acceptchanges" perchè questo comando dice in parole povere "imposta lo stato delle righe come unchanged perchè non voglio aggiornare il database"

  5. #5
    Utente di HTML.it L'avatar di Veronica80
    Registrato dal
    May 2006
    Messaggi
    2,117
    Mmmm credo di aver capito!
    Però sinceramente non vedo grossi vantaggi nell'usare il dataset piuttosto che il classico comand fatto a mano...

    Anzi mi sa che è più intricato col dataset xD

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 © 2025 vBulletin Solutions, Inc. All rights reserved.