當以書籤更新資料列時, SQLBulkOperations 會讓資料來源更新資料表的一列或多列。 這些列以裝訂書籤欄中的書籤來識別。 該列會利用應用程式緩衝區中每個綁定欄位的資料更新(除非欄位的長度/指示緩衝區值為SQL_COLUMN_IGNORE)。 未綁定欄位不會更新。
要用 SQLBulkOperations 以書籤更新資料列,應用程式:
擷取並快取所有待更新行的書籤。 若書籤多於一個且使用逐欄裝訂,書籤會儲存在陣列中;若有多個書籤且採用逐列綁定,書籤會儲存在一組列結構的陣列中。
將 SQL_ATTR_ROW_ARRAY_SIZE 陳述句屬性設定為書籤數量,並將包含書籤值或書籤陣列的緩衝區綁定到第 0 欄。
將新的資料值放入列集緩衝區。 關於如何用 SQLBulkOperations 傳送長資料的資訊,請參見 Long Data 與 SQLSetPos 及 SQLBulkOperations。
根據需要設定每欄長度/指示緩衝區的值。 這是綁定到字串緩衝區的欄位的資料位元組長度或 SQL_NTS,綁定到二進位緩衝區的欄位的資料位元組長度,對於任何要設定為 NULL 的欄位則為 SQL_NULL_DATA。
設定那些不需更新為SQL_COLUMN_IGNORE欄位的長度/指示緩衝區值。 雖然應用程式可以跳過此步驟並重新傳送現有資料,但這效率低落,且有可能將讀取時被截斷的數值傳送到資料來源。
呼叫 SQLBulkOperations ,並將 Operation 參數設為 SQL_UPDATE_BY_BOOKMARK。
當每一列被作為更新傳送至資料來源時,應用程式的緩衝區應該有有效的資料列資料。 如果應用程式緩衝區因擷取而被填滿,且維護了列狀態陣列,並且該列的狀態值為SQL_ROW_DELETED、SQL_ROW_ERROR或SQL_ROW_NOROW,則可能將無效資料誤傳至資料來源。