首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HikariCP准备语句Null指针异常

HikariCP准备语句Null指针异常
EN

Stack Overflow用户
提问于 2015-03-30 18:18:44
回答 1查看 1.4K关注 0票数 1

我正在尝试实现Hikari连接池(v2.3.5)。我已经完成了所有的设置,并且能够从池中检索连接,并设置一个preparedstatement对象。每当我试图对准备好的语句执行任何操作时,Hikari都会抛出一个内部NPE。

代码语言:javascript
复制
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驱动程序到一个专用的DB。我以前用过Proxool这个驱动程序,没有问题。

配置:

代码语言:javascript
复制
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");

这里是错误发生的地方

代码语言:javascript
复制
PreparedStatement psClaims = con.prepareStatement(sql);
psClaims.setString(1, ECI_DT_FMT.format(lastConvertDate));

在调用psClaims时,setString不是空的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-04-01 16:13:17

为了简单起见,我在文章中更改了这一行代码:

代码语言:javascript
复制
PreparedStatement psClaims = con.prepareStatement(sql);

准备好的语句是由向驱动程序发送autoGeneratedKeys参数的另一个类获得的:

代码语言:javascript
复制
con.prepareStatement(sql, PreparedStatement.NO_GENERATED_KEYS)

经过一些调试后,我发现驱动程序正在返回一个空前置语句,但是HikariCP仍然返回了一个preparedstatement代理对象。HikariCP保存了对从驱动程序获得的NULL预付语句的引用,并在对预付语句进行操作时抛出一个NPE,例如,setString()。

我甚至不确定驱动程序返回NULL是否合法,我倾向于它是驱动程序中的一个bug,所以我不确定是否应该在HikariCP中解决它。我会在那里提出一个问题和细节,看看他们是否愿意对这种情况进行检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29353363

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档