核心接口一致性
所有 ODBC 驱动程序必须至少表现出核心级接口一致性。 由于核心级别的功能是大多数泛型互操作应用程序所需的功能,因此驱动程序可以使用此类应用程序。 核心级别的功能还对应于 ISO CLI 规范中定义的功能和开放组 CLI 规范中定义的非可选功能。 核心级接口一致性 ODBC 驱动程序允许应用程序执行以下所有操作:
通过调用 SQLAllocHandle 和 SQLFreeHandle 来分配和释放所有类型的句柄。
使用 SQLFreeStmt 函数的所有形式。
通过调用 SQLBindCol 绑定结果集列。
通过调用 SQLBindParameter 和 SQLNumParams 来处理动态参数(包括参数数组)。 (输出方向的参数是级别 2 接口一致性中的功能 203。)
指定绑定偏移量。
使用执行时数据对话框需要调用 SQLParamData 和 SQLPutData。
通过调用 SQLCloseCursor、SQLGetCursorName 和 SQLSetCursorName 来管理游标和游标名称。
通过调用 SQLColAttribute、SQLDescribeCol、SQLNumResultCols 和 SQLRowCount 来访问结果集的说明(元数据)。 (在列号 0 上使用这些函数来检索书签元数据,属于级别 2 接口一致性中的功能 204。)
通过调用目录函数 SQLColumns、SQLGetTypeInfo、SQLStatistics 和 SQLTables 来查询数据字典。
驱动程序不需要支持数据库表和视图的多部分名称。 (有关详细信息,请参阅级别 1 接口一致性中的功能 101 和级别 2 接口一致性中的功能 201。)但是,SQL-92 规范的某些功能,例如列限定和索引名称,在语法上相当于多部分命名。 当前的 ODBC 功能列表并不旨在将新选项引入 SQL-92 的这些方面。
通过调用 SQLConnect、SQLDataSources、SQLDisconnect 和 SQLDriverConnect 来管理数据源和连接。 通过调用 SQLDrivers 获取有关驱动程序的信息,无论驱动程序支持哪个 ODBC 级别。
通过调用 SQLExecDirect、SQLExecute 和 SQLPrepare 来准备和执行 SQL 语句。
通过调用 SQLFetch 或调用 SQLFetchScroll 并将 FetchOrientation 参数设置为 SQL_FETCH_NEXT,只能沿向前方向提取结果集中的一行或多行。
通过调用 SQLGetData 获取各部分的未绑定列。
通过调用 SQLGetConnectAttr、SQLGetEnvAttr 和 SQLGetStmtAttr 获取所有属性的当前值,并通过调用 SQLSetConnectAttr、SQLSetEnvAttr 和 SQLSetStmtAttr 将所有属性设置为其默认值,将某些属性设置为非默认值。
通过调用 SQLCopyDesc、SQLGetDescField、SQLGetDescRec、SQLSetDescField 和 SQLSetDescRec 来操作描述符的特定字段。
通过调用 SQLGetDiagField 和 SQLGetDiagRec 获取诊断信息。
通过调用 SQLGetFunctions 和 SQLGetInfo 来检测驱动程序功能。 此外,在将 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 驱动程序必须在核心接口一致性级别实现函数。