当从 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/