Sdílet prostřednictvím


Aktualizace dat pomocí SQLSetPos

Aplikace mohou aktualizovat nebo odstranit libovolný řádek v sadě řádků pomocí SQLSetPos. Volání SQLSetPos je praktickou alternativou k vytvoření a spuštění příkazu SQL. Umožňuje ovladači ODBC podporovat umístěné aktualizace i v případě, že zdroj dat nepodporuje umístěné příkazy SQL. Je součástí paradigmatu dosažení kompletního přístupu k databázi prostřednictvím volání funkcí.

SQLSetPos pracuje s aktuální sadou řádků a lze ji použít až po volání SQLFetchScroll. Aplikace určuje počet řádků, které se mají aktualizovat, odstranit nebo vložit, a ovladač načte nová data pro tento řádek z vyrovnávací paměti sady řádků. SQLSetPos lze také použít k určení zadaného řádku jako aktuálního řádku nebo k aktualizaci konkrétního řádku v sadě řádků ze zdroje dat.

Velikost sady řádků je nastavena voláním SQLSetStmtAttr s argumentem Atribut SQL_ATTR_ROW_ARRAY_SIZE. SQLSetPos však používá novou velikost sady řádků, ale až po volání SQLFetch nebo SQLFetchScroll. Pokud je například změněna velikost sady řádků, volá se SQLSetPos a potom se volá SQLFetch nebo SQLFetchScroll a volání SQLSetPos používá starou velikost sady řádků, zatímco SQLFetch nebo SQLFetchScroll používá novou velikost sady řádků.

První řádek v sadě řádků je číslo řádku 1. Argument RowNumber v SQLSetPos musí identifikovat řádek v sadě řádků; to znamená, že jeho hodnota musí být v rozsahu od 1 do počtu řádků, které byly naposledy načteny (což může být menší než velikost sady řádků). Pokud je argument RowNumber 0, operace se vztahuje na každý řádek v sadě řádků.

Vzhledem k tomu, že většina interakcí s relačními databázemi se provádí prostřednictvím SQL, sqlSetPos se široce nepodporuje. Ovladač jej však může snadno emulovat vytvořením a spuštěním příkazu UPDATE nebo DELETE .

Pokud chcete zjistit, jaké operace SQLSetPos podporuje, aplikace volá funkci SQLGetInfo s možností SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 nebo SQL_STATIC_CURSOR_ATTRIBUTES1 informace (v závislosti na typu kurzoru).

Tato část obsahuje následující témata.