张国伟 发表于 3 小时前

TDengine JAVA 语言毗连器

简介

本节简介 TDengine 最紧张且利用最多的毗连器, 本节内容是以教科书式方式列出对外提供的接口及功能及利用过程中要注意的技能细节,各人可以收藏起来做为以后开辟 TDengine 的参考资料。
taos-jdbcdriver 是 TDengine 的官方 Java 语言毗连器,Java 开辟职员可以通过它开辟存取 TDengine 数据库的应用软件。taos-jdbcdriver 实现了 JDBC driver 标准的接口。
TDengine Java 毗连器基于标准 JDBC API 实现,并提供原生毗连与 REST 毗连两种毗连器。
https://i-blog.csdnimg.cn/direct/157e59ede5d043ddbb74ec14922e3c20.png
JDBC 和 JRE 版本兼容性



[*]JDBC:支持 JDBC 4.2 及以上版本。
[*]JRE:支持 JRE 8 及以上版本。
支持的平台



[*]原生毗连支持的平台和 TDengine 客户端驱动支持的平台同等。
[*]WebSocket/REST 毗连支持全部能运行 Java 的平台。
版本汗青

taos-jdbcdriver 版本紧张厘革TDengine 版本3.6.0在 WebSocket 毗连上支持高效写入和 Decimal 数据范例3.3.6.0 及更高版本3.5.3在 WebSocket 毗连上支持无符号数据范例-3.5.2办理了 WebSocket 查询效果集开释 bug-3.5.1办理了数据订阅获取时间戳对象范例标题-3.5.01. 优化了 WebSocket 毗连参数绑定性能,支持参数绑定查询利用二进制数据
2. 优化了 WebSocket 毗连在小查询上的性能
3. WebSocket 毗连上支持设置时区和应用信息3.3.5.0 及更高版本3.4.01. 利用 jackson 库更换 fastjson 库
2. WebSocket 采取独立协议标识
3. 优化配景拉取线程利用,制止用户误用导致超时-3.3.4办理了 getInt 在数据范例为 float 报错-3.3.3办理了 WebSocket statement 关闭导致的内存走漏-3.3.21. 优化 WebSocket 毗连下的参数绑定性能
2. 优化了对 mybatis 的支持-3.3.01. 优化 WebSocket 毗连下的数据传输性能
2. 支持跳过 SSL 验证,默认关闭3.3.2.0 及更高版本3.2.11办理了 Native 毗连关闭效果集 bug-3.2.101. REST/WebSocket 毗连支持传输中的数据压缩
2. WebSocket 主动重连机制,默认关闭
3. Connection 类提供无模式写入的方法
4. 优化了原生毗连的数据拉取性能
5. 修复了一些已知标题
6.元数据获取函数可以返回支持的函数列表-3.2.9办理了 WebSocket prepareStatement 关闭 bug-3.2.81. 优化了主动提交
2. 办理了 WebSocket 手动提交 bug
3.优化 WebSocket prepareStatement 利用一个毗连
4.元数据支持视图-3.2.71. 支持 VARBINARY 和 GEOMETRY 范例
2. 增长 native 毗连的时区设置支持
3. 增长 WebSocket 主动重连功能3.2.0.0 及更高版本3.2.5数据订阅增长 committed()、assignment() 方法3.1.0.3 及更高版本3.2.4数据订阅在 WebSocket 毗连下增长 enable.auto.commit 参数,以及 unsubscribe 方法-3.2.3修复 ResultSet 在一些环境数据分析失败-3.2.2数据订阅支持 seek 功能3.0.5.0 及更高版本3.2.11. WebSocket 毗连支持 schemaless 与 prepareStatement 写入
2. consumer poll 返回效果集为 ConsumerRecord,可通过 value() 获取指定效果集数据3.0.3.0 及更高版本3.2.0存在毗连标题,不保举利用-3.1.0WebSocket 毗连支持订阅功能-3.0.1 - 3.0.4修复一些环境下效果集数据分析错误的标题。3.0.1 在 JDK 11 环境编译,JDK 8 环境下发起利用其他版本-3.0.0支持 TDengine 3.03.0.0.0 及更高版本2.0.42修复 WebSocket 毗连中 wasNull 接口返回值-2.0.41修复 REST 毗连中用户名和暗码转码方式-2.0.39 - 2.0.40增长 REST 毗连/哀求 超时设置-2.0.38JDBC REST 毗连增长批量拉取功能-2.0.37增长对 json tag 支持-2.0.36增长对 schemaless 写入支持-非常和错误码

