Procedura: aggiornare record in un database
È possibile utilizzare il metodo TableAdapter.Update per aggiornare (modificare) i record in un database. Il metodo TableAdapter.Update fornisce diversi overload che eseguono operazioni differenti a seconda dei parametri passati. È importante conoscere i risultati delle chiamate alle diverse firme del 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. |
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 archiviare i dati, è possibile aggiornare semplicemente i record nell'oggetto DataTable desiderato, quindi chiamare il metodo TableAdapter.Update e passare l'oggetto DataSet, DataTable, DataRow oppure la matrice di 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()
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.
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 [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID" cmd.Parameters.AddWithValue("@RegionDescription", "East") cmd.Parameters.AddWithValue("@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 [RegionDescription] = @RegionDescription WHERE [RegionID] = @RegionID"; cmd.Parameters.AddWithValue("@RegionDescription", "East"); cmd.Parameters.AddWithValue("@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
Associazione di controlli ai dati in Visual Studio
Altre risorse
Cenni preliminari sulle applicazioni dati in Visual Studio
Connessione ai dati in Visual Studio
Preparazione dell'applicazione al ricevimento di dati
Recupero di dati nell'applicazione
Modifica di dati nell'applicazione
Cronologia delle modifiche
Data |
Cronologia |
Motivo |
---|---|---|
Settembre 2010 |
Rivisto l'ultimo esempio di codice per utilizzare i parametri anziché i valori hard-coded specificati nel comando SQL. |
Miglioramento delle informazioni. |