JDBC-4.0支持设置每个连接的客户端信息(可以在使用
显示PROCESSLIST
在MySQL服务器上,或者可以扩展以支持使用公共接口自定义持久性信息)。支持JDBC-4.0 XML处理,使用到DOM、SAX和StAX的JAXP接口。
JDBC-4.0对包含供应商扩展的接口进行了标准化的展开。
连接器/J现在使用初始字符集进行连接
utf - 8
仅用于身份验证的目的,以允许在JDBC连接URL中使用任何字符集中的用户名或数据库名。(错误# 29853)增加了两个配置参数:
blobsAreStrings
:驱动程序是否总是将blob视为字符串。专门用于处理由服务器返回的可疑元数据集团
条款。默认为false。functionsNeverReturnBlobs
:驱动程序是否总是处理函数返回的数据斑点
作为字符串。专门用于处理由服务器返回的可疑元数据集团
条款。默认为false。
设置
rewriteBatchedStatements
来真正的
now导致带有批处理参数的CallableStatements以"CALL(…);叫(…);,以尽可能少的客户机/服务器往返发送批处理。驱动程序现在根据启发式选择适当的内部行表示(一个缓冲区中的整行,或每个列值的单个字节[]s),包括行是否具有
团
或文本
类型和总体行大小。导致驱动程序使用缓冲区而不是单个字节[]s的行大小阈值由configuration属性配置largeRowSizeThreshold
,默认值为2KB。的数据(及其存储方式)
结果集
行现在位于接口的后面,这使我们(在某些情况下)能够为每行分配更少的内存,对于“流”结果集,我们重用用于读取行的包,因为一次只有一行是活动的。增加了对语句“拦截器”的实验支持
com.mysql.jdbc.StatementInterceptor
接口,示例都在com/mysql/jdbc/interceptors
.实现这个接口,将其置于查询执行的“中间”,以便它可以受到影响(目前处于实验阶段)。驱动程序将自动调整服务器会话变量
net_write_timeout
当它确定它被请求一个“流”结果,并在结果集已被使用时将其重置为前一个值。(配置属性被命名netTimeoutForStreamingResults
,以秒为单位,值“0”表示驱动程序不会尝试调整该值)。JDBC-4.0的易于开发特性,包括使用
DriverManager
通过服务提供者机制,标准化连接有效性检查和分类异常
基于可恢复性/可重试性和基础错误的类别。Statement.setQueryTimeout ()
S现在影响批处理语句的整个批处理,而不是组成批处理的单个语句。期间遇到的错误
声明
/PreparedStatement
/CallableStatement.executeBatch ()
当rewriteBatchStatements
已经设置为真正的
现在返回BatchUpdateExceptions
根据设定continueBatchOnError
.如果
continueBatchOnError
设置为真正的
,作为一个单元发送的“块”的更新计数将全部设置为EXECUTE_FAILED
,但驱动程序将尝试处理批处理的其余部分。控件中返回的更新计数可以确定哪个“块”失败了BatchUpdateException
.如果
continueBatchOnError
设置为“false”,则返回的更新计数将包含到并包括失败的“chunk”的所有更新,失败的“chunk”的所有计数设置为EXECUTE_FAILED
.com.mysql.jdbc.Statement的新方法:
setLocalInfileInputStream ()
而且getLocalInfileInputStream ()
:setLocalInfileInputStream ()
设置一个InputStream
实例,该实例将用于向MySQL服务器发送数据本地加载数据
语句而不是FileInputStream
或URLInputStream
它表示作为语句参数给出的路径。对象执行时,此流将被读取到完成
本地加载数据
语句,并且将被驱动程序自动关闭,因此它需要在每次调用之前重置执行* ()
这将导致MySQL服务器请求数据来完成对的请求本地加载数据
.如果该值设置为
零
,驱动程序将恢复到使用FileInputStream
或URLInputStream
是必需的。getLocalInfileInputStream ()
返回InputStream
实例,该实例将用于在响应中发送数据本地加载数据
声明。这个方法返回
零
如果没有设置这样的流setLocalInfileInputStream ()
.
设置
useBlobToStoreUTF8OutsideBMP
来真正的
告诉司机治疗中/长斑点
列如VARCHAR(长)
包含UTF-8编码的文本的列具有BMP以外的字符(4字节编码),MySQL服务器无法本地处理。集
utf8OutsideBmpExcludedColumnNamePattern
,以便与给定的正则表达式匹配的列名仍然被视为斑点
正则表达式必须遵循用于java.util.regex
包中。默认值是不排除任何列,而包括所有列。集
utf8OutsideBmpIncludedColumnNamePattern
指定排除规则utf8out侧边mpexcludedcolumnnameppattern "。正则表达式必须遵循用于java.util.regex
包中。
setObject(int, Object, int, int)
PreparedStatementWrapper中的delegate委托给错误的方法。(错误# 30892)时具有空列值的NPE
padCharsWithSpace
设置为true。(错误# 30851)排序上
VARBINARY
列类型将被错误识别。已经添加了一个修复,但这个修复只适用于MySQL服务器版本5.0.25及更新的版本,因为早期的版本没有一致地为函数返回正确的元数据,因此子查询和函数的结果无法相互区分,导致类型相关的错误。(错误# 30664)一个
ArithmeticException
或NullPointerException
会在批处理中没有成员和rewriteBatchedStatements = true
当addBatch ()
从来没打过电话,还是executeBatch ()
被立即呼叫clearBatch ()
.(错误# 30550)关闭负载平衡连接将导致
ClassCastException
.(错误# 29852)JBoss的连接检查器没有使用使用反射的相同方法参数,导致连接总是看起来“糟糕”。(错误# 29106)
DatabaseMetaData.getTypeInfo ()
对于类型小数
而且数字
对于5.0.3以下的服务器版本,将返回254的精度,对于5.0.3到5.0.5的服务器版本,将返回64的精度,对于5.0.5以下的服务器版本,将返回65的精度。(错误# 28972)CallableStatement.executeBatch ()
连接属性时不工作noAccessToProcedureBodies
已经设置为真正的
.解决方法包括改变行为
noAccessToProcedureBodies
,因为驱动程序现在将报告所有参数为在
参数,但允许调用者在它们上调用registerOutParameter()而不抛出异常。(错误# 28689)DatabaseMetaData.getColumns ()
不包含SCOPE_ *
或IS_AUTOINCREMENT
列。(错误# 27915)没有正确检索连接字符以外的标识符的架构对象
ResultSetMetadata
.(错误# 27867)Connection.getServerCharacterEncoding ()
不适用于>= 4.1版本的服务器。(错误# 27182)自动化的SVN修订版
DBMD.getDriverVersion ()
.现在,在构建过程中将目录的SVN版本插入到版本信息中。(错误# 21116)在连接池中指定一个以“/* ping */”_exacly_开头的“验证查询”将导致驱动发送一个ping到服务器,并返回一个假的结果集(轻量级得多),当使用ReplicationConnection或LoadBalancedConnection时,将在所有活动连接中发送ping。