A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

白色麻雀

中级黑马

  • 黑马币:36

  • 帖子:34

  • 精华:0

© 白色麻雀 中级黑马   /  2015-5-24 23:01  /  5122 人查看  /  18 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

2黑马币
本帖最后由 白色麻雀 于 2015-5-25 00:15 编辑

在调试JavaEE程序的时候抛出一个空指针,不明白是哪里出错了,哪位可以帮忙看看嘛?
java.sql.SQLException: You can't operate on a closed Connection!!!
        at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:106)
        at com.mchange.v2.sql.SqlUtils.toSQLException(SqlUtils.java:65)
        at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:222)
        at cn.itcast.ysxd.admin.dao.BuildingInfoDao.findAll(BuildingInfoDao.java:97)
        at cn.itcast.ysxd.admin.service.BuildingInfoService.findAll(BuildingInfoService.java:29)
        at cn.itcast.ysxd.admin.web.servlet.BuildingInfoServlet.findAll(BuildingInfoServlet.java:46)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        at cn.itcast.servlet.BaseServlet.service(BaseServlet.java:61)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)

        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:502)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:953)

        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:408)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1023)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589)
        at org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:312)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
        at java.lang.Thread.run(Thread.java:744)
Caused by: java.lang.NullPointerException
        at com.mchange.v2.c3p0.impl.NewProxyConnection.prepareStatement(NewProxyConnection.java:186)
        ... 25 more
[sup]出错代码位置:如图所示,代码97行,pstmt是设置的类成员变量,初始值为null。[/sup]

捕获1.JPG (58.25 KB, 下载次数: 84)

错误语句97行

错误语句97行

最佳答案

查看完整内容

不能直接PreparedStatement stmt=null; 仅仅是申明的对象是不能使用的。 强制使用会抛出NulPointerException异常 必须new出来 望采纳

18 个回复

倒序浏览
不能直接PreparedStatement stmt=null;   仅仅是申明的对象是不能使用的。
强制使用会抛出NulPointerException异常   必须new出来   望采纳
回复 使用道具 举报
你放这么一段代码,谁会看啊。。。。。。
回复 使用道具 举报
南朝小和尚 发表于 2015-5-24 23:33
你放这么一段代码,谁会看啊。。。。。。

好吧,那我换个方式提问。在访问数据库的时候,我并没有提前关闭数据库的连接,为什么会提示我数据库连接关闭了呢?
回复 使用道具 举报
用了线程的??
回复 使用道具 举报

没有用到线程,
回复 使用道具 举报
空指针这个错误经常出现,其实也最好对付了。不过就是因为值为空而报错么。。只有一段代码,就是pstmt为空,你看看你的数据库连接配置有没有哪里写错,仔细检查下
回复 使用道具 举报
conn为null 是否是数据库没连接上
回复 使用道具 举报
申明的对象没有 没有new 就只是申明了类型 但是没有具体实例  没有实例操作   所有会报NulPointerException异常
回复 使用道具 举报
我能说我没看出来这头像的性别么,,,,
回复 使用道具 举报
空指针应该指的是你的 conn 为空,
应该是连接没有获取成功,
建议先检查数据源是否正确,
回复 使用道具 举报
白色麻雀 发表于 2015-5-25 00:03
好吧,那我换个方式提问。在访问数据库的时候,我并没有提前关闭数据库的连接,为什么会提示我数据库连接 ...

你说你遇到了空指针异常,那么可能是你的某些操作包含了隐含参数,从而数据库可能丢失数据,这个时候就有可能导致数据库关闭,可以试试回滚或者备份
回复 使用道具 举报
hihi 中级黑马 2015-5-25 23:03:21
13#
感觉都是大神啊!表示看不懂啊
回复 使用道具 举报
为什么十楼在意的是头像的性别问题。。。
回复 使用道具 举报
半世心修 发表于 2015-5-25 09:27
空指针这个错误经常出现,其实也最好对付了。不过就是因为值为空而报错么。。只有一段代码,就是pstmt为空 ...

pstmt在debug的时候是有值的
回复 使用道具 举报
南朝小和尚 发表于 2015-5-25 20:32
你说你遇到了空指针异常,那么可能是你的某些操作包含了隐含参数,从而数据库可能丢失数据,这个时候就有 ...

恩 我试试!
回复 使用道具 举报
我把PreparedStatement stmt 设置成了成员变量,并把创建连接的操作放在了静态代码块中,然后在调用类中的方法时,就debug出了conn为空的问题,从而导致了stmt为空的异常。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马