HOW TO:從物件中將資料儲存至資料庫
更新:2007 年 11 月
您可以將物件的資料儲存至資料庫中,方法是將物件的值傳遞至其中一個 TableAdapter 的 DBDirect 方法 (例如 TableAdapter.Insert)。如需詳細資訊,請參閱 TableAdapter 概觀。
若要儲存物件集合的資料,請在物件的集合中執行迴圈 (Loop) (例如,for-next 迴圈),然後使用其中一個 TableAdapter 的 DBDirect 方法,將每個物件的值傳送至資料庫中。
根據預設,DBDirect 方法是在 TableAdapter 上建立的,而且這些方法可直接對資料庫執行。您可以直接呼叫這些方法,而不需要 DataSet 或 DataTable 物件來調整變更,以便將更新傳送至資料庫。
注意事項: |
---|
當您在設定 TableAdapter 時,主查詢必須提供足夠的資訊,才會建立 DBDirect 方法。例如,如果 TableAdapter 設定為從並未定義主索引鍵資料行的資料表查詢資料時,它就不會產生 DBDirect 方法。 |
TableAdapter DBDirect 方法 |
說明 |
---|---|
TableAdapter.Insert |
將新資料錄加入至資料庫,並讓您傳入個別的資料行值做為方法參數。 |
TableAdapter.Update |
更新資料庫中的現有資料錄。此 Update 方法會採用原始和新的資料行值做為方法參數。原始值是用來找出原始資料錄,而新值則是用來更新該資料錄。 此外,TableAdapter.Update 方法也會用來將資料集的變更調整回資料庫中,方式是採用 DataSet、DataTable、DataRow 或 DataRow 的陣列做為方法參數。 |
TableAdapter.Delete |
根據傳入做為方法參數的原始資料行值,從資料庫刪除現有的資料錄。 |
若要將物件的新資料錄儲存至資料庫中
將值傳遞至 TableAdapter.Insert 方法,藉以建立資料錄。
下列範例會在 Customers 資料表中建立新的客戶資料錄,方法是將 currentCustomer 物件中的值傳遞至 TableAdapter.Insert 方法。
Private Sub AddNewCustomer(ByVal currentCustomer As Customer) CustomersTableAdapter.Insert( _ currentCustomer.CustomerID, _ currentCustomer.CompanyName, _ currentCustomer.ContactName, _ currentCustomer.ContactTitle, _ currentCustomer.Address, _ currentCustomer.City, _ currentCustomer.Region, _ currentCustomer.PostalCode, _ currentCustomer.Country, _ currentCustomer.Phone, _ currentCustomer.Fax) End Sub
private void AddNewCustomers(Customer currentCustomer) { customersTableAdapter.Insert( currentCustomer.CustomerID, currentCustomer.CompanyName, currentCustomer.ContactName, currentCustomer.ContactTitle, currentCustomer.Address, currentCustomer.City, currentCustomer.Region, currentCustomer.PostalCode, currentCustomer.Country, currentCustomer.Phone, currentCustomer.Fax); }
若要將物件的現有資料錄更新至資料庫中
修改資料錄,方法是呼叫 TableAdapter.Update 方法、傳入新值以更新資料錄,並傳入原始值以找出資料錄。
注意事項: 您的物件必須維護原始值,才能將它們傳遞至 Update 方法。這個範例會使用含有 orig 前置詞的屬性,儲存原始值。
下列範例會在 Customers 資料表中更新現有的資料錄,方法是將 Customer 物件中的新和原始值傳遞至 TableAdapter.Update 方法。
Private Sub UpdateCustomer(ByVal cust As Customer) CustomersTableAdapter.Update( _ cust.CustomerID, _ cust.CompanyName, _ cust.ContactName, _ cust.ContactTitle, _ cust.Address, _ cust.City, _ cust.Region, _ cust.PostalCode, _ cust.Country, _ cust.Phone, _ cust.Fax, _ cust.origCustomerID, _ cust.origCompanyName, _ cust.origContactName, _ cust.origContactTitle, _ cust.origAddress, _ cust.origCity, _ cust.origRegion, _ cust.origPostalCode, _ cust.origCountry, _ cust.origPhone, _ cust.origFax) End Sub
private void UpdateCustomer(Customer cust) { customersTableAdapter.Update( cust.CustomerID, cust.CompanyName, cust.ContactName, cust.ContactTitle, cust.Address, cust.City, cust.Region, cust.PostalCode, cust.Country, cust.Phone, cust.Fax, cust.origCustomerID, cust.origCompanyName, cust.origContactName, cust.origContactTitle, cust.origAddress, cust.origCity, cust.origRegion, cust.origPostalCode, cust.origCountry, cust.origPhone, cust.origFax); }
若要從資料庫刪除現有的資料錄
刪除資料錄,方法是呼叫 TableAdapter.Delete 方法,並傳入原始值以找出資料錄。
注意事項: 您的物件必須維護原始值,才能將它們傳遞至 Delete 方法。這個範例會使用含有 orig 前置詞的屬性,儲存原始值。
下列範例會從 Customers 資料表刪除資料錄,方法是將 Customer 物件中的原始值傳遞至 TableAdapter.Delete 方法。
Private Sub DeleteCustomer(ByVal cust As Customer) CustomersTableAdapter.Delete( _ cust.origCustomerID, _ cust.origCompanyName, _ cust.origContactName, _ cust.origContactTitle, _ cust.origAddress, _ cust.origCity, _ cust.origRegion, _ cust.origPostalCode, _ cust.origCountry, _ cust.origPhone, _ cust.origFax) End Sub
private void DeleteCustomer(Customer cust) { customersTableAdapter.Delete( cust.origCustomerID, cust.origCompanyName, cust.origContactName, cust.origContactTitle, cust.origAddress, cust.origCity, cust.origRegion, cust.origPostalCode, cust.origCountry, cust.origPhone, cust.origFax); }
安全性
您必須擁有在資料庫的資料表上執行選取 INSERT、UPDATE 或 DELETE 的使用權限。