Condividi tramite


Procedura: aggiornare record in un database

Aggiornamento: novembre 2007

È possibile utilizzare il metodo TableAdapter.Update per aggiornare (modificare) i record in un database. Nel metodo TableAdapter.Update sono forniti diversi overload che consentono di eseguire operazioni differenti a seconda dei parametri in cui sono passati. È importante conoscere i risultati delle chiamate alle diverse firme di metodo.

Nota:

Se nell'applicazione non sono utilizzati TableAdapter, sarà possibile utilizzare oggetti Command per aggiornare i record nel database personalizzato (ad esempio, ExecuteNonQuery). Per ulteriori informazioni sull'aggiornamento dei dati mediante oggetti Command, vedere la sezione "Aggiornamento dei record mediante oggetti Command", di seguito.

Nella tabella riportata di seguito viene descritto il comportamento dei vari metodi TableAdapter.Update:

Metodo

Descrizione

TableAdapter.Update(DataTable)

Prova a salvare nel database tutte le modifiche apportate all'oggetto DataTable. Tali modifiche includono la rimozione delle righe eliminate dalla tabella, l'aggiunta delle righe inserite nella tabella e l'aggiornamento delle righe modificate nella tabella.

TableAdapter.Update(DataSet)

Sebbene un parametro accetti un dataset, il TableAdapter tenta di salvare sul database tutte le modifiche presenti nell'oggetto DataTable associato al TableAdapter. Tali modifiche includono la rimozione delle righe eliminate dalla tabella, l'aggiunta delle righe inserite nella tabella e l'aggiornamento delle righe modificate nella tabella.

Nota:

Un oggetto DataTable associato al TableAdapter rappresenta l'oggetto DataTable creato durante la configurazione originale del TableAdapter.

TableAdapter.Update(DataRow)

Prova a salvare nel database tutte le modifiche dell'oggetto DataRow indicato.

TableAdapter.Update(DataRows())

Prova a salvare nel database tutte le modifiche alle righe della matrice dell'oggetto DataRow.

TableAdapter.Update("new column values", "original column values")

Prova a salvare tutte le modifiche in una singola riga identificata dai valori di colonna originali.

In genere, si utilizza il metodo TableAdapter.Update che accetta un oggetto DataSet, DataTable oppure DataRow quando nell'applicazione i dataset sono utilizzati esclusivamente per memorizzare i dati.

In genere, si utilizza il metodo TableAdapter.Update che accetta valori di colonna quando nell'applicazione si utilizzano oggetti per memorizzare i dati.

Se nel TableAdapter non è presente un metodo Update che accetta valori di colonna, il TableAdapter è configurato per utilizzare le stored procedure oppure la relativa proprietà GenerateDBDirectMethods è impostata su false. Provare a impostare la proprietà GenerateDBDirectMethods del TableAdapter su true dalla Progettazione DataSet, quindi salvare il dataset per rigenerare il TableAdapter. Se, dopo tale procedura, nel TableAdapter non è ancora presente un metodo Update che accetta valori di colonna, è probabile che la tabella non fornisca informazioni di schema sufficienti per distinguere tra le righe singole (ad esempio, sulla tabella non è impostata alcuna chiave primaria).

Aggiornamento dei record esistenti mediante i TableAdapter

Nei TableAdapter sono forniti vari metodi per aggiornare i record in un database, a seconda dei requisiti dell'applicazione.

Se nell'applicazione sono utilizzati dataset per memorizzare i dati, è possibile aggiornare semplicemente i record nell'oggetto DataTable desiderato e quindi chiamare il metodo TableAdapter.Update e passare l'oggetto DataSet, DataTable o DataRow oppure la matrice degli oggetti DataRow. Nella tabella precedente sono descritti i diversi metodi Update.