在报错后,通过 SQLException 可以获取到错误的信息和错误码:
{{#include docs/examples/java/src/main/java/com/taos/example/JdbcBasicDemo.java:jdbc_exception}}
JDBC 毗连器大概报错的错误码包罗 4 种:


[*]JDBC driver 本身的报错(错误码在 0x2301 到 0x2350 之间)
[*]原生毗连方法的报错(错误码在 0x2351 到 0x2360 之间)
[*]数据订阅的报错(错误码在 0x2371 到 0x2380 之间)
[*]TDengine 其他功能模块的报错,请参考 错误码
详细的错误码请参考:
Error CodeDescriptionSuggested Actions0x2301connection already closed毗连已经关闭,查抄毗连环境,或重新创建毗连去实验相干指令。0x2302this operation is NOT supported currently!当前利用接口不支持,可以更换其他毗连方式。0x2303invalid variables参数不正当,请查抄相应接口规范,调解参数范例及巨细。0x2304statement is closedstatement 已经关闭,请查抄 statement 是否关闭后再次利用,或是毗连是否正常。0x2305resultSet is closedresultSet 效果集已经开释,请查抄 resultSet 是否开释后再次利用。0x2306Batch is empty!prepareStatement 添加参数后再实验 executeBatch。0x2307Can not issue data manipulation statements with executeQuery()更新操纵应该利用 executeUpdate(),而不是 executeQuery()。0x2308Can not issue SELECT via executeUpdate()查询操纵应该利用 executeQuery(),而不是 executeUpdate()。0x230dparameter index out of range参数越界,请查抄参数的公道范围。0x230econnection already closed毗连已经关闭,请查抄 Connection 是否关闭后再次利用,或是毗连是否正常。0x230funknown sql type in tdengine请查抄 TDengine 支持的 Data Type 范例。0x2310can’t register JDBC-JNI driver不能注册 JNI 驱动,请查抄 url 是否填写准确。0x2312url is not set请查抄 REST 毗连 url 是否填写准确。0x2314numeric value out of range请查抄获取效果会合数值范例是否利用了准确的接口。0x2315unknown taos type in tdengine在 TDengine 数据范例与 JDBC 数据范例转换时,是否指定了准确的 TDengine 数据范例。0x2317REST 毗连中利用了错误的哀求范例。0x2318REST 毗连中出现了数据传输非常,请查抄网络环境并重试。0x2319user is required创建毗连时缺少用户名信息0x231apassword is required创建毗连时缺少暗码信息0x231chttpEntity is null, sqlREST 毗连中实验出现非常0x231dcan’t create connection with server within通过增长参数 httpConnectTimeout 增长毗连耗时,或是请查抄与 taosAdapter 之间的毗连环境。0x231efailed to complete the task within the specified time通过增长参数 messageWaitTimeout 增长实验耗时,或是请查抄与 taosAdapter 之间的毗连环境。0x2350unknown error未知非常,请在 github 反馈给开辟职员。0x2352Unsupported encoding本地毗连下指定了不支持的字符编码集0x2353internal error of database, please see taoslog for more details本地毗连实验 prepareStatement 时出现错误,请查抄 taos log 举行标题定位。0x2354JNI connection is NULL本地毗连实验下令时,Connection 已经关闭。请查抄与 TDengine 的毗连环境。0x2355JNI result set is NULL本地毗连获取效果集,效果集非常,请查抄毗连环境,并重试。0x2356invalid num of fields本地毗连获取效果集的 meta 信息不匹配。0x2357empty sql string填写准确的 SQL 举行实验。0x2359JNI alloc memory failed, please see taoslog for more details本地毗连分配内存错误,请查抄 taos log 举行标题定位。0x2371consumer properties must not be null!创建订阅时参数为空,请填写准确的参数。0x2372configs contain empty key, failed to set consumer property参数 key 中包罗空值,请填写准确的参数。0x2373failed to set consumer property,参数 value 中包罗空值,请填写准确的参数。0x2375topic reference has been destroyed创建数据订阅过程中,topic 引用被开释。请查抄与 TDengine 的毗连环境。0x2376failed to set consumer topic, topic name is empty创建数据订阅过程中,订阅 topic 名称为空。请查抄指定的 topic 名称是否填写准确。0x2377consumer reference has been destroyed订阅数据传输通道已经关闭,请查抄与 TDengine 的毗连环境。0x2378consumer create error创建数据订阅失败,请根据错误信息查抄 taos log 举行标题定位。0x2379seek offset must not be a negative numberseek 接口参数不能为负值,请利用准确的参数0x237avGroup not found in result setVGroup 没有分配给当前 consumer,由于 Rebalance 机制导致 Consumer 与 VGroup 不是绑定的关系0x2390background thread write error in Efficient Writing高效写入配景线程写入错误,可以制止写入,重修毗连

[*]TDengine Java Connector Error Code
数据范例映射

TDengine 如今支持时间戳、数字、字符、布尔范例,与 Java 对应范例转换如下:
TDengine DataTypeJDBCType备注TIMESTAMPjava.sql.TimestampBOOLjava.lang.BooleanTINYINTjava.lang.ByteTINYINT UNSIGNEDjava.lang.Short仅在 WebSocket 毗连方式支持SMALLINTjava.lang.ShortSMALLINT UNSIGNEDjava.lang.Integer仅在 WebSocket 毗连方式支持INTjava.lang.IntegerINT UNSIGNEDjava.lang.Long仅在 WebSocket 毗连方式支持BIGINTjava.lang.LongBIGINT UNSIGNEDjava.math.BigInteger仅在 WebSocket 毗连方式支持FLOATjava.lang.FloatDOUBLEjava.lang.DoubleBINARYbyte arrayNCHARjava.lang.StringJSONjava.lang.String仅在 tag 中支持VARBINARYbyte[]GEOMETRYbyte[]DECIMALjava.math.BigDecimal注意:由于汗青缘故起因,TDengine 中的 BINARY 底层不是真正的二进制数据,已不发起利用。请用 VARBINARY 范例取代。
GEOMETRY 范例是 little endian 字节序的二进制数据,符合 WKB 规范。详细信息请参考 数据范例
WKB 规范请参考Well-Known Binary (WKB)
对于 java 毗连器,可以利用 jts 库来方便的创建 GEOMETRY 范例对象,序列化后写入 TDengine,这里有一个样例Geometry 示例
示例步调汇总

示例步调源码位于 TDengine/docs/examples/JDBC 下:


[*]JDBCDemo:JDBC 示例源步调。
[*]connectionPools:HikariCP, Druid, dbcp, c3p0 等毗连池中利用 taos-jdbcdriver。
[*]SpringJdbcTemplate:Spring JdbcTemplate 中利用 taos-jdbcdriver。
[*]mybatisplus-demo:Springboot + Mybatis 中利用 taos-jdbcdriver。
[*]springbootdemo:Springboot 中利用 taos-jdbcdriver。
[*]consumer-demo:Consumer 消耗 TDengine 数据示例,可通过参数控制消耗速率。
请参考:JDBC example
常见标题


[*]利用 Statement 的 addBatch() 和 executeBatch() 来实验“批量写入/更新”,为什么没有带来性能上的提拔?
缘故起因:TDengine 的 JDBC 实现中,通过 addBatch 方法提交的 SQL 语句,会按照添加的次序,依次实验,这种方式没有淘汰与服务端的交互次数,不会带来性能上的提拔。
办理方法:1. 在一条 insert 语句中拼接多个 values 值;2. 利用多线程的方式并发插入;3. 利用参数绑定的写入方式

[*]java.lang.UnsatisfiedLinkError: no taos in java.library.path
缘故起因:步调没有找到依赖的本地函数库 taos。
办理方法:Windows 下可以将 C:\TDengine\driver\taos.dll 拷贝到 C:\Windows\System32\ 目次下,Linux 下将创建如下软链
ln -s /usr/local/taos/driver/libtaos.so.x.x.x.x /usr/lib/libtaos.so
即可,macOS 下必要创建软链
ln -s /usr/local/lib/libtaos.dylib /usr/lib/libtaos.dylib

[*]java.lang.UnsatisfiedLinkError: taos.dll Can’t load AMD 64 bit on a IA 32-bit platform
缘故起因:如今 TDengine 只支持 64 位 JDK。
办理方法:重新安装 64 位 JDK。

[*]java.lang.NoSuchMethodError: setByteArray
缘故起因:taos-jdbcdriver 3.* 版本仅支持 TDengine 3.0 及以上版本。
办理方法:利用 taos-jdbcdriver 2.* 版本毗连 TDengine 2.* 版本。

[*]java.lang.NoSuchMethodError: java.nio.ByteBuffer.position(I)Ljava/nio/ByteBuffer; … taos-jdbcdriver-3.0.1.jar
缘故起因:taos-jdbcdriver 3.0.1 版本必要在 JDK 11+ 环境利用。
办理方法:更换 taos-jdbcdriver 3.0.2+ 版本。
别的标题请参考 FAQ
API 参考

JDBC 驱动

taos-jdbcdriver 实现了 JDBC 标准的 Driver 接口,提供了 3 个实现类。


[*]WebSocket 毗连利用驱动类 com.taosdata.jdbc.ws.WebSocketDriver。
[*]原生毗连利用驱动类 com.taosdata.jdbc.TSDBDriver。
[*]REST 毗连利用驱动类 com.taosdata.jdbc.rs.RestfulDriver。
URL 规范

TDengine 的 JDBC URL 规范格式为:
jdbc:://:/?
原生毗连
jdbc:TAOS://taosdemo.com:6030/power?user=root&password=taosdata,利用了 JDBC 原生毗连的 TSDBDriver,创建了到 hostname 为 taosdemo.com,端口为 6030(TDengine 的默认端口),数据库名为 power 的毗连。这个 URL
中指定用户名(user)为 root,暗码(password)为 taosdata。
注意:利用 JDBC 原生毗连,taos-jdbcdriver 必要依赖客户端驱动(Linux 下是 libtaos.so;Windows 下是 taos.dll;macOS 下是 libtaos.dylib)。
对于原生毗连 url 中支持的设置参数如下:


[*]user:登录 TDengine 用户名,默认值 ‘root’。
[*]password:用户登录暗码,默认值 ‘taosdata’。
[*]cfgdir:客户端设置文件目次路径,Linux OS 上默认值 /etc/taos,Windows OS 上默认值 C:/TDengine/cfg。
[*]charset:客户端利用的字符集,默认值为体系字符集。
[*]locale:客户端语言环境,默认值体系当前 locale。
[*]timezone:客户端利用的时区,默认值为体系当前时区。
[*]batchfetch:true:在实验查询时批量拉取效果集;false:逐行拉取效果集。默认值为:true。开启批量拉取同时获取一批数据在查询数据量较大时批量拉取可以有用的提拔查询性能。
[*]batchErrorIgnore:true:在实验 Statement 的 executeBatch 时,假如中心有一条 SQL 实验失败将继续实验下面的 SQL。false:不再实验失败 SQL 后的任何语句。默认值为:false。
JDBC 原生毗连的利用请拜见视频教程。
利用 TDengine 客户端驱动设置文件创建毗连
当利用 JDBC 原生毗连毗连 TDengine 集群时,可以利用 TDengine 客户端驱动设置文件,在设置文件中指定集群的 firstEp、secondEp 等参数。此时在 JDBC url 中不指定 hostname 和 port。
设置如 jdbc:TAOS://:/power?user=root&password=taosdata。
在 TDengine 客户端驱动设置文件中指定 firstEp 和 secondEp,jdbc 会利用客户端的设置文件,创建毗连。当集群中 firstEp 节点失效时,JDBC 会实验利用 secondEp 毗连集群。
TDengine 中,只要包管 firstEp 和 secondEp 中一个节点有用,就可以正常创建到集群的毗连。
   注意:这里的设置文件指的是调用 JDBC Connector 的应用步调地点呆板上的设置文件,Linux OS 上默认值 /etc/taos/taos.cfg,Windows OS 上默认值 C://TDengine/cfg/taos.cfg。
WebSocket 毗连
利用 JDBC WebSocket 毗连,不必要依赖客户端驱动。与 JDBC 原生毗连相比,仅必要:

[*]driverClass 指定为“com.taosdata.jdbc.ws.WebSocketDriver”;
[*]jdbcUrl 以“jdbc:TAOS-WS://”开头;
[*]利用 6041 作为毗连端口。
对于 WebSocket 毗连,url 中的设置参数如下:


[*]user:登录 TDengine 用户名,默认值 ‘root’。
[*]password:用户登录暗码,默认值 ‘taosdata’。
[*]batchErrorIgnore:true:在实验 Statement 的 executeBatch 时,假如中心有一条 SQL 实验失败,继续实验下面的 SQL 了。false:不再实验失败 SQL 后的任何语句。默认值为:false。
[*]httpConnectTimeout:毗连超时时间,单位 ms,默认值为 60000。
[*]messageWaitTimeout:消息超时时间,单位 ms,默认值为 60000。
[*]useSSL:毗连中是否利用 SSL。
[*]timezone:客户端利用的时区,毗连上收效,默认值为体系时区。保举不设置,利用体系时区性能更好。
注意:部门设置项(比如:locale、charset)在 WebSocket 毗连中不收效。
REST 毗连
利用 JDBC REST 毗连,不必要依赖客户端驱动。与 JDBC 原生毗连相比,仅必要:

[*]driverClass 指定为“com.taosdata.jdbc.rs.RestfulDriver”;
[*]jdbcUrl 以“jdbc:TAOS-RS://”开头;
[*]利用 6041 作为毗连端口。
对于 REST 毗连,url 中的设置参数如下:


[*]user:登录 TDengine 用户名,默认值 ‘root’。
[*]password:用户登录暗码,默认值 ‘taosdata’。
[*]batchErrorIgnore:true:在实验 Statement 的 executeBatch 时,假如中心有一条 SQL 实验失败,继续实验下面的 SQL 了。false:不再实验失败 SQL 后的任何语句。默认值为:false。
[*]httpConnectTimeout:毗连超时时间,单位 ms,默认值为 60000。
[*]httpSocketTimeout:socket 超时时间,单位 ms,默认值为 60000。
[*]useSSL:毗连中是否利用 SSL。
[*]httpPoolSize:REST 并发哀求巨细,默认 20。
注意:部门设置项(比如:locale、charset 和 timezone)在 REST 毗连中不收效。
:::note


[*]与原生毗连方式差别,REST 接口是无状态的。在利用 JDBC REST 毗连时,必要在 SQL 中指定表、超等表的数据库名称。
[*]假如在 url 中指定了 dbname,那么,JDBC REST 毗连会默认利用/rest/sql/dbname 作为 restful 哀求的 url,在 SQL 中不必要指定 dbname。比方:url 为 jdbc:TAOS-RS://127.0.0.1:6041/power,那么,可以实验 sql:INSERT INTO d1001 USING meters TAGS(2,'California.SanFrancisco') VALUES (NOW, 10.30000, 219, 0.31000);
:::
Properties

除了通过指定的 URL 获取毗连,还可以利用 Properties 指定创建毗连时的参数。
   注意:应用中设置的 client parameter 为历程级别的,即假如要更新 client 的参数,必要重启应用。这是由于 client parameter 是全局参数,仅在应用步调的第一次设置收效。
properties 中的设置参数如下:


[*] TSDBDriver.PROPERTY_KEY_USER:登录 TDengine 用户名,默认值 ‘root’。
[*] TSDBDriver.PROPERTY_KEY_PASSWORD:用户登录暗码,默认值 ‘taosdata’。
[*] TSDBDriver.PROPERTY_KEY_BATCH_LOAD:true:在实验查询时批量拉取效果集;false:逐行拉取效果集。默认值为:false。因汗青缘故起因利用 REST 毗连时,若设置此参数为 true 会酿成 WebSocket 毗连。
[*] TSDBDriver.PROPERTY_KEY_BATCH_ERROR_IGNORE:true:在实验 Statement 的 executeBatch 时,假如中心有一条 SQL 实验失败,继续实验下面的 sq 了。false:不再实验失败 SQL 后的任何语句。默认值为:false。
[*] TSDBDriver.PROPERTY_KEY_CONFIG_DIR:仅在利用 JDBC 原生毗连时收效。客户端设置文件目次路径,Linux OS 上默认值 /etc/taos,Windows OS 上默认值 C:/TDengine/cfg。
[*] TSDBDriver.PROPERTY_KEY_CHARSET:客户端利用的字符集,默认值为体系字符集。
[*] TSDBDriver.PROPERTY_KEY_LOCALE:仅在利用 JDBC 原生毗连时收效。客户端语言环境,默认值体系当前 locale。
[*] TSDBDriver.PROPERTY_KEY_TIME_ZONE:

[*]原生毗连:客户端利用的时区,默认值为体系当前时区,全局收效。由于汗青的缘故起因,我们只支持 POSIX 标准的部门规范,如 UTC-8(代表中国上上海), GMT-8,Asia/Shanghai 这几种情势。
[*]WebSocket 毗连:客户端利用的时区,毗连上收效,默认值为体系时区。仅支持 IANA 时区,即 Asia/Shanghai 这种情势。保举不设置,利用体系时区性能更好。

[*] TSDBDriver.HTTP_CONNECT_TIMEOUT:毗连超时时间,单位 ms,默认值为 60000。仅在 REST 毗连时收效。
[*] TSDBDriver.HTTP_SOCKET_TIMEOUT:socket 超时时间,单位 ms,默认值为 60000。仅在 REST 毗连且 batchfetch 设置为 false 时收效。
[*] TSDBDriver.PROPERTY_KEY_MESSAGE_WAIT_TIMEOUT:消息超时时间,单位 ms,默认值为 60000。仅 WebSocket 毗连下有用。
[*] TSDBDriver.PROPERTY_KEY_USE_SSL:毗连中是否利用 SSL。仅在 WebSocket/REST 毗连时收效。
[*] TSDBDriver.HTTP_POOL_SIZE:REST 并发哀求巨细,默认 20。
[*] TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION:传输过程是否启用压缩。仅在利用 REST/WebSocket 毗连时收效。true:启用,false:不启用。默以为 false。
[*] TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT:是否启用主动重连。仅在利用 WebSocket 毗连时收效。true:启用,false:不启用。默以为 false。
       注意:启用主动重连仅对简朴实验 SQL 语句以及 无模式写入、数据订阅有用。对于参数绑定无效。主动重连仅对毗连创建时通过参数指定命据库有用,对背面的 use db 语句切换数据库无效。
[*] TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS:主动重连重试隔断,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时收效。
[*] TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT:主动重连重试次数,默认值 3,仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时收效。
[*] TSDBDriver.PROPERTY_KEY_DISABLE_SSL_CERT_VALIDATION:关闭 SSL 证书验证。仅在利用 WebSocket 毗连时收效。true:启用,false:不启用。默以为 false。
[*] TSDBDriver.PROPERTY_KEY_APP_NAME:App 名称,可用于 show connections 查询效果表现。仅在利用 WebSocket 毗连时收效。默认值为 java。
[*] TSDBDriver.PROPERTY_KEY_APP_IP:App IP,可用于 show connections 查询效果表现。仅在利用 WebSocket 毗连时收效。默认值为空。
[*] TSDBDriver.PROPERTY_KEY_ASYNC_WRITE:高效写入模式,如今仅支持 stmt 方式。仅在利用 WebSocket 毗连时收效。默认值为空,即不启用高效写入模式。
[*] TSDBDriver.PROPERTY_KEY_BACKEND_WRITE_THREAD_NUM:高效写入模式下,配景写入线程数。仅在利用 WebSocket 毗连时收效。默认值为 10。
[*] TSDBDriver.PROPERTY_KEY_BATCH_SIZE_BY_ROW:高效写入模式下,写入数据的批巨细,单位是行。仅在利用 WebSocket 毗连时收效。默认值为 1000。
[*] TSDBDriver.PROPERTY_KEY_CACHE_SIZE_BY_ROW:高效写入模式下,缓存的巨细,单位是行。仅在利用 WebSocket 毗连时收效。默认值为 10000。
[*] TSDBDriver.PROPERTY_KEY_COPY_DATA:高效写入模式下,是否拷贝应用通过 addBatch 传入的二进制范例数据。仅在利用 WebSocket 毗连时收效。默认值为 false。
[*] TSDBDriver.PROPERTY_KEY_STRICT_CHECK:高效写入模式下,是否校验表名长度和变长数据范例长度。仅在利用 WebSocket 毗连时收效。默认值为 false。
[*] TSDBDriver.PROPERTY_KEY_RETRY_TIMES:高效写入模式下,写入失败重试次数。仅在利用 WebSocket 毗连时收效。默认值为 3。
别的对 JDBC 原生毗连,通过指定 URL 和 Properties 还可以指定其他参数,比如日志级别、SQL 长度等。
设置参数的优先级
通过前面三种方式获取毗连,假如设置参数在 url、Properties、客户端设置文件中有重复,则参数的优先级由高到低分别如下:

[*]JDBC URL 参数,如上所述,可以在 JDBC URL 的参数中指定。
[*]Properties connProps
[*]利用原生毗连时,TDengine 客户端驱动的设置文件 taos.cfg
比方:在 url 中指定了 password 为 taosdata,在 Properties 中指定了 password 为 taosdemo,那么,JDBC 会利用 url 中的 password 创建毗连。
接口分析



[*] Connection connect(String url, java.util.Properties info) throws SQLException

[*]接口分析:毗连 TDengine 数据库。
[*]参数分析:

[*]url:毗连地点 url,详见上文 URL 规范。
[*]info:毗连属性,详见上文 Properties 章节。

[*]返回值:毗连对象。
[*]非常:毗连失败抛出 SQLException 非常。

[*] boolean acceptsURL(String url) throws SQLException

[*]接口分析:判定驱动是否支持 url。
[*]参数分析:

[*]url:毗连地点 url。

[*]返回值:true:支持,false:不支持。
[*]非常:url 非法抛出 SQLException 非常。

[*] DriverPropertyInfo[] getPropertyInfo(String url, java.util.Properties info) throws SQLException

[*]接口分析:获取实验毗连数据库时大概必要的全下属性的详细信息。这些属性信息被封装在 DriverPropertyInfo 对象数组中返回。每个 DriverPropertyInfo 对象包罗了一个数据库毗连属性的详细信息,比如属性名、属性值、形貌等。
[*]参数分析:

[*]url:一个 String 范例的参数,表现数据库的 URL。
[*]info:一个 java.util.Properties 范例的参数,包罗了实验毗连时用户大概提供的属性列表。

[*]返回值:返回值范例为 DriverPropertyInfo[],即 DriverPropertyInfo 对象的数组。每个 DriverPropertyInfo 对象包罗了一个特定的数据库毗连属性的详细信息。
[*]非常:假如在获取属性信息的过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getMajorVersion()

[*]接口分析:获取 JDBC 驱动步调的主版本号。

[*] int getMinorVersion()

[*]接口分析:获取 JDBC 驱动步调的次版本号。

数据库元数据

DatabaseMetaData 是 JDBC API 的一部门,它提供了关于数据库的元数据的详细信息,元数据意味着关于数据库数据的数据。通过 DatabaseMetaData 接口,可以查询数据库服务器的详细信息,比如数据库产物名称、版本、已安装的功能、表、视图、存储过程的列表等。这对于相识和顺应差别数据库的特性非常有用。


[*] String getURL() throws SQLException

[*]接口分析:获取用于毗连数据库的 URL。
[*]返回值:毗连数据库的 URL。
[*]非常:获取失败将抛出 SQLException 非常。

[*] String getUserName() throws SQLException

[*]接口分析:获取用于毗连获取数据库的用户名。
[*]返回值:毗连数据库的用户名。
[*]非常:获取失败将抛出 SQLException 非常。

[*] String getDriverName() throws SQLException

[*]接口分析:获取 JDBC 驱动步调的名称。
[*]返回值:驱动名称字符串。
[*]非常:获取失败将抛出 SQLException 非常。

[*] String getDriverVersion() throws SQLException

[*]接口分析:获取 JDBC 驱动版本。
[*]返回值:驱动版本字符串。
[*]非常:获取失败将抛出 SQLException 非常。

[*] int getDriverMajorVersion()

[*]接口分析:获取 JDBC 驱动主版本号。

[*] int getDriverMinorVersion()

[*]接口分析:获取 JDBC 驱动次版本号。

[*] String getDatabaseProductName() throws SQLException

[*]接口分析:获取数据库产物的名称。

[*] String getDatabaseProductVersion() throws SQLException

[*]接口分析:获取数据库产物的版本号。

[*] String getIdentifierQuoteString() throws SQLException

[*]接口分析:获取用于引用 SQL 标识符的字符串。

[*] String getSQLKeywords() throws SQLException

[*]接口分析:获取数据库特有的 SQL 关键字列表。

[*] String getNumericFunctions() throws SQLException

[*]接口分析:获取数据库支持的数值函数名称列表。

[*] String getStringFunctions() throws SQLException

[*]接口分析:获取数据库支持的字符串函数名称列表。

[*] String getSystemFunctions() throws SQLException

[*]接口分析:获取数据库支持的体系函数名称列表。

[*] String getTimeDateFunctions() throws SQLException

[*]接口分析:获取数据库支持的时间日期函数名称列表。

[*] String getCatalogTerm() throws SQLException

[*]接口分析:获取数据库中目次的术语。

[*] String getCatalogSeparator() throws SQLException

[*]接口分析:获取用于分隔目次和表名的分隔符。

[*] int getDefaultTransactionIsolation() throws SQLException

[*]接口分析:获取数据库的默认变乱隔离级别。

[*] boolean supportsTransactionIsolationLevel(int level) throws SQLException

[*]接口分析:判定数据库是否支持给定的变乱隔离级别。
[*]参数分析:

[*]level:变乱隔离级别。

[*]返回值:true:支持,false:不支持。
[*]非常:操纵失败抛出 SQLException 非常。

[*] ResultSet getTables(String catalog, String schemaPattern, String tableNamePattern, String[] types) throws SQLException

[*]接口分析:获取数据库中匹配指定模式的表信息。
[*]参数分析:

[*]catalog:目次名称;null 表现不指定目次。
[*]schemaPattern:模式名称的模式;null 表现不指定模式。
[*]tableNamePattern:表名称的模式。
[*]types:表范例列表,返回指定范例的表。

[*]返回值:包罗表信息的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] ResultSet getCatalogs() throws SQLException

[*]接口分析:获取数据库中全部目次的信息。
[*]返回值:包罗目次信息的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] ResultSet getTableTypes() throws SQLException

