java - 获取 TDS 驱动程序 - java.lang.NullPointerException。这个异常不一致

标签 java connection nullpointerexception sqlexception executequery

当从 3 或 4 个线程调用方法时,我收到异常。此方法在方法内部获取数据库连接,并从数据库填充一些值,然后仅在方法内部正确关闭连接(连接、结果集和准备语句)。仍然出现异常。

Thread_1 - 调用 abc() 方法。连接在方法内打开和关闭。
Thread_2 - 调用 abc() 方法。连接在方法内打开和关闭。
Thread_3 - 调用 abc() 方法。连接在方法内打开和关闭。

我不清楚为什么即使连接正确打开和关闭也会发生异常。 数据库 - Ms sql, Java - 1.6,apache-tomcat 6。

主要是不一致,有时出现异常,有时不出现异常。

1. Exception -
com.inet.tds.am: 
[TDS Driver]java.lang.NullPointerException                                                                                                                                                
        at com.inet.tds.aj.a(Unknown Source)                                                                                                                                                               
        at com.inet.tds.r.g(Unknown Source)                                                                                                                                                                
        at com.inet.tds.r.executeQuery(Unknown Source)                                                                                                                                                     
        at org.apache.tomcat.dbcp.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)


2. Exception -
java.sql.SQLException: Connection is closed.                                                                                                                                                               
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.checkOpen(PoolingDataSource.java:175)                                                                                  
        at org.apache.tomcat.dbcp.dbcp.PoolingDataSource$PoolGuardConnectionWrapper.prepareStatement(PoolingDataSource.java:301)

请就此提出建议。

最佳答案

数据库连接可能不是线程安全的。尽管从堆栈跟踪中可以看出您正在尝试使用连接池 (dbcp),但您可能没有正确设置它。如果您使用更多配置和进行数据库调用的代码更新问题,也许有人可以发现问题。

关于java - 获取 TDS 驱动程序 - java.lang.NullPointerException。这个异常不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9411706/

相关文章:

java - 在 Java 中,方法/构造函数声明可以出现在另一个方法/构造函数声明中吗?

java - 如何将原始 JSON 作为来自 Restful 服务的响应传递?

vba - 查找使用连接的位置 Excel VBA

android - 传递结果失败 ResultInfo{who=null, request=100, result=-1, data=Intent

Android findViewById 抛出 NullPointerException

Java-Gson 解析 "Expected BEGIN_ARRAY but was BEGIN_OBJECT"

java - 如何使用 Maven/testng 将参数发送到方法?

java - 相对较长的 TimeOut 连接会产生什么后果?

networking - SetWriteDeadline有什么用

java - AbstractButton.setEnabled(true) 的 NullPointerException