Бөлісу құралы:


Курсоры ODBC

Приложение извлекает данные с помощью курсора. Курсор отличается от результирующий набор: результирующий набор — это набор строк, которые соответствуют определенным критериям поиска, а курсор — это программное обеспечение, которое возвращает эти строки приложению. Название курсора, как это относится к базам данных, вероятно, происходит от мигающего курсора на компьютерном терминале. Так же, как курсор указывает текущую позицию на экране и где будут появляться вводимые слова, курсор в результирующем наборе указывает текущую позицию в результирующем наборе и какая строка будет возвращена далее.

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

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

Курсоры, доступные только для перенаправления, менее полезны для приложений на основе экрана, в которых пользователь прокручивает данные назад и вперед. Такие приложения могут использовать курсор только для прямого перемещения, считывая результирующий набор один раз, кэшируя данные локально и выполняя прокрутку самостоятельно. Однако это хорошо работает только с небольшими объемами данных. Лучше всего использовать прокручиваемый курсор, который обеспечивает случайный доступ к результирующему набору. Такие приложения также могут повысить производительность путем получения нескольких строк данных за раз, используя то, что называется блок-курсором. Дополнительные сведения об блочных курсорах см. в разделе "Использование блочных курсоров".

Однонаправленный курсор является типом курсора по умолчанию в ODBC и рассматривается в следующих разделах. Дополнительные сведения о блочных курсорах и прокручиваемых курсорах см. в разделе "Блоковые курсоры " и " Прокручиваемые курсоры".

Это важно

Фиксация или откат транзакции путем явного вызова SQLEndTran или при работе в режиме автозафиксирования приводит к тому, что некоторые источники данных закрывают все курсоры на всех операторах подключения. Дополнительные сведения см. в описании SQL_CURSOR_COMMIT_BEHAVIOR и SQL_CURSOR_ROLLBACK_BEHAVIOR атрибутов в описании функции SQLGetInfo .