[*]接口分析:获取数据库支持的表范例。
[*]返回值:包罗表范例的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern, String columnNamePattern) throws SQLException

[*]接口分析:获取指定表中匹配指定模式的列信息。
[*]参数分析:

[*]catalog:目次名称;null 表现不指定目次。
[*]schemaPattern:模式名称的模式;null 表现不指定模式。
[*]tableNamePattern:表名称的模式。
[*]columnNamePattern:列名称的模式。

[*]返回值:包罗列信息的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] ResultSet getPrimaryKeys(String catalog, String schema, String table) throws SQLException

[*]接口分析:获取指定表的主键信息。
[*]参数分析:

[*]catalog:目次名称;null 表现不指定目次。
[*]schema:模式名称;null 表现不指定模式。
[*]table:表名称。

[*]返回值:包罗主键信息的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] Connection getConnection() throws SQLException

[*]接口分析:获取数据库毗连。
[*]返回值:数据库毗连 Connection 对象。
[*]非常:获取毗连失败抛出 SQLException 非常。

[*] ResultSet getSuperTables(String catalog, String schemaPattern, String tableNamePattern) throws SQLException

[*]接口分析:获取指定表的父表信息。
[*]参数分析:

[*]catalog:目次名称;null 表现不指定目次。
[*]schemaPattern:模式名称的模式;null 表现不指定模式。
[*]tableNamePattern:表名称的模式。

