Обновление данных с помощью SQLSetPos

Приложения могут обновлять или удалять любую строку в наборе строк с помощью SQLSetPos. Вызов SQLSetPos — это удобная альтернатива созданию и выполнению инструкции SQL. Он позволяет драйверу ODBC поддерживать размещенные обновления, даже если источник данных не поддерживает позиционированные инструкции SQL. Она является частью парадигмы достижения полного доступа к базе данных с помощью вызовов функций.

SQLSetPos работает с текущим набором строк и может использоваться только после вызова SQLFetchScroll. Приложение указывает номер строки для обновления, удаления или вставки, а драйвер извлекает новые данные для этой строки из буферов набора строк. SQLSetPos также можно использовать для назначения указанной строки в качестве текущей строки или обновления определенной строки в наборе строк из источника данных.

Размер набора строк задается вызовом SQLSetStmtAttr с аргументом атрибута SQL_ATTR_ROW_ARRAY_SIZE. SQLSetPos использует новый размер набора строк, однако только после вызова SQLFetch или SQLFetchScroll. Например, если размер набора строк изменен, вызывается SQLSetPos , а затем вызывается SQLFetch или SQLFetchScroll , а вызов SQLSetPos использует старый размер набора строк, а SQLFetch или SQLFetchScroll использует новый размер набора строк.

Первая строка в наборе строк имеет номер 1. Аргумент RowNumber в SQLSetPos должен определить строку в наборе строк. То есть его значение должно находиться в диапазоне от 1 до количества строк, которые были недавно извлекнуты (что может быть меньше размера набора строк). Если rowNumber равен 0, операция применяется к каждой строке в наборе строк.

Поскольку большинство взаимодействий с реляционными базами данных выполняется через SQL, SQLSetPos не поддерживается широко. Однако драйвер может легко эмулировать его, создавая и выполняя инструкцию UPDATE или DELETE .

Чтобы определить, какие операции поддерживает SQLSetPos , приложение вызывает SQLGetInfo с параметром SQL_DYNAMIC_CURSOR_ATTRIBUTES1, SQL_FORWARD_ONLY_CURSOR_ATTRIBUTES1, SQL_KEYSET_CURSOR_ATTRIBUTES1 или SQL_STATIC_CURSOR_ATTRIBUTES1 информации (в зависимости от типа курсора).

Этот раздел содержит следующие подразделы.