ODBC 游标

应用程序使用游标提取数据。 游标与结果集不同:结果集是与特定搜索条件匹配的行集,而游标是向应用程序返回这些行的软件。 适用于数据库的游标,其名称可能源自于电脑终端上闪烁的游标。 正如游标会在屏幕上指出当前位置以及下一个键入字词的显示位置一样,结果集中的光标会指示结果集中的当前位置以及接下来会返回的行。

ODBC 中的游标模型以嵌入式 SQL 中的游标模型为基础。 这些模型之间的一个显著区别在于打开游标的方式。 在嵌入式 SQL 中,必须先显式声明并打开游标,然后才能使用游标。 在 ODBC 中,执行创建结果集的语句时会隐式打开游标。 打开游标时,游标将位于结果集第一行的前面。 在嵌入式 SQL 和 ODBC 中,应用程序完成游标的使用后必须将其关闭。

不同的游标具有不同的特征。 最常见的游标类型称为只进游标,只能在结果集中向前移动。 若要返回到上一行,应用程序必须关闭并重新打开游标,然后从结果集的开头读取行,直至到达所需行为止。 只进游标可在结果集中快速进行单次传递。

只进游标对基于屏幕的应用程序不太实用,在此类应用程序中用户需要向后和向前滚动浏览数据。 此类应用程序在以下情况下会用到只进游标:读取结果集一次、在本地缓存数据以及自行执行滚动操作。 不过,这只适用于具有少量数据的应用程序。 更好的解决方案是使用可滚动游标,使用该游标可随机访问结果集。 此类应用程序还可以使用块游标,通过一次提取多行数据来提高性能。有关块游标的详细信息,请参阅使用块游标

只进游标是 ODBC 中的默认游标类型,以下各部分将介绍相关信息。 有关块游标和可滚动游标的更多信息,请参阅块游标可滚动游标

重要

通过显式调用 SQLEndTran 或在自动提交模式下操作,提交或回滚事务会导致某些数据源关闭连接上所有语句中的所有游标。 有关详细信息,请参阅 SQLGetInfo 函数说明中的 SQL_CURSOR_COMMIT_BEHAVIOR 和 SQL_CURSOR_ROLLBACK_BEHAVIOR 属性。