[*]返回值:包罗父表信息的 ResultSet。
[*]非常:操纵失败抛出 SQLException 非常。

[*] boolean supportsResultSetHoldability(int holdability) throws SQLException

[*]接口分析:判定数据库是否支持给定的 ResultSet 持有性。
[*]参数分析:

[*]holdability:ResultSet 的持有性。

[*]返回值:true:支持,false:不支持。
[*]非常:操纵失败抛出 SQLException 非常。

[*] int getSQLStateType() throws SQLException

[*]接口分析:获取数据库利用的 SQLSTATE 范例。
[*]返回值:SQLSTATE 范例代码。
[*]非常:操纵失败抛出 SQLException 非常。

支持类接口返回 true 的接口列表,别的返回 false 的接口不再赘述。
接口方法分析boolean nullsAreSortedAtStart()判定 NULL 值是否被排序在前boolean storesLowerCaseIdentifiers()判定数据库是否将标识符存储为小写boolean supportsAlterTableWithAddColumn()判定数据库是否支持利用 ALTER TABLE 添加列boolean supportsAlterTableWithDropColumn()判定数据库是否支持利用 ALTER TABLE 删除列boolean supportsColumnAliasing()判定数据库是否支持列别名boolean supportsGroupBy()判定数据库是否支持 GROUP BY 语句boolean isCatalogAtStart()判定在数据库中目次名是否出如今完全限定名的开头boolean supportsCatalogsInDataManipulation()判定数据库在数据操纵语句中是否支持目次名毗连功能

JDBC 驱动支持创建毗连,返回支持 JDBC 标准的 Connection 接口的对象,还提供了 AbstractConnection 接口,扩充了一些无模式写入接口。
标准接口



[*]Statement createStatement() throws SQLException

[*]接口分析:创建一个 Statement 对象来实验 SQL 语句。Statement 接口详细分析见下文实验 SQL。
[*]返回值:创建的 Statement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]PreparedStatement prepareStatement(String sql) throws SQLException

[*]接口分析:创建一个 PreparedStatement 对象来实验给定的 SQL 语句,PreparedStatement 接口详细分析见下文实验 SQL。
[*]参数分析:

[*]sql:预编译的 SQL 语句。

[*]返回值:创建的 PreparedStatement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]String nativeSQL(String sql) throws SQLException

[*]接口分析:将 SQL 语句转换为数据库特定的 SQL 语法。
[*]参数分析:

[*]sql:要转换的 SQL 语句。

[*]返回值:转换后的 SQL 语句。
[*]非常:操纵失败抛出 SQLException 非常。

[*]void close() throws SQLException

[*]接口分析:关闭数据库毗连。
[*]非常:操纵失败抛出 SQLException 非常。

[*]boolean isClosed() throws SQLException

[*]接口分析:判定数据库毗连是否已关闭。
[*]返回值:true:已关闭,false:未关闭。
[*]非常:操纵失败抛出 SQLException 非常。

[*]DatabaseMetaData getMetaData() throws SQLException

[*]接口分析:获取数据库的元数据。
[*]返回值:数据库的元数据。
[*]非常:操纵失败抛出 SQLException 非常。

[*]void setCatalog(String catalog) throws SQLException

[*]接口分析:设置当前毗连的默认数据库。
[*]参数分析:

[*]catalog:要设置的数据库名称。

[*]非常:操纵失败抛出 SQLException 非常。

[*]String getCatalog() throws SQLException

[*]接口分析:获取当前毗连的默认数据库。
[*]返回值:当前毗连的目次名称。
[*]非常:操纵失败抛出 SQLException 非常。

[*]Statement createStatement(int resultSetType, int resultSetConcurrency) throws SQLException

[*]接口分析:创建一个 Statement 对象,指定 ResultSet 范例和并发模式。
[*]参数分析:

[*]resultSetType:ResultSet 范例。
[*]resultSetConcurrency:并发模式。

[*]返回值:创建的 Statement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]Statement createStatement(int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException

[*]接口分析:创建一个 Statement 对象,指定 ResultSet 范例、并发模式和持有性。
[*]参数分析:

[*]resultSetType:ResultSet 范例。
[*]resultSetConcurrency:并发模式。
[*]resultSetHoldability:持有性。

[*]返回值:创建的 Statement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency) throws SQLException

[*]接口分析:创建一个 PreparedStatement 对象,指定 SQL、ResultSet 范例和并发模式。
[*]参数分析:

[*]sql:预编译的 SQL 语句。
[*]resultSetType:ResultSet 范例。
[*]resultSetConcurrency:并发模式。

[*]返回值:创建的 PreparedStatement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]PreparedStatement prepareStatement(String sql, int resultSetType, int resultSetConcurrency, int resultSetHoldability) throws SQLException

[*]接口分析:创建一个 PreparedStatement 对象,指定 SQL、ResultSet 范例、并发模式和持有性。
[*]参数分析:

[*]sql:预编译的 SQL 语句。
[*]resultSetType:ResultSet 范例。
[*]resultSetConcurrency:并发模式。
[*]resultSetHoldability:持有性。

[*]返回值:创建的 PreparedStatement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]PreparedStatement prepareStatement(String sql, int autoGeneratedKeys) throws SQLException

[*]接口分析:创建一个 PreparedStatement 对象,指定 SQL 语句和主动天生键的标记。
[*]参数分析:

[*]sql:预编译的 SQL 语句。
[*]autoGeneratedKeys:指示是否应天生主动键的标记。

[*]返回值:创建的 PreparedStatement 对象。
[*]非常:操纵失败抛出 SQLException 非常。

[*]void setHoldability(int holdability) throws SQLException

[*]接口分析:设置 ResultSet 对象的默认持有性。
[*]参数分析:

[*]holdability:ResultSet 的持有性。

[*]非常:操纵失败抛出 SQLException 非常。

[*]int getHoldability() throws SQLException

[*]接口分析:获取 ResultSet 对象的默认持有性。
[*]返回值:ResultSet 的持有性。
[*]非常:操纵失败抛出 SQLException 非常。

[*]boolean isValid(int timeout) throws SQLException

[*]接口分析:检测数据库毗连是否有用。
[*]参数分析:

[*]timeout:等候有用性查抄的超时时间,单位秒。

[*]返回值:true:毗连有用,false:毗连无效。
[*]非常:操纵失败抛出 SQLException 非常。

[*]void setClientInfo(String name, String value) throws SQLClientInfoException

[*]接口分析:设置客户端信息属性。
[*]参数分析:

[*]name:属性名。
[*]value:属性值。

[*]非常:设置失败抛出 SQLClientInfoException 非常。

[*]void setClientInfo(Properties properties) throws SQLClientInfoException

[*]接口分析:设置一组客户端信息属性。
[*]参数分析:

[*]properties:属性聚集。

[*]非常:设置失败抛出 SQLClientInfoException 非常。

[*]String getClientInfo(String name) throws SQLException

[*]接口分析:获取指定的客户端信息属性值。
[*]参数分析:

[*]name:属性名。

[*]返回值:属性值。
[*]非常:操纵失败抛出 SQLException 非常。

[*]Properties getClientInfo() throws SQLException

[*]接口分析:获取全部客户端信息属性。
[*]返回值:包罗全部客户端信息属性的 Properties 对象。
[*]非常:操纵失败抛出 SQLException 非常。

无模式写入

注:下面 abstract 范例接口会被详细实现类实现,因此创建毗连后得到毗连对象可以直接调用。


[*]abstract void write(String[] lines, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType, Integer ttl, Long reqId) throws SQLException

[*]接口分析:以指定的协议范例、时间戳范例、TTL(生存时间)和哀求 ID 写入多行数据。
[*]参数分析:

[*]lines:待写入的数据行数组。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。
[*]ttl:数据的生存时间,单位天。
[*]reqId:哀求 ID。

[*]非常:操纵失败抛出 SQLException 非常。

