進階 SQL 產生選項對話方塊
可讓您控制建立配接器之 SQL 陳述式或預存程序的方式。 當您按一下其中一個資料精靈的 [SQL 陳述式] 頁面上的 [進階選項] 按鈕時,即會出現此對話方塊。 此對話方塊中的選項,都與當做更新程序一部分來呼叫的陳述式或程序相關 (例如 CustomersTableAdapter.Update(DataTable))。
使用者介面項目清單
產生 Insert、Update 和 Delete 陳述式
在選取時,精靈將為配接器的 UpdateCommand、InsertCommand 和 DeleteCommand 物件建立 SQL 陳述式或預存程序 (要產生的陳述式或程序之細節,是由精靈的 [選擇查詢類型] 窗格所控制)。如果未選取此核取方塊,則對話方塊中的其他選項會因不適用而停用。通常會在下列情況下清除本核取方塊:
配接器僅用來從資料來源讀取資料,而不將資料寫回。 在清除本方塊的同時,亦減少了表單或元件中的程式碼數量。
您可於精靈完成後,自行填入命令。
如果此方塊已清除,而且 UpdateCommand、InsertCommand 或 DeleteCommand 物件沒有陳述式或預存程序,則呼叫資料配接器的 Update 方法並無任何作用。
使用開放式並行存取
選取時,精靈會產生 SQL 命令和 WHERE 子句,其符合資料錄中針對資料庫中對應資料錄進行更新的所有資料行的值。注意事項
只有在已選取 [產生 Insert、Update 和 Delete 陳述式] 核取方塊時,此選項才能使用。
例如,使用此選項產生的 update 陳述式之語法可能如下:
UPDATE Customers SET CustomerID = ?, CompanyName = ?, Phone = ? WHERE (CustomerID = ?) AND (CompanyName = ?) AND (Phone = ? OR ? IS NULL AND Phone IS NULL);
如果本核取方塊已清除,則語法為:
UPDATE Customers SET CustomerID = ?, CompanyName = ?, Phone = ? WHERE (CustomerID = ?)
檢查各資料行值的作用在於如果有任何資料行變更 (發生於將資料錄讀入資料集之後,另一位使用者已變更此資料錄),命令就會失敗。 如果選項未設定,且 WHERE 子句只負責找出資料錄,則由其他使用者所做的變更可能會被覆寫,而不會在您更新時警告。
如需從資料集更新時進行並行檢查之詳細資訊,請參閱 Introduction to Data Concurrency in ADO.NET。
重新整理資料表
選取時,精靈會為每個 Update 和 Insert 命令,產生一個 Select 陳述式。注意事項
只有在已選取 [產生 Insert、Update 和 Delete 陳述式] 核取方塊時,此選項才能使用。
Select 陳述式在配接器中加入至對應的命令物件,並於 Update 或 Insert 命令完成後立即執行。 Select 陳述式設定為僅傳回單一資料錄,也就是方才更新的資料錄更新版本。
注意事項
您可以利用半形分號 (;) 來分隔不同的陳述式,將多個陳述式加入至配接器命令物件的 CommandText 屬性。
取得資料錄的新版本,即為該資料錄將更新的資料行值寫入資料集內,其中包括:
資料庫填入預設值的資料行。
自動增量資料行。
時間戳記資料行。
受資料庫觸發程序 (Trigger) 結果所影響的資料行。
由於本選項造成每次更新 (Update 陳述式及接下來的 Select 陳述式) 必須執行兩個陳述式,因此在已更新資料集中多數資料錄的情況下,效能較差。 在這種情況下,在執行所有更新之後,一次重新填入所有資料表較具效率。
注意事項
只有在支援批次處理 SQL 陳述式的資料庫上,才支援資料表的重新整理。 例如,Microsoft Access 無法在執行其他作業的相同命令中重新整理資料表。
請參閱
概念
將 Windows Form 控制項繫結至 Visual Studio 中的資料