共用方式為


HOW TO:更新資料庫中的資料錄

更新:2007 年 11 月

您可以使用 TableAdapter.Update 方法更新 (編輯) 資料庫中的資料錄。TableAdapter.Update 方法會提供多項多載,以便根據傳入的參數執行不同的作業。因此,請務必瞭解呼叫這些不同方法簽章 (Signature) 的結果。

注意事項:

如果您的應用程式並未使用 TableAdapter,您就可以使用命令物件來更新資料庫中的資料錄 (例如,ExecuteNonQuery)。如需使用命令物件更新資料的詳細資訊,請參閱下列「使用命令物件更新資料錄」。

下表將描述各種 TableAdapter.Update 方法的行為:

方法

說明

TableAdapter.Update(DataTable)

嘗試將 DataTable 中的所有變更儲存至資料庫中 (這包括移除任何從資料表刪除的資料列、加入已插入資料表的資料列,以及更新資料表中已變更的任何資料列)。

TableAdapter.Update(DataSet)

雖然參數會採用資料集,不過 TableAdapter 會嘗試將 TableAdapter 之關聯 DataTable 中的所有變更儲存至資料庫中 (這包括移除任何從資料表刪除的資料列、加入已插入資料表的資料列,以及更新資料表中已變更的任何資料列)。

注意事項:

TableAdapter 的關聯 DataTable 就是原先設定 TableAdapter 時所建立的 DataTable

TableAdapter.Update(DataRow)

嘗試將指定之 DataRow 中的變更儲存至資料庫中。

TableAdapter.Update(DataRows())

嘗試將 DataRow 陣列中任何資料列的變更儲存至資料庫中。

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

嘗試儲存由原始資料行值所識別之單一資料列中的變更。

當應用程式以獨佔方式使用資料集來儲存資料時,您通常會使用採用 DataSetDataTableDataRow 的 TableAdapter.Update 方法。

當應用程式使用物件來儲存資料時,您通常會使用採用資料行值的 TableAdapter.Update 方法。

如果 TableAdapter 並沒有任何採用資料行值的 Update 方法,就是表示此 TableAdapter 是設定成使用預存程序,或者其 GenerateDBDirectMethods 屬性設定為 false。請嘗試從 DataSet 設計工具之內,將 TableAdapter 的 GenerateDBDirectMethods 屬性設定為 true,然後儲存資料集以重新產生 TableAdapter。如果 TableAdapter 仍然沒有任何採用資料行值的 Update 方法,則此資料表可能無法提供足夠的結構描述資訊,以區別個別的資料列 (例如,資料表上沒有設定任何主索引鍵)。

使用 TableAdapter 更新現有的資料錄

TableAdapter 會根據應用程式的需求,提供不同的方式來更新資料庫中的資料錄。

如果您的應用程式使用資料集儲存資料,您就只要更新所需 DataTable 中的資料錄,然後呼叫 TableAdapter.Update 方法並傳入 DataSetDataTableDataRowDataRow 的陣列即可。上表已描述了不同的 Update 方法。

若要使用採用 DataSet、DataTable、DataRow 或 DataRows() 的 TableAdapter.Update 方法更新資料庫中的資料錄

  1. 請直接在 DataTable 中編輯 DataRow,藉以編輯所需之 DataTable 中的資料錄。如需詳細資訊,請參閱 HOW TO:編輯 DataTable 中的資料列

  2. DataTable 中編輯資料列之後,請呼叫 TableAdapter.Update 方法。您可以傳入整個 DataSetDataTableDataRow 的陣列,或是單一 DataRow,藉以控制要更新的資料量。

    下列程式碼將示範如何編輯 DataTable 中的資料錄,然後呼叫 TableAdapter.Update 方法,將變更儲存至資料庫中 (此範例會使用 Northwind 資料庫的 Region 資料表)。

    ' 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);
    

如果您的應用程式會使用物件在應用程式中儲存資料,您就可以使用 TableAdapter 的 DBDirect 方法,直接將物件中的資料傳送至資料庫中。這些方法可讓您傳遞每個資料行的個別值,做為方法參數。呼叫這個方法時,就會使用傳入方法的資料行值,更新資料庫中的現有資料錄。

下列程序會使用 Northwind Region 資料表做為範例。

若要使用採用資料行值的 TableAdapter.Update 方法更新資料庫中的資料錄

  • 請呼叫 TableAdapter 的 Update 方法,並傳入每個資料行的新值和原始值做為參數。

    注意事項:

    如果您沒有可用的執行個體,請針對您想使用的 TableAdapter 執行個體化。

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

使用命令物件更新資料錄

下列範例會使用命令物件,直接更新資料庫中的現有資料錄。如需使用命令物件來執行命令和預存程序 (Stored Procedure) 的詳細資訊,請參閱將資料擷取至您的應用程式中

下列程序會使用 Northwind Region 資料表做為範例。

若要使用命令物件更新資料庫中的現有資料錄

  • 請建立新的命令物件、設定其 Connection、CommandType 和 CommandText 屬性,然後開啟連接並執行命令。

    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();
    

安全性

您必須擁有嘗試連接之資料庫的存取權,以及在所需資料表中更新資料錄的使用權限。

請參閱

工作

HOW TO:刪除資料庫中的資料錄

HOW TO:在資料庫中插入新的資料錄

HOW TO:從物件中將資料儲存至資料庫

概念

TableAdapter 概觀

其他資源

資料存取使用者入門

連接至 Visual Studio 中的資料

準備您的應用程式以接收資料

將資料擷取至您的應用程式中

顯示 Windows 應用程式之表單上的資料

在您的應用程式中編輯資料

驗證資料

儲存資料