[*]void write(String[] lines, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException

[*]接口分析:以指定的协议范例和时间戳范例写入多行数据。
[*]参数分析:

[*]lines:待写入的数据行数组。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。

[*]非常:操纵失败抛出 SQLException 非常。

[*]void write(String line, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException

[*]接口分析:以指定的协议范例和时间戳范例写入单行数据。
[*]参数分析:

[*]line:待写入的数据行。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。

[*]非常:操纵失败抛出 SQLException 非常。

[*]void write(List<String> lines, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException

[*]接口分析:以指定的协议范例和时间戳范例写入多行数据(利用列表)。
[*]参数分析:

[*]lines:待写入的数据行列表。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。

[*]非常:操纵失败抛出 SQLException 非常。

[*]int writeRaw(String line, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType) throws SQLException

[*]接口分析:以指定的协议范例和时间戳范例写入多行回车符分割的原始数据,回车符分割,并返回操纵效果。
[*]参数分析:

[*]line:待写入的原始数据。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。

[*]返回值:操纵效果。
[*]非常:操纵失败抛出 SQLException 非常。

[*]abstract int writeRaw(String line, SchemalessProtocolType protocolType, SchemalessTimestampType timestampType, Integer ttl, Long reqId) throws SQLException

[*]接口分析:以指定的协议范例、时间戳范例、TTL(生存时间)和哀求 ID 写入多行回车符分割的原始数据,并返回操纵效果。
[*]参数分析:

[*]line:待写入的原始数据。
[*]protocolType:协议范例:支持 InfluxDB LINE,OpenTSDB TELNET,OpenTSDB JSON 三种。
[*]timestampType:时间戳范例,支持 HOURS,MINUTES,SECONDS,MILLI_SECONDS,MICRO_SECONDS 和 NANO_SECONDS。
[*]ttl:数据的生存时间,单位天。
[*]reqId:哀求 ID。

[*]返回值:操纵效果。
[*]非常:操纵失败抛出 SQLException 非常。

实验 SQL

JDBC 驱动提供了符合 JDBC 标准的 Statement 接口,支持以下功能:

[*]实验 SQL 语句:Statement 接口紧张用于实验静态 SQL 语句,并返回其天生的效果对象。
[*]查询实验:可以实验返回数据集的查询(SELECT 语句)。
[*]更新实验:可以实验影响行数的 SQL 语句,如 INSERT、UPDATE、DELETE 等。
[*]批量实验:支持批量实验多个 SQL 语句,以进步应用步调运行服从。
[*]获取效果:可以获取查询实验后返回的效果集(ResultSet 对象),并遍历查询返回的数据。
[*]获取更新计数:对于非查询 SQL 语句,可以获取实验后影响的行数。
[*]关闭资源:提供了关闭 Statement 对象的方法,以开释数据库资源。
别的 JDBC 驱动还提供了用于哀求链路跟踪的扩展接口。
标准接口



[*] ResultSet executeQuery(String sql) throws SQLException

[*]接口分析:实验给定的 SQL 语句,该语句返回单个 ResultSet 对象。
[*]参数分析:

[*]sql:要实验的 SQL 查询语句。

[*]返回值:查询效果集 ResultSet。
[*]非常:实验查询过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int executeUpdate(String sql) throws SQLException

[*]接口分析:实验给定的 SQL 语句,可以是 INSERT 或 DELETE 语句,或不返回任何内容的 SQL 语句。
[*]参数分析:

[*]sql:要实验的 SQL 更新语句。

[*]返回值:受影响的行数。
[*]非常:实验更新过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] void close() throws SQLException

[*]接口分析:立刻开释此 Statement 对象的数据库和 JDBC 资源。
[*]非常:关闭过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getMaxFieldSize() throws SQLException

[*]接口分析:获取可以在 ResultSet 对象中读取的最大字符和二进制列值的字节数。
[*]返回值:最大列巨细。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getQueryTimeout() throws SQLException

[*]接口分析:获取当前 Statement 对象的查询超时时间。
[*]返回值:查询超时时间(以秒为单位)。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] void setQueryTimeout(int seconds) throws SQLException

[*]接口分析:设置当前 Statement 对象的查询超时时间。
[*]参数分析:

[*]seconds:查询超时时间(以秒为单位)。

[*]非常:设置过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] boolean execute(String sql) throws SQLException

[*]接口分析:实验给定的 SQL 语句,该语句大概返回多个效果。
[*]参数分析:

[*]sql:要实验的 SQL 语句。

[*]返回值:true 表现返回的是 ResultSet 对象;false 表现返回的是更新计数或没有用果。
[*]非常:实验过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] ResultSet getResultSet() throws SQLException

[*]接口分析:获取当前 Statement 对象天生的 ResultSet 对象。
[*]返回值:当前 Statement 对象天生的效果集。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getUpdateCount() throws SQLException

[*]接口分析:获取当前 Statement 对象实验的更新计数。
[*]返回值:受影响的行数;假如当前效果是 ResultSet 对象或没有用果,则返回 -1。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] boolean getMoreResults() throws SQLException

[*]接口分析:移动到当前 Statement 对象的下一个效果,查抄它是否为 ResultSet 对象。
[*]返回值:true 表现下一个效果是 ResultSet 对象;false 表现下一个效果是更新计数或没有更多效果。
[*]非常:移动过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getFetchDirection() throws SQLException

[*]接口分析:获取 Statement 对象从数据库中获取行的方向。
[*]返回值:获取行的方向,TDengine 只支持 FETCH_FORWARD 方向。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] void setFetchSize(int rows) throws SQLException

[*]接口分析:提示 JDBC 驱动步调每次从数据库中获取多少行。
[*]参数分析:

[*]rows:每次获取的行数。

[*]非常:设置过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getFetchSize() throws SQLException

[*]接口分析:获取 Statement 对象的默认获取巨细。
[*]返回值:默认的获取巨细。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getResultSetConcurrency() throws SQLException

[*]接口分析:获取 ResultSet 对象的并发模式。
[*]返回值:ResultSet 对象的并发模式。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getResultSetType() throws SQLException

[*]接口分析:获取 ResultSet 对象的范例。
[*]返回值:ResultSet 对象的范例。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] void addBatch(String sql) throws SQLException

[*]接口分析:将给定的 SQL 语句添加到当前 Statement 对象的批处理处罚中。
[*]参数分析:

[*]sql:要添加到批处理处罚中的 SQL 语句。

[*]非常:添加过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] void clearBatch() throws SQLException

[*]接口分析:清空当前 Statement 对象的批处理处罚。
[*]非常:清空过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int[] executeBatch() throws SQLException

[*]接口分析:实验批处理处罚中的全部 SQL 语句。
[*]返回值:批处理处罚中每个 SQL 语句影响的行数。
[*]非常:实验过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] Connection getConnection() throws SQLException

[*]接口分析:获取产生此 Statement 对象的 Connection 对象。
[*]返回值:产生此 Statement 对象的数据库毗连。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] int getResultSetHoldability() throws SQLException

[*]接口分析:获取 ResultSet 对象的可保持性。
[*]返回值:ResultSet 对象的可保持性。
[*]非常:获取过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

[*] boolean isClosed() throws SQLException

[*]接口分析:查抄此 Statement 对象是否已关闭。
[*]返回值:true 表现此 Statement 对象已关闭;false 表现未关闭。
[*]非常:查抄过程中发生数据库访问错误或其他错误,将抛出 SQLException 非常。

扩展接口

扩展接口紧张用于哀求链路跟踪。


[*] ResultSet executeQuery(String sql, Long reqId) throws SQLException

[*]接口分析:实验给定的 SQL 查询语句
[*]参数分析:

[*]sql:要实验的 SQL 查询语句
[*]reqId:哀求 id

[*]返回值:包罗查询效果的 ResultSet 对象
[*]非常:实验查询失败抛出 SQLException 非常

[*] int executeUpdate(String sql, Long reqId) throws SQLException

[*]接口分析:实验给定的 SQL 更新语句
[*]参数分析:

[*]sql:要实验的 SQL 更新语句
[*]reqId:哀求 id

[*]返回值:表现受影响的行数
[*]非常:实验更新失败抛出 SQLException 非常

[*] boolean execute(String sql, Long reqId) throws SQLException

[*]接口分析:实验给定的 SQL 语句,该语句大概是 INSERT、UPDATE、DELETE 大概 DDL 语句
[*]参数分析:

[*]sql:要实验的 SQL 语句
[*]reqId:哀求 id

[*]返回值:假如第一个效果是 ResultSet 对象,则返回 true;假如是更新计数大概没有用果,则返回 false
[*]非常:实验语句失败抛出 SQLException 非常

效果获取

JDBC 驱动支持标准的 ResultSet 接口,以及对应的效果集元数据 ResultSetMetaData 接口,提供了用于读取效果会合元数据和数据的方法。
效果集

JDBC 驱动支持标准的 ResultSet 接口,提供了用于读取效果会合元数据和数据的方法。


[*] ResultSetMetaData getMetaData() throws SQLException

[*]接口分析:获取此 ResultSet 对象的列的数目、范例和属性。
[*]返回值:此 ResultSet 对象的数据的 ResultSetMetaData 对象。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean next() throws SQLException

[*]接口分析:将游标从当前位置向前移动一行。用于遍历查询效果集。
[*]返回值:假如新的当前行有用,则返回 true;假如效果会合没有更多行,则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] void close() throws SQLException

[*]接口分析:立刻开释此 ResultSet 对象的数据库和 JDBC 资源,而不是等候该对象主动关闭时的资源开释。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean wasNull() throws SQLException

[*]接口分析:陈诉上一次读取的列值是否为 NULL。
[*]返回值:假如上一次读取的列值是 NULL,则返回 true;否则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] String getString(int columnIndex) throws SQLException

[*]接口分析:以 Java String 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号,第一列是 1,第二列是 2,以此类推。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean getBoolean(int columnIndex) throws SQLException

[*]接口分析:获取指定列的值作为 Java boolean。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:假如指定列的值为 true,则返回 true;假如值为 false 或 NULL,则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] byte getByte(int columnIndex) throws SQLException

[*]接口分析:以 Java byte 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] short getShort(int columnIndex) throws SQLException

