Поделиться через


Прокрутка и выборка строк

Чтобы можно было использовать прокручиваемый курсор в приложение ODBC, необходимо выполнить следующие действия.

  • Задать возможности курсора с помощью функции SQLSetStmtAttr.

  • Открыть курсор с помощью функций SQLExecute или SQLExecDirect.

  • Выполнить прокрутку и выборку строк с помощью функций SQLFetch или SQLFetchScroll.

Функции SQLFetch и SQLFetchSroll могут выполнять выборку групп строк. Число возвращаемых строк определяется при помощи функции SQLSetStmtAttr, устанавливающей параметр SQL_ATTR_ROW_ARRAY_SIZE.

Приложение ODBC может производить выборку из однопроходного курсора при помощи функции SQLFetch.

Функция SQLFetchScroll используется для прокрутки по курсору. Функция SQLFetchScroll поддерживает выборку следующего, предыдущего, первого и последнего наборов строк, помимо относительной (набора из n строк с начала текущего набора строк) и абсолютной (набора строк, начиная со строки n) выборки. Если при абсолютной выборке n является отрицательным числом, то строки отсчитываются с конца результирующего набора. Абсолютная выборка строки -1 означает, что будет возвращен набор строк, начинающийся с последней строки результирующего набора.

Приложения, использующие функцию SQLFetchScroll только ради ее возможностей блочных курсоров (например, отчеты), обычно просматривают результирующий набор всего один раз при помощи функции получения следующего набора строк. С другой стороны, интерактивные приложения могут пользоваться возможностями функции SQLFetchScroll. Если приложение задает размер набора строк равным количеству строк, отображаемых на экране, и привязывает буферы экранов к результирующему набору, то оно может преобразовывать операции полосы прокрутки непосредственно в вызовы функции SQLFetchScroll.

Операция полосы прокрутки

Параметр прокрутки SQLFetchScroll

На страницу вверх

SQL_FETCH_PRIOR

На страницу вниз

SQL_FETCH_NEXT

На строку вверх

SQL_FETCH_RELATIVE с FetchOffset, равным -1

На строку вниз

SQL_FETCH_RELATIVE с FetchOffset, равным 1

Ползунок вверх

SQL_FETCH_FIRST

Ползунок вниз

SQL_FETCH_LAST

Случайное положение ползунка

SQL_FETCH_ABSOLUTE