Per aggiornare i record in un database con il metodo TableAdapter.Update che accetta DataSet, DataTable, DataRow o DataRows()

  1. Modificare i record nell'oggetto DataTable desiderato modificando direttamente l'oggetto DataRow nell'oggetto DataTable. Per ulteriori informazioni, vedere Procedura: modificare le righe in un oggetto DataTable.

  2. Dopo la modifica delle righe nell'oggetto DataTable, chiamare il metodo TableAdapter.Update. È possibile controllare la quantità di dati da modificare passando un oggetto DataSet intero, un oggetto DataTable, una matrice di oggetti DataRow oppure un oggetto DataRow singolo.

    Nel codice riportato di seguito viene illustrato come modificare un record in un oggetto DataTable e chiamare il metodo TableAdapter.Update per salvare le modifiche nel database. In questo esempio viene utilizzata la tabella Region del database Northwind.

    ' Locate the row you want to update.
    Dim regionRow As NorthwindDataSet.RegionRow
    regionRow = NorthwindDataSet._Region.FindByRegionID(1)
    
    ' Assign the new value to the desired column.
    regionRow.RegionDescription = "East"
    
    ' Save the updated row to the database
    Me.RegionTableAdapter.Update(Me.NorthwindDataSet._Region)
    
    // Locate the row you want to update.
    NorthwindDataSet.RegionRow regionRow;
    regionRow = northwindDataSet.Region.FindByRegionID(1);
    
    // Assign the new value to the desired column.
    regionRow.RegionDescription = "East";
    
    // Save the updated row to the database.
    this.regionTableAdapter.Update(this.northwindDataSet.Region);
    

Se nell'applicazione sono utilizzati gli oggetti per memorizzare i dati, è possibile utilizzare i metodi DBDirect del TableAdapter per inviare i dati dagli oggetti direttamente al database. Questi metodi consentono di passare i valori singoli per ciascuna colonna come parametri di metodo. Con la chiamata a questo metodo si aggiorna un record esistente nel database con i valori di colonna passati nel metodo.

Nella procedura riportata di seguito viene utilizzata come esempio la tabella Region Northwind.

Per aggiornare i record in un database utilizzando il metodo TableAdapter.Update che accetta valori di colonna.

  • Chiamare il metodo Update del TableAdapter passando i valori nuovi e originali per ciascuna colonna come parametri.

    Nota:

    Se non è presente alcuna istanza disponibile, creare un'istanza del TableAdapter da utilizzare.

    Dim regionTableAdapter As New NorthwindDataSetTableAdapters.RegionTableAdapter
    
    regionTableAdapter.Update(1, "East", 1, "Eastern")
    
    NorthwindDataSetTableAdapters.RegionTableAdapter regionTableAdapter = 
        new NorthwindDataSetTableAdapters.RegionTableAdapter();
    
    regionTableAdapter.Update(1, "East", 1, "Eastern");
    

Aggiornamento dei record mediante oggetti Command

Nell'esempio riportato di seguito vengono aggiornati i record esistenti direttamente in un database utilizzando oggetti Command. Per ulteriori informazioni sull'utilizzo di oggetti Command per eseguire comandi e stored procedure, vedere Recupero di dati nell'applicazione.

Nella procedura riportata di seguito viene utilizzata come esempio la tabella Region Northwind.

Per aggiornare i record esistenti in un database utilizzando oggetti Command

  • Creare un nuovo oggetto Command, impostarne le proprietà Connection, CommandType e CommandText, quindi aprire una connessione ed eseguire il comando.

    Dim sqlConnection1 As New System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING")
    
    Dim cmd As New System.Data.SqlClient.SqlCommand
    cmd.CommandType = System.Data.CommandType.Text
    cmd.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1"
    cmd.Connection = sqlConnection1
    
    sqlConnection1.Open()
    cmd.ExecuteNonQuery()
    sqlConnection1.Close()
    
    System.Data.SqlClient.SqlConnection sqlConnection1 = 
        new System.Data.SqlClient.SqlConnection("YOUR CONNECTION STRING");
    
    System.Data.SqlClient.SqlCommand cmd = new System.Data.SqlClient.SqlCommand();
    cmd.CommandType = System.Data.CommandType.Text;
    cmd.CommandText = "UPDATE Region SET RegionID = 1, RegionDescription = 'East' WHERE RegionID = 1";
    cmd.Connection = sqlConnection1;
    
    sqlConnection1.Open();
    cmd.ExecuteNonQuery();
    sqlConnection1.Close();
    

Sicurezza

È necessario disporre di un accesso al database a cui si tenta di connettersi e dell'autorizzazione all'aggiornamento dei record nella tabella desiderata.

Vedere anche

Attività

Procedura: eliminare record da un database

Procedura: inserire nuovi record in un database

Procedura: salvare dati da un oggetto in un database

Concetti

Cenni preliminari sugli oggetti TableAdapter

Altre risorse

Guida introduttiva all'accesso ai dati

Connessione ai dati in Visual Studio

Preparazione dell'applicazione al ricevimento di dati

Recupero di dati nell'applicazione

Visualizzazione di dati su form nelle applicazioni Windows

Modifica di dati nell'applicazione

Convalida dei dati

Salvataggio di dati