[*]接口分析:以 Java short 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] int getInt(int columnIndex) throws SQLException

[*]接口分析:以 Java int 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] long getLong(int columnIndex) throws SQLException

[*]接口分析:以 Java long 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0L。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] float getFloat(int columnIndex) throws SQLException

[*]接口分析:以 Java float 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0.0f。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] double getDouble(int columnIndex) throws SQLException

[*]接口分析:以 Java double 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 0.0d。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] byte[] getBytes(int columnIndex) throws SQLException

[*]接口分析:以字节数组的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值作为字节数组;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Date getDate(int columnIndex) throws SQLException

[*]接口分析:获取指定列的值作为 java.sql.Date 对象。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的日期值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Time getTime(int columnIndex) throws SQLException

[*]接口分析:获取指定列的值作为 java.sql.Time 对象。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的时间值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Timestamp getTimestamp(int columnIndex) throws SQLException

[*]接口分析:以 java.sql.Timestamp 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的时间戳值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] String getNString(int columnIndex) throws SQLException

[*]接口分析:获取指定列的值作为 Java String。此方法用于读取 NCHAR、NVARCHAR 和 LONGNVARCHAR 范例的列,以支持国际化字符集。
[*]参数分析:

[*]columnIndex:要获取其值的列的编号(从 1 开始)。

[*]返回值:指定列的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Object getObject(int columnIndex) throws SQLException

[*]接口分析:以 Java Object 的情势获取指定列的值。
[*]参数分析:

[*]columnIndex:列的编号。

[*]返回值:返回指定列的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] String getString(String columnLabel) throws SQLException

[*]接口分析:以 Java String 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean getBoolean(String columnLabel) throws SQLException

[*]接口分析:获取指定列名的值作为 Java boolean。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:假如指定列名的值为 true,则返回 true;假如值为 false 或 NULL,则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] byte getByte(String columnLabel) throws SQLException

[*]接口分析:以 Java byte 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] short getShort(String columnLabel) throws SQLException

[*]接口分析:以 Java short 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] int getInt(String columnLabel) throws SQLException

[*]接口分析:以 Java int 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] long getLong(String columnLabel) throws SQLException

[*]接口分析:以 Java long 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0L。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] float getFloat(String columnLabel) throws SQLException

[*]接口分析:以 Java float 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0.0f。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] double getDouble(String columnLabel) throws SQLException

[*]接口分析:以 Java double 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 0.0d。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] byte[] getBytes(String columnLabel) throws SQLException

[*]接口分析:以字节数组的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值作为字节数组;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Date getDate(String columnLabel) throws SQLException

[*]接口分析:获取指定列名的值作为 java.sql.Date 对象。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的日期值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Time getTime(String columnLabel) throws SQLException

[*]接口分析:获取指定列名的值作为 java.sql.Time 对象。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的时间值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Timestamp getTimestamp(String columnLabel) throws SQLException

[*]接口分析:以 java.sql.Timestamp 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的时间戳值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] String getNString(String columnLabel) throws SQLException

[*]接口分析:获取指定列名的值作为 Java String。此方法用于读取 NCHAR、NVARCHAR 和 LONGNVARCHAR 范例的列,以支持国际化字符集。
[*]参数分析:

[*]columnLabel:要获取其值的列的标署名。

[*]返回值:指定列名的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] Object getObject(String columnLabel) throws SQLException

[*]接口分析:以 Java Object 的情势获取指定列名的值。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:返回指定列名的值;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] int findColumn(String columnLabel) throws SQLException

[*]接口分析:获取给定列名的列编号。
[*]参数分析:

[*]columnLabel:列的标署名。

[*]返回值:给定列名的列编号。
[*]非常:假如列名不存在或发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean isBeforeFirst() throws SQLException

[*]接口分析:判定游标是否在第一行之前。
[*]返回值:假如游标在第一行之前,则返回 true;否则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean isAfterLast() throws SQLException

[*]接口分析:判定游标是否在末了一行之后。
[*]返回值:假如游标在末了一行之后,则返回 true;否则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean isFirst() throws SQLException

[*]接口分析:判定游标是否在第一行。
[*]返回值:假如游标在第一行,则返回 true;否则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] boolean isLast() throws SQLException

[*]接口分析:判定游标是否在末了一行。
[*]返回值:假如游标在末了一行,则返回 true;否则返回 false。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] int getRow() throws SQLException

[*]接口分析:获取当前游标地点行的行号。
[*]返回值:当前游标地点行的行号;假如游标在效果集外,则返回 0。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*] void setFetchSize(int rows) throws SQLException

[*]接口分析:设置数据库返回效果集的行数巨细。此方法用于引导数据库驱动步调每次从数据库服务器获取的行数,以淘汰通讯次数或限定内存利用。
[*]参数分析:

[*]rows:指定的获取行数巨细。假如设置为 0,则表现利用驱动步调的默认值。

[*]非常:假如效果集已关闭 或 rows 参数小于 0,将抛出 SQLException 非常。

[*] int getFetchSize() throws SQLException

[*]接口分析:获取当前效果集的 fetch size。
[*]返回值:当前效果集的 fetch size。
[*]非常:假如效果集已关闭,将抛出 SQLException 非常。

[*] int getType() throws SQLException

[*]接口分析:获取 ResultSet 的范例。
[*]返回值:ResultSet 的范例。总是返回 ResultSet.TYPE_FORWARD_ONLY,表现效果集的游标只能向前移动。
[*]非常:假如效果集已关闭,将抛出 SQLException 非常。

[*] int getConcurrency() throws SQLException

[*]接口分析:获取 ResultSet 的并发模式。
[*]返回值:ResultSet 的并发模式。总是返回 ResultSet.CONCUR_READ_ONLY,表现效果集不能被更新。
[*]非常:假如效果集已关闭,将抛出 SQLException 非常。

[*] <T> T getObject(String columnLabel, Class<T> type) throws SQLException

[*]接口分析:根据列标签和返回范例的 Class 对象,获取指定列的值。这答应用户以更机动的方式,根据必要将列值直接转换为相应的范例。
[*]参数分析:

[*]columnLabel:要获取其值的列的标署名。
[*]type:盼望返回值的 Java 范例的 Class 对象。

[*]返回值:指定列的值,以指定的范例返回;假如值是 NULL,则返回 null。
[*]非常:假如发生数据库访问错误,大概指定的范例转换不支持,将抛出 SQLException 非常。

效果集元数据

ResultSetMetaData 提供了获取效果集元数据的接口。ResultSetMetaData 范例的对象通过 ResultSet 范例对象的 getMetaData 接口获取。


[*]int getColumnCount() throws SQLException

[*]接口分析:获取效果会合列的总数。
[*]返回值:效果会合列的数目。

[*]boolean isSearchable(int column) throws SQLException

[*]接口分析:判定指定列是否可以用于 WHERE 子句中。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:假如指定列可以用于搜刮,则返回 true;否则返回 false。

[*]int isNullable(int column) throws SQLException

[*]接口分析:判定指定列的值是否可以为 null。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列值是否可为 null 的环境,会返回 ResultSetMetaData.columnNoNulls、ResultSetMetaData.columnNullable 或 ResultSetMetaData.columnNullableUnknown。

[*]boolean isSigned(int column) throws SQLException

[*]接口分析:判定指定列的值是否为有符号数。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:假如列值为有符号数,则返回 true;否则返回 false。

[*]int getColumnDisplaySize(int column) throws SQLException

[*]接口分析:获取指定列的最大标准宽度,以字符为单位。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列的最大宽度。
[*]非常:假如列索引超出范围,将抛出 SQLException 非常。

[*]String getColumnLabel(int column) throws SQLException

[*]接口分析:获取指定列的发起标题,用于打印输出和表现用途。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列的发起标题。
[*]非常:假如列索引超出范围,将抛出 SQLException 非常。

[*]String getColumnName(int column) throws SQLException

[*]接口分析:获取指定列的名称。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列的名称。
[*]非常:假如列索引超出范围,将抛出 SQLException 非常。

[*]int getPrecision(int column) throws SQLException

[*]接口分析:获取指定列的最大精度。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列的最大精度。
[*]非常:假如列索引超出范围,将抛出 SQLException 非常。

[*]int getScale(int column) throws SQLException

[*]接口分析:获取指定列的小数点右侧的位数。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列的小数位数。
[*]非常:假如列索引超出范围,将抛出 SQLException 非常。

[*]String getTableName(int column) throws SQLException

[*]接口分析:获取指定列地点的表名。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列地点的表名。

[*]String getCatalogName(int column) throws SQLException

[*]接口分析:获取指定列地点的数据库名。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列地点数据库名。

[*]int getColumnType(int column) throws SQLException

[*]接口分析:获取指定列的 SQL 范例。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:SQL 范例,来自 java.sql.Types。

[*]String getColumnTypeName(int column) throws SQLException

[*]接口分析:获取指定列的数据库特定的范例名称。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:数据库特定的范例名称。

[*]boolean isReadOnly(int column) throws SQLException

[*]接口分析:判定指定列是否为只读。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:假如列为只读,则返回 true;否则返回 false。

[*]String getColumnClassName(int column) throws SQLException

[*]接口分析:获取指定列的 Java 类名。
[*]参数分析:

[*]column:列的编号(从 1 开始)。

[*]返回值:列值在 Java 中对应的类名。

参数绑定

PreparedStatement 答应利用预编译的 SQL 语句,这可以进步性能并提供参数化查询的本领,从而增长安全性。
JDBC 驱动提供了实现 PreparedStatement 接口的两个类:

[*]对应原生毗连的 TSDBPreparedStatement
[*]对应 WebSocket 毗连的 TSWSPreparedStatement
因 JDBC 标准没有高性能绑定命据的接口,TSDBPreparedStatement 和 TSWSPreparedStatement 都新增了一些方法,用来扩展参数绑定本领。
   注意:由于 PreparedStatement 继续了 Statement 接口,因此对于这部门重复的接口不再赘述,请参考 Statement 接口中对应形貌。
标准接口



[*]void setNull(int parameterIndex, int sqlType) throws SQLException

