使用 SQLSetPos 更新資料
應用程式可以在資料列集中使用 SQLSetPos 更新或刪除任何資料列。 呼叫 SQLSetPos 是建構和執行 SQL 語句的便利替代方案。 即使資料來源不支援定點 SQL 陳述式,仍可讓 ODBC 驅動程式支援定點更新。 其為透過函式呼叫實現完整資料庫存取的範例一部分。
SQLSetPos 會在目前的資料列集上運作,而且只能在呼叫 SQLFetchScroll 之後使用。 應用程式會指定要更新、刪除或插入的資料列數目,而驅動程式會從資料列集緩衝區擷取該資料列的新資料。 SQLSetPos 也可以用於將指定的資料列指定為目前資料列,或從資料來源重新整理資料列集中的特定資料列。
若要設定資料列集大小,請使用具有屬性引數 SQL_ATTR_ROW_ARRAY_SIZE 的 SQLSetStmtAttr 呼叫。 SQLSetPos 會使用新的資料列集大小,但是只能在呼叫 SQLFetch 或 SQLFetchScroll 之後使用。 例如,如果變更資料列集大小,則會呼叫 SQLSetPos,然後呼叫 SQLFetch 或 SQLFetchScroll,針對呼叫 SQLSetPos 會使用舊資料列集大小,而 SQLFetch 或 SQLFetchScroll 則會使用新資料列集大小。
資料列集中的第一個資料列是資料列號碼 1。 SQLSetPos 中的 RowNumber 引數必須識別此資料列集中的資料列;也就是說,它的值必須在 1 與最近擷取資料列數之間的範圍內 (可能小於資料列集大小)。 如果 RowNumber 是 0,此作業會套用到資料列集內的每一個資料列。
由於與關聯式資料庫的大部分互動都是透過 SQL 完成,因此 SQLSetPos 並未獲得廣泛支援。 不過,驅動程式可以透過建構和執行 UPDATE 或 DELETE 陳述式,輕鬆地加以模擬。
若要判斷 SQLSetPos 支援哪些陳述式,應用程式會使用 SQL_DYNAMIC_CURSOR_ATTRIBUTES1、SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1、SQL_KEYSET_CURSOR_ATTRIBUTES1 或 SQL_STATIC_CURSOR_ATTRIBUTES1 資訊選項呼叫 SQLGetInfo (視資料指標的類型而定)。
此章節包含下列主題。