Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.1 » SQL Anywhere 服务器 - 编程 » ODBC 支持 » ODBC 应用程序中的结果集

 

ODBC 游标特性

执行语句和操纵结果集的 ODBC 函数使用游标执行它们的任务。应用程序每次执行 SQLExecute 或 SQLExecDirect 函数时,都会隐式打开游标。

如果游标在结果集中只正向移动而不更新结果集,对于这种应用情况,游标行为相对比较简单。缺省情况下,ODBC 应用程序会请求此行为。ODBC 定义一个只读的只进游标,SQL Anywhere 针对这种情况提供了已优化性能的游标。

有关只进游标的简单示例,请参见数据检索

如果游标需要在结果集中向前和向后双向滚动(例如在很多图形用户界面应用程序中),对于这种应用情况,游标行为将会更加复杂。当应用程序返回到一个由某种别的应用程序更新的行时,它会怎样?ODBC 定义了多种可滚动游标,从而使您可以内置适合您的应用程序的行为。SQL Anywhere 提供了一整套游标,可以满足各种 ODBC 可滚动游标类型的要求。

通过调用定义语句属性的 SQLSetStmtAttr 函数,您可以设置所需的 ODBC 游标特性。您必须先调用 SQLSetStmtAttr,然后才能执行创建结果集的语句。

您可以使用 SQLSetStmtAttr 来设置很多游标特性。确定 SQL Anywhere 提供的游标类型的特性包括以下几种:

  • SQL_ATTR_CURSOR_SCROLLABLE   对于可滚动游标,设置为 SQL_SCROLLABLE;对于只进游标,设置为 SQL_NONSCROLLABLE。SQL_NONSCROLLABLE 是缺省设置。

  • SQL_ATTR_CONCURRENCY   设置为下列值之一:

    • SQL_CONCUR_READ_ONLY   不允许更新。SQL_CONCUR_READ_ONLY 是缺省设置。

    • SQL_CONCUR_LOCK   使用足以确保该行能够得到更新的最低锁定级别。

    • SQL_CONCUR_ROWVER   使用优化的并发控制,比较数据行的版本(例如,SQLBase ROWID 或 Sybase TIMESTAMP)。

    • SQL_CONCUR_VALUES   使用优化的并发控制,比较值。

有关更多信息,请参见 Microsoft ODBC API 参考中的 SQLSetStmtAttr ([external link] http://msdn.microsoft.com/en-us/library/ms712631.aspx)。

 示例