[*]接口分析:设置指定参数的 SQL 范例为 NULL。
[*]参数分析:

[*]parameterIndex:一个 int 范例的参数,表现预编译语句中的参数索引位置。
[*]sqlType:一个 int 范例的参数,表现要设置为 NULL 的 SQL 范例。

[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*]void setBoolean(int parameterIndex, boolean x) throws SQLException

[*]接口分析:设置指定参数的值为一个 Java boolean。
[*]参数分析:

[*]parameterIndex:一个 int 范例的参数,表现预编译语句中的参数索引位置。
[*]x:一个 boolean 范例的参数,表现要设置的值。

[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*]下面接口除了要设置的值范例差别外,别的同 setBoolean,不再赘述:

[*]void setByte(int parameterIndex, byte x) throws SQLException
[*]void setShort(int parameterIndex, short x) throws SQLException
[*]void setInt(int parameterIndex, int x) throws SQLException
[*]void setLong(int parameterIndex, long x) throws SQLException
[*]void setFloat(int parameterIndex, float x) throws SQLException
[*]void setDouble(int parameterIndex, double x) throws SQLException
[*]void setBigDecimal(int parameterIndex, BigDecimal x) throws SQLException
[*]void setString(int parameterIndex, String x) throws SQLException
[*]void setBytes(int parameterIndex, byte[] x) throws SQLException
[*]void setDate(int parameterIndex, Date x) throws SQLException
[*]void setTime(int parameterIndex, Time x) throws SQLException
[*]void setTimestamp(int parameterIndex, Timestamp x) throws SQLException

[*]void clearParameters() throws SQLException

[*]接口分析:打扫当前全部已设置的参数值。
[*]非常:假如预编译语句已关闭,将抛出 SQLException 非常。

[*]void setObject(int parameterIndex, Object x, int targetSqlType) throws SQLException

[*]接口分析:利用给定对象设置指定参数的值,对象的范例由 targetSqlType 指定。
[*]参数分析:

[*]parameterIndex:一个 int 范例的参数,表现预编译语句中的参数索引位置。
[*]x:一个 Object 范例的参数,表现要设置的值。
[*]targetSqlType:一个 int 范例的参数,表现 x 参数的 SQL 范例。

[*]非常:假如预编译语句已关闭,将抛出 SQLException 非常。

[*]void setObject(int parameterIndex, Object x) throws SQLException

[*]接口分析:利用给定对象设置指定参数的值,对象的范例由对象本身决定。
[*]参数分析:

[*]parameterIndex:一个 int 范例的参数,表现预编译语句中的参数索引位置。
[*]x:一个 Object 范例的参数,表现要设置的值。

[*]非常:假如预编译语句已关闭大概参数索引超出范围,将抛出 SQLException 非常。

[*]ResultSetMetaData getMetaData() throws SQLException

[*]接口分析:获取与此 PreparedStatement 对象天生的 ResultSet 对象相干的元数据。
[*]返回值:假如此 PreparedStatement 对象尚未实验任何天生 ResultSet 对象的操纵,则返回 null;否则,返回此 ResultSet 对象的元数据。
[*]非常:假如发生数据库访问错误,将抛出 SQLException 非常。

[*]ParameterMetaData getParameterMetaData() throws SQLException

[*]接口分析:获取此 PreparedStatement 对象中每个参数的范例和属性信息。ParameterMetaData 分析见下文 参数元数据 章节。
[*]返回值:此 PreparedStatement 对象的参数的元数据。
[*]非常:假如预编译语句已关闭,将抛出 SQLException 非常。

参数元数据

ParameterMetaData 提供了参数元数据接口:


[*]int getParameterCount() throws SQLException

[*]接口分析:获取预编译语句中参数的数目。
[*]返回值:参数的数目,范例为 int。
[*]非常:假如在获取参数数目的过程中发生错误,将抛出 SQLException 非常。

[*]boolean isSigned(int param) throws SQLException

[*]接口分析:判定指定参数是否为有符号数。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:假如参数为有符号数,则返回 true;否则返回 false。
[*]非常:假如在判定过程中发生错误,将抛出 SQLException 非常。

[*]int getPrecision(int param) throws SQLException

[*]接口分析:获取指定参数的精度。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的精度,范例为 int。
[*]非常:假如在获取精度的过程中发生错误,将抛出 SQLException 非常。

[*]int getScale(int param) throws SQLException

[*]接口分析:获取指定参数的小数位数。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的小数位数,范例为 int。
[*]非常:假如在获取小数位数的过程中发生错误,将抛出 SQLException 非常。

[*]int getParameterType(int param) throws SQLException

[*]接口分析:获取指定参数的 SQL 范例。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的 SQL 范例,范例为 int。
[*]非常:假如在获取 SQL 范例的过程中发生错误,将抛出 SQLException 非常。

[*]String getParameterTypeName(int param) throws SQLException

[*]接口分析:获取指定参数的 SQL 范例名称。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的 SQL 范例名称,范例为 String。
[*]非常:假如在获取 SQL 范例名称的过程中发生错误,将抛出 SQLException 非常。

[*]String getParameterClassName(int param) throws SQLException

[*]接口分析:获取指定参数的 Java 范例名称。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的 Java 范例名称,范例为 String。
[*]非常:假如在获取 Java 范例名称的过程中发生错误,将抛出 SQLException 非常。

[*]int getParameterMode(int param) throws SQLException

[*]接口分析:获取指定参数的模式(比方,IN、OUT、INOUT)。
[*]参数分析:

[*]param:参数的索引,范例为 int。

[*]返回值:参数的模式,范例为 int。
[*]非常:假如在获取参数模式的过程中发生错误,将抛出 SQLException 非常。

扩展接口



[*] void setTableName(String name) throws SQLException

[*]接口分析:设置当前操纵的表名。
[*]参数分析:

[*]name:一个 String 范例的参数,表现要绑定的表名。


[*] void setTagNull(int index, int type)

[*]接口分析:为指定索引的标签设置 null 值。
[*]参数分析:

[*]index:标签的索引位置。
[*]type:标签的数据范例。


[*] void setTagBoolean(int index, boolean value)

[*]接口分析:为指定索引的标签设置布尔值。
[*]参数分析:

[*]index:标签的索引位置。
[*]value:要设置的布尔值。


[*] 下面接口除了要设置的值范例差别外,别的同 setTagBoolean,不再赘述:

[*]void setTagInt(int index, int value)
[*]void setTagByte(int index, byte value)
[*]void setTagShort(int index, short value)
[*]void setTagLong(int index, long value)
[*]void setTagTimestamp(int index, long value)
[*]void setTagFloat(int index, float value)
[*]void setTagDouble(int index, double value)
[*]void setTagString(int index, String value)
[*]void setTagNString(int index, String value)
[*]void setTagJson(int index, String value)
[*]void setTagVarbinary(int index, byte[] value)
[*]void setTagGeometry(int index, byte[] value)

[*] void setInt(int columnIndex, ArrayList<Integer> list) throws SQLException

[*]接口分析:为指定列索引设置批量整型值。
[*]参数分析:

[*]columnIndex:列的索引位置。
[*]list:包罗整型值的列表。

[*]非常:

[*]假如操纵过程中发生错误,将抛出 SQLException 非常。


[*] 下面接口除了要设置的值范例差别外,别的同 setInt:

[*]void setFloat(int columnIndex, ArrayList<Float> list) throws SQLException
[*]void setTimestamp(int columnIndex, ArrayList<Long> list) throws SQLException
[*]void setLong(int columnIndex, ArrayList<Long> list) throws SQLException
[*]void setDouble(int columnIndex, ArrayList<Double> list) throws SQLException
[*]void setBoolean(int columnIndex, ArrayList<Boolean> list) throws SQLException
[*]void setByte(int columnIndex, ArrayList<Byte> list) throws SQLException
[*]void setShort(int columnIndex, ArrayList<Short> list) throws SQLException

[*] void setString(int columnIndex, ArrayList<String> list, int size) throws SQLException

[*]接口分析:为指定列索引设置字符串值列表。
[*]参数分析:

[*]columnIndex:列的索引位置。
[*]list:包罗字符串值的列表。
[*]size:全部字符串的最大长度,一样寻常为建表语句的限定值。

[*]非常:

[*]假如操纵过程中发生错误,将抛出 SQLException 非常。


[*] 下面接口除了要设置的值范例差别外,别的同 setString:

[*]void setVarbinary(int columnIndex, ArrayList<byte[]> list, int size) throws SQLException
[*]void setGeometry(int columnIndex, ArrayList<byte[]> list, int size) throws SQLException
[*]void setNString(int columnIndex, ArrayList<String> list, int size) throws SQLException

[*] void columnDataAddBatch() throws SQLException

[*]接口分析:将 setInt(int columnIndex, ArrayList<Integer> list) 等数组情势接口设置的数据添加到当前 PrepareStatement 对象的批处理处罚中。
[*]非常:

[*]假如操纵过程中发生错误,将抛出 SQLException 非常。


[*] void columnDataExecuteBatch() throws SQLException

[*]接口分析:实验当前 PrepareStatement 对象的批处理处罚操纵。
[*]非常:假如操纵过程中发生错误,将抛出 SQLException 非常。

数据订阅

JDBC 标准不支持数据订阅,因此本章全部接口都是扩展接口。TaosConsumer 类提供了消耗者相干接口,ConsumerRecord 提供了消耗记载相干接口,TopicPartition 和 OffsetAndMetadata 提供了分区信息以及偏移量元数据接口。末了 ReferenceDeserializer 和 MapDeserializer 提供了反序列化的支持。
消耗者



[*]TaosConsumer(Properties properties) throws SQLException

[*]接口分析:消耗者构造函数
[*]参数分析:

[*]properties:一组属性,详细支持的属性见下文。

[*]返回值:消耗者对象
[*]非常:假如创建失败,抛出 SQLException 非常。

创建消耗者支持属性列表:


