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

SAP Sybase SQL Anywhere 16.0 (中文) » SQL Anywhere 16 - 更改和升级 » 12.0.0 版中的新功能 » SQL Anywhere 的新功能

 

编程接口

以下列出了在 SQL Anywhere 12.0.0 版中引入的编程接口增强。

  • Web 服务性能增强   HTTP 服务现在支持自动连接池,以实现计划高速缓存的最大效果并从潜在性能改进中受益。请参见如何在 HTTP Web 服务器中开发 Web 服务应用程序

  • 支持自定义的 ODBC 驱动程序名   为便于在客户端系统中安装和注册 SQL Anywhere ODBC 驱动程序的多个独立副本,现在可为 ODBC 驱动程序指派一个自定义名称。请参见ODBC 驱动程序配置

  • 纯 ANSI Unix ODBC 驱动程序   将 SQLWCHAR 定义为 32 位 (UTF-32) 数量的 Unix ODBC 驱动程序管理器版本不能与支持宽调用的 SQL Anywhere ODBC 驱动程序一起使用,因为该驱动程序是为 16 位 SQLWCHAR 构建的。针对这些情况,特地提供了纯 ANSI 版本的 SQL Anywhere ODBC 驱动程序。此版本的 ODBC 驱动程序不支持宽调用接口(如 SQLConnectW)。请参见适用于 Unix 的 UTF-32 ODBC 驱动管理器

  • DBTools:no_reload_status 位字段已添加到 an_unload_db 结构   新的 no_reload_status 位字段已添加到 an_unload_db 结构中。可以使用 no_reload_status 取消有关重装的表格和索引进度消息。请参见an_unload_db 结构 [数据库工具]

  • 新的 SQL Anywhere TYPE-2 JDBC 驱动程序   现在,为 JDBC 应用程序提供了一种用于连接到 SQL Anywhere 的新 TYPE-2 JDBC 驱动程序。与位于 ODBC 顶部且可用于通过 ODBC 连接到多个服务器的 iAnywhere JDBC 驱动程序不同,SQL Anywhere JDBC 驱动程序只能连接到 SQL Anywhere 并且无需安装或注册 SQL Anywhere ODBC 驱动程序。

    获取 SQL Anywhere JDBC 驱动程序时附有 JDBC 3.0 驱动程序和 JDBC 4.0 驱动程序。

    注意

    如果当前正在使用 iAnywhere JDBC 驱动程序,则强烈建议您改用新的 SQL Anywhere JDBC 驱动程序。

    JDBC 4.0 驱动程序会自动装载并自行注册。

    要使用 3.0 版 SQL Anywhere JDBC 驱动程序,必须装载 sybase.jdbc.sqlanywhere.IDriver 类,因为该类可实现 java.sql.Driver 接口并使用 JDBC 驱动程序管理器注册 SQL Anywhere JDBC 驱动程序。装载后,使用 URL jdbc:sqlanywhere:connection-string-parameters 完成使用 SQL Anywhere JDBC 驱动程序进行的连接。connection-string-parameters 是连接到 SQL Anywhere 所需的标准连接参数。请注意,使用 SQL Anywhere JDBC 驱动程序时,此应用程序不再需要在 connection-string-parameters 中指定 DRIVER= 或 DSN=。请参见JDBC 支持

  • 新增 JDBC 语句类方法支持   以前,JDBC 驱动程序仅支持 PreparedStatement 类的 addBatch 和 executeBatch 方法。现在,JDBC 驱动程序还支持 Statement 类的 addBatch、clearBatch 和 executeBatch 方法。由于 JDBC 规范对于 Statement 类的 executeBatch 方法的行为没有明确规定,因此在使用 SQL Anywhere JDBC 驱动程序的情况下使用这种方法时应当考虑如下几点:

    1. 如果遇到 SQL 异常或结果集,批处理将立即终止。如果批处理停止,executeBatch 方法就会抛出 BatchUpdateException。在 BatchUpdateException 上调用 getUpdateCounts 方法会返回一个行计数整数数组。批处理失败之前的计数集会包含一个有效的非负更新计数;而在批处理失败点及其之后,计数集会包含一个 -1 值。将 BatchUpdateCount 转换为 SQLException 时会提供关于批处理停止原因的更多详细信息。

    2. 只有在显式调用 clearBatch 方法时批处理才会被清除。因此,重复调用 executeBatch 方法将会导致再三地重复执行批处理。此外,调用 execute(sql_query) 或 executeQuery(sql_query) 能够正确地执行指定的 SQL 查询,但不会清除基础批处理。因此,调用 executeBatch 方法,接着调用 execute(sql_query),然后再次调用 executeBatch 方法,将导致执行成批语句集,再执行指定的 SQL 查询,接下来再次执行成批语句集。

    请参见JDBC 支持

  • RESUME 语句可返回行计数或行估计值   现在,RESUME 语句可返回结果集中的行数或过程调用中下一个结果集内的行估计值。在以前的版本中,在 RESUME 语句之后无法获得此行计数。要获取 RESUME 行计数,客户端应用程序和数据库服务器都必须是 SQL Anywhere 12。

    此项更改会影响以下客户端 API:

    API 受影响的函数调用或语句 由以下内容返回行计数
    嵌入式 SQL RESUME 语句 SQLCOUNT 字段
    ODBC SQLMoreResults 函数 SQLRowCount 函数
    OLE DB IMultipleResults::GetResult 方法 pcRowsAffected 输出参数
    PHP sasql_next_result 函数 sasql_num_rows 函数
    PHP sasql_stmt_next_result 函数 sasql_stmt_num_rows 函数
    SQL Anywhere C API sqlany_get_next_result 函数 sqlany_num_rows 函数
    SQL Anywhere Ruby API sqlany_get_next_result 函数 sqlany_num_rows 函数
    SQL Anywhere Python API nextset 方法 rowcount 属性

  • PHP $_SERVER 变量现在包含 CGI/1.1 所需的所有变量   PHP 中的 $_SERVER 变量现在包含执行 HTTP 请求时 CGI/1.1 所需的所有变量。请参见PHP 外部环境

    有关 CGI/1.1 所需变量的详细信息,请参见 RFC3875 的第 4 节: [external link] http://www.ietf.org/rfc/rfc3875

  • sqlanydb 中已添加对 Python 数据类型映射的精细控制   要控制在从数据库服务器读取结果时如何将数据库类型映射到 Python 对象中,可以注册转换回调。请参见数据类型转换

  • 新 DBLib fill_sqlda_ex 函数   fill_sqlda_ex 函数提供了比 fill_sqlda 更加丰富的功能。具体来讲,在填充描述符时,可以提供标志来保留 DT_LONGVARCHAR、DT_LONGNVARCHAR 和 DT_LONGBINARY 类型。请参见fill_sqlda_ex 函数

  • 现在可以选择静默安装功能   在 Windows 上,通过命令行进行安装可以选择安装或忽略安装 SQL Anywhere 组件或功能。例如,可以指定 AT32=1 来选择安装 32 位管理工具。请参见使用 SQL Anywhere 安装程序进行静默安装

  • TDS 现在支持精度为 6 位数的时间和日期时间数据   现在,在查询时间或日期时间数据时,使用 jConnect 7 及更高版本或 Open Client 15.5 及更高版本连接到 SQL Anywhere 的应用程序可以检索精度为 6 位数的数值。