我正在尝试实现 Hikari 连接池(v 2.3.5)。我已经完成了所有设置,并且能够从池中检索连接,并设置一个preparedstatement 对象。每当我尝试对准备好的语句执行任何操作时,Hikari 都会抛出一个内部 NPE。
Data Warehouse Task Error
com.hs.task.warehouse.eci.EciConversionException: Failed while converting claims...
at com.hs.task.warehouse.eci.Claims.convertTable(Claims.java:253)
at com.hs.task.warehouse.DataWarehouseTask.execute(DataWarehouseTask.java:76)
at org.quartz.core.JobRunShell.run(JobRunShell.java:202)
at org.quartz.simpl.SimpleThreadPool$WorkerThread.run(SimpleThreadPool.java:573)
Caused by: java.lang.NullPointerException
at com.zaxxer.hikari.proxy.PreparedStatementJavassistProxy.setString(PreparedStatementJavassistProxy.java)
at com.hs.task.warehouse.eci.Claims.convertTable(Claims.java:68)
... 3 more
我正在对专有数据库使用非常旧的 JDBC 驱动程序。我以前使用过 Proxool 和相同的驱动程序,没有问题。
配置:
HikariConfig hconf = new HikariConfig();
hconf.setDriverClassName("com.dbcswc.fs.jdbc.Driver");
hconf.setJdbcUrl("=jdbc:fs3:MyServer:9584/MyDB;encryption=off;localport=0");
hconf.setUsername("user");
hconf.setPassword("pass");
hconf.setConnectionTestQuery("select 1 as test from pu");
这是发生错误的地方
PreparedStatement psClaims = con.prepareStatement(sql);
psClaims.setString(1, ECI_DT_FMT.format(lastConvertDate));
调用 setString 时,此时 psClaims 不为 NULL。