[*]td.connect.type:毗连方式。jni:表现利用动态库毗连的方式,ws/WebSocket:表现利用 WebSocket 举行数据通讯。默以为 jni 方式。
[*]bootstrap.servers:TDengine 服务端地点的ip:port,假如利用 WebSocket 毗连,则为 taosAdapter 地点的ip:port。
[*]enable.auto.commit:是否答应主动提交。
[*]group.id:consumer:地点的 group。
[*]value.deserializer:效果集反序列化方法,可以继续 com.taosdata.jdbc.tmq.ReferenceDeserializer,并指定效果集 bean,实现反序列化。也可以继续 com.taosdata.jdbc.tmq.Deserializer,根据 SQL 的 resultSet 自界说反序列化方式。
[*]httpConnectTimeout:创建毗连超时参数,单位 ms,默以为 5000 ms。仅在 WebSocket 毗连下有用。
[*]messageWaitTimeout:数据传输超时参数,单位 ms,默以为 10000 ms。仅在 WebSocket 毗连下有用。
[*]httpPoolSize:同一个毗连下最大并行哀求数。仅在 WebSocket 毗连下有用。
[*]TSDBDriver.PROPERTY_KEY_ENABLE_COMPRESSION:传输过程是否启用压缩。仅在利用 WebSocket 毗连时收效。true:启用,false:不启用。默以为 false。
[*]TSDBDriver.PROPERTY_KEY_ENABLE_AUTO_RECONNECT:是否启用主动重连。仅在利用 WebSocket 毗连时收效。true:启用,false:不启用。默以为 false。
[*]TSDBDriver.PROPERTY_KEY_RECONNECT_INTERVAL_MS:主动重连重试隔断,单位毫秒,默认值 2000。仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时收效。
[*]TSDBDriver.PROPERTY_KEY_RECONNECT_RETRY_COUNT:主动重连重试次数,默认值 3,仅在 PROPERTY_KEY_ENABLE_AUTO_RECONNECT 为 true 时收效。
其他参数请参考:Consumer 参数列表,注意 TDengine 服务端自 3.2.0.0 版本开始消息订阅中的 auto.offset.reset 默认值发生厘革。


[*]void subscribe(Collection<String> topics) throws SQLException

[*]接口分析:订阅一组主题。
[*]参数分析:

[*]topics:一个 Collection<String> 范例的参数,表现要订阅的主题列表。

[*]非常:假如在订阅过程中发生错误,将抛出 SQLException 非常。

[*]void unsubscribe() throws SQLException

[*]接口分析:取消订阅全部主题。
[*]非常:假如在取消订阅过程中发生错误,将抛出 SQLException 非常。

[*]Set<String> subscription() throws SQLException

[*]接口分析:获取当前订阅的全部主题。
[*]返回值:返回值范例为 Set<String>,即当前订阅的全部主题聚集。
[*]非常:假如在获取订阅信息过程中发生错误,将抛出 SQLException 非常。

[*]ConsumerRecords<V> poll(Duration timeout) throws SQLException

[*]接口分析:轮询消息。
[*]参数分析:

[*]timeout:一个 Duration 范例的参数,表现轮询的超时时间。

[*]返回值:返回值范例为 ConsumerRecords<V>,即轮询到的消息记载。
[*]非常:假如在轮询过程中发生错误,将抛出 SQLException 非常。

[*]void commitAsync() throws SQLException

[*]接口分析:异步提交当前处理处罚的消息的偏移量。
[*]非常:假如在提交过程中发生错误,将抛出 SQLException 非常。

[*]void commitSync() throws SQLException

[*]接口分析:同步提交当前处理处罚的消息的偏移量。
[*]非常:假如在提交过程中发生错误,将抛出 SQLException 非常。

[*]void close() throws SQLException

[*]接口分析:关闭消耗者,开释资源。
[*]非常:假如在关闭过程中发生错误,将抛出 SQLException 非常。

[*]void seek(TopicPartition partition, long offset) throws SQLException

[*]接口分析:将给定分区的偏移量设置到指定的位置。
[*]参数分析:

[*]partition:一个 TopicPartition 范例的参数,表现要操纵的分区。
[*]offset:一个 long 范例的参数,表现要设置的偏移量。

[*]非常:假如在设置偏移量过程中发生错误,将抛出 SQLException 非常。

[*]long position(TopicPartition tp) throws SQLException

[*]接口分析:获取给定分区当前的偏移量。
[*]参数分析:

[*]tp:一个 TopicPartition 范例的参数,表现要查询的分区。

[*]返回值:返回值范例为 long,即给定分区当前的偏移量。
[*]非常:假如在获取偏移量过程中发生错误,将抛出 SQLException 非常。

[*]Map<TopicPartition, Long> beginningOffsets(String topic) throws SQLException

[*]接口分析:获取指定主题的每个分区的最早偏移量。
[*]参数分析:

[*]topic:一个 String 范例的参数,表现要查询的主题。

[*]返回值:返回值范例为 Map<TopicPartition, Long>,即指定主题的每个分区的最早偏移量。
[*]非常:假如在获取最早偏移量过程中发生错误,将抛出 SQLException 非常。

[*]Map<TopicPartition, Long> endOffsets(String topic) throws SQLException

[*]接口分析:获取指定主题的每个分区的最新偏移量。
[*]参数分析:

[*]topic:一个 String 范例的参数,表现要查询的主题。

[*]返回值:返回值范例为 Map<TopicPartition, Long>,即指定主题的每个分区的最新偏移量。
[*]非常:假如在获取最新偏移量过程中发生错误,将抛出 SQLException 非常。

[*]void seekToBeginning(Collection<TopicPartition> partitions) throws SQLException

[*]接口分析:将一组分区的偏移量设置到最早的偏移量。
[*]参数分析:

[*]partitions:一个 Collection<TopicPartition> 范例的参数,表现要操纵的分区聚集。

[*]非常:假如在设置偏移量过程中发生错误,将抛出 SQLException 非常。

[*]void seekToEnd(Collection<TopicPartition> partitions) throws SQLException

[*]接口分析:将一组分区的偏移量设置到最新的偏移量。
[*]参数分析:

[*]partitions:一个 Collection<TopicPartition> 范例的参数,表现要操纵的分区聚集。

[*]非常:假如在设置偏移量过程中发生错误,将抛出 SQLException 非常。

[*]Set<TopicPartition> assignment() throws SQLException

[*]接口分析:获取消耗者当前分配的全部门区。
[*]返回值:返回值范例为 Set<TopicPartition>,即消耗者当前分配的全部门区。
[*]非常:假如在获取分配的分区过程中发生错误,将抛出 SQLException 非常。

[*]OffsetAndMetadata committed(TopicPartition partition) throws SQLException

[*]接口分析:获取指定分区末了提交的偏移量。
[*]参数分析:

[*]partition:一个 TopicPartition 范例的参数,表现要查询的分区。

[*]返回值:返回值范例为 OffsetAndMetadata,即指定分区末了提交的偏移量。
[*]非常:假如在获取提交的偏移量过程中发生错误,将抛出 SQLException 非常。

[*]Map<TopicPartition, OffsetAndMetadata> committed(Set<TopicPartition> partitions) throws SQLException

[*]接口分析:获取一组分区末了提交的偏移量。
[*]参数分析:

[*]partitions:一个 Set<TopicPartition> 范例的参数,表现要查询的分区聚集。

[*]返回值:返回值范例为 Map<TopicPartition, OffsetAndMetadata>,即一组分区末了提交的偏移量。
[*]非常:假如在获取提交的偏移量过程中发生错误,将抛出 SQLException 非常。

消耗记载

ConsumerRecords 类提供了消耗记载信息,可以迭代 ConsumerRecord 对象。
ConsumerRecord 提供的接口:


[*]String getTopic()

[*]接口分析:获取消息的主题。
[*]返回值:返回值范例为 String,即消息的主题。

[*]String getDbName()

[*]接口分析:获取数据库名称。
[*]返回值:返回值范例为 String,即数据库名称。

[*]int getVGroupId()

[*]接口分析:获取捏造组 ID。
[*]返回值:返回值范例为 int,即捏造组 ID。

[*]V value()

[*]接口分析:获取消息的值。
[*]返回值:返回值范例为 V,即消息的值。

[*]long getOffset()

[*]接口分析:获取消息的偏移量。
[*]返回值:返回值范例为 long,即消息的偏移量。

分区信息

TopicPartition 类提供了分区信息,包罗消息主题和捏造组 ID。


[*]TopicPartition(String topic, int vGroupId)

[*]接口分析:构造一个新的 TopicPartition 实例,用于表现一个特定的主题和捏造组 ID。
[*]参数分析:

[*]topic:一个 String 范例的参数,表现消息的主题。
[*]vGroupId:一个 int 范例的参数,表现捏造组 ID。


[*]String getTopic()

[*]接口分析:获取此 TopicPartition 实例的主题。
[*]返回值:返回值范例为 String,即此 TopicPartition 实例的主题。

[*]int getVGroupId()

[*]接口分析:获取此 TopicPartition 实例的捏造组 ID。
[*]返回值:返回值范例为 int,即此 TopicPartition 实例的捏造组 ID。

偏移量元数据

OffsetAndMetadata 类提供了偏移量元数据信息。


[*]long offset()

[*]接口分析:获取此 OffsetAndMetadata 实例中的偏移量。
[*]返回值:返回值范例为 long,即此 OffsetAndMetadata 实例中的偏移量。

[*]String metadata()

[*]接口分析:获取此 OffsetAndMetadata 实例中的元数据。
[*]返回值:返回值范例为 String,即此 OffsetAndMetadata 实例中的元数据。

反序列化

JDBC 驱动提供了两个反序列化类:ReferenceDeserializer 和 MapDeserializer。它们都实现了 Deserializer 接口。
ReferenceDeserializer 用来将消耗到的一条记载反序列化为一个对象,必要包管对象类的属性名与消耗到的数据的列名可以大概对应,且范例可以大概匹配。
MapDeserializer 则会将消耗到的一行数据反序列化为一个 Map<String, Object> 对象,其 key 为列名,值为 Java 对象。
ReferenceDeserializer 和 MapDeserializer 的接口不会被用户直接调用,请参考利用样例。
附录

taos-jdbcdriver Javadoc:taos-jdbcdriver doc
JDBC Javadoc:JDBC Reference doc
访问官网

更多内容欢迎访问 TDengine 官网

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: TDengine JAVA 语言毗连器