gpt4 book ai didi

java - 设置准备好的语句参数时出现 NullPointerException

转载 作者:行者123 更新时间:2023-11-29 23:10:29 24 4
gpt4 key购买 nike

我认为这是一个错误。我正在使用最新的 MySQL JDBC 库。我有多个线程。每个线程执行一个查询,并为每一行添加一个批处理到准备好的语句中。

有时指令“stmt.setLong(i, aLong)”会引发 NullPointerException。stmt,i 和 aLong 不为空。

PreparedStatement stmt = db.prepareStatement("myinsert");
while (rs.next()) {
long aLong = rs.getLong(1);
...
stmt.setLong(1,aLong);
stmt.addBatch();
}

这是一个异常(exception):

java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharacterEncoding(ConnectionImpl.java:3124) at com.mysql.jdbc.PreparedStatement.setInternal(PreparedStatement.java:3729) at com.mysql.jdbc.PreparedStatement.setLong(PreparedStatement.java:3751) at org.apache.commons.dbcp2.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:127) at org.apache.commons.dbcp2.DelegatingPreparedStatement.setLong(DelegatingPreparedStatement.java:127) at com.mypackage.MyClass$MyThread.run(MyClass.java:117)

如果我只启动一个线程,它就可以工作。

没有 apache dbcp2 库也会发生该异常。

我要疯了!

最佳答案

我解决了在创建结果集之前删除这些代码行的问题

Statement stmt = Database.getDatabase().createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
stmt.setFetchSize(Integer.MIN_VALUE);

来自 MySQL 文档 here .

The combination of a forward-only, read-only result set, with a fetch size of Integer.MIN_VALUE serves as a signal to the driver to stream result sets row-by-row. After this, any result sets created with the statement will be retrieved row-by-row.

关于java - 设置准备好的语句参数时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28098740/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com