核心接口一致性

所有 ODBC 驱动程序必须至少表现出核心级接口一致性。 由于核心级别的功能是大多数泛型互操作应用程序所需的功能,因此驱动程序可以使用此类应用程序。 核心级别的功能还对应于 ISO CLI 规范中定义的功能和开放组 CLI 规范中定义的非可选功能。 核心级接口一致性 ODBC 驱动程序允许应用程序执行以下所有操作:

  • 通过调用 SQLAllocHandleSQLFreeHandle 来分配和释放所有类型的句柄。

  • 使用 SQLFreeStmt 函数的所有形式。

  • 通过调用 SQLBindCol 绑定结果集列。

  • 通过调用 SQLBindParameterSQLNumParams 来处理动态参数(包括参数数组)。 (输出方向的参数是级别 2 接口一致性中的功能 203。)

  • 指定绑定偏移量。

  • 使用执行时数据对话框需要调用 SQLParamDataSQLPutData

  • 通过调用 SQLCloseCursorSQLGetCursorNameSQLSetCursorName 来管理游标和游标名称。

  • 通过调用 SQLColAttributeSQLDescribeColSQLNumResultColsSQLRowCount 来访问结果集的说明(元数据)。 (在列号 0 上使用这些函数来检索书签元数据,属于级别 2 接口一致性中的功能 204。)

  • 通过调用目录函数 SQLColumnsSQLGetTypeInfoSQLStatisticsSQLTables 来查询数据字典。

    驱动程序不需要支持数据库表和视图的多部分名称。 (有关详细信息,请参阅级别 1 接口一致性中的功能 101 和级别 2 接口一致性中的功能 201。)但是,SQL-92 规范的某些功能,例如列限定和索引名称,在语法上相当于多部分命名。 当前的 ODBC 功能列表并不旨在将新选项引入 SQL-92 的这些方面。

  • 通过调用 SQLConnectSQLDataSourcesSQLDisconnectSQLDriverConnect 来管理数据源和连接。 通过调用 SQLDrivers 获取有关驱动程序的信息,无论驱动程序支持哪个 ODBC 级别。

  • 通过调用 SQLExecDirectSQLExecuteSQLPrepare 来准备和执行 SQL 语句。

  • 通过调用 SQLFetch 或调用 SQLFetchScroll 并将 FetchOrientation 参数设置为 SQL_FETCH_NEXT,只能沿向前方向提取结果集中的一行或多行。

  • 通过调用 SQLGetData 获取各部分的未绑定列。

  • 通过调用 SQLGetConnectAttrSQLGetEnvAttrSQLGetStmtAttr 获取所有属性的当前值,并通过调用 SQLSetConnectAttrSQLSetEnvAttrSQLSetStmtAttr 将所有属性设置为其默认值,将某些属性设置为非默认值。

  • 通过调用 SQLCopyDescSQLGetDescFieldSQLGetDescRecSQLSetDescFieldSQLSetDescRec 来操作描述符的特定字段。

  • 通过调用 SQLGetDiagFieldSQLGetDiagRec 获取诊断信息。

  • 通过调用 SQLGetFunctionsSQLGetInfo 来检测驱动程序功能。 此外,在将 SQL 语句发送到数据源之前,通过调用 SQLNativeSql 来检测对 SQL 语句所做的任何文本替换的结果。

  • 使用 SQLEndTran 的语法提交事务。 核心级驱动程序不需要支持真正的事务;因此,应用程序无法为 SQL_ATTR_AUTOCOMMIT 连接属性指定 SQL_ROLLBACK 或 SQL_AUTOCOMMIT_OFF。 (有关详细信息,请参阅级别 2 接口一致性中的功能 109。)

  • 调用 SQLCancel 以取消执行时数据对话框,并在多线程环境中取消在另一个线程中执行的 ODBC 函数。 核心级接口一致性不要求支持异步执行函数,也不要求使用 SQLCancel 来取消以异步方式执行的 ODBC 函数。 平台和 ODBC 驱动程序都不需要多线程,驱动程序即可同时执行独立活动。 但是,在多线程环境中,ODBC 驱动程序必须是线程安全的。 序列化来自应用程序的请求是实现此规范的一致方式,尽管这可能会造成严重的性能问题。

  • 通过调用 SQLSpecialColumns 获取表的 SQL_ROWVER 行标识列。 (对 SQL_ROWVER 的支持属于级别 2 接口一致性中的功能 208。)

    重要

    ODBC 驱动程序必须在核心接口一致性级别实现函数。