借用oschina的数据库连接池的代码DBManager遇到的问题

itwarcraft 发布于 2012/06/07 16:31
阅读 529
收藏 0
@红薯  使用http://www.oschina.net/code/snippet_12_8中的DBManager,配置的数据库连接池,但是测试的时候,发现原来的conn.createStatement()不能使用了。当然,是采用了跟踪sql语句后,使用的内容的动态代理之后出现的问题,取消就正常的。想问问,原因是什么???开始接触数据库连接池,不明白。
加载中
0
红薯
红薯
不能用了是什么现象呢?
0
itwarcraft
itwarcraft

引用来自“红薯”的答案

不能用了是什么现象呢?
出现空指针错误。
外部通过DBManager.getConnection()获取connection,
然后调用connection.createStatement()生成statement,
然后就在invoke方法中报空指针。
原来是采用事务的,
应该是这个方面的原因导致的,原来在其他没有采用事务的地方,一切都是正常的。
错误代码:
	at com.mq.db.DBManager$_DebugConnection.invoke(DBManager.java:173)
	at $Proxy0.getMetaData(Unknown Source)
	at com.mq.db.DBManager.initDataSource(DBManager.java:64)
	at com.mq.db.DBManager.<clinit>(DBManager.java:27)
	at com.alishan.datasource.ConnectDatabase.getConnection(ConnectDatabase.java:33)
	at Beiyong.Test.main(Test.java:100)
java.lang.NullPointerException
	at com.mq.db.DBManager$_DebugConnection.invoke(DBManager.java:173)
	at $Proxy0.createStatement(Unknown Source)
	at Beiyong.Test.main(Test.java:102)

  原因在于args是个空对象。
请老大看看应该怎样调整呢。
itwarcraft
itwarcraft
回复 @loyal : --||。新手。多多包涵嘛。呵。我也这样修改过了。呵。谢谢!
loyal
loyal
哦,忘了,要改下.不好意思...改的久了. if ("prepareStatement".equals(method) || "createStatement".equals(method)) { if (args != null) log.info("【SQL】>>> " + args[0]); }
loyal
loyal
不是你那么用的...活该!
返回顶部
顶部