黑马程序员技术交流社区

标题: 请大神帮个忙,空指针异常问题 [打印本页]

作者: 白色麻雀    时间: 2015-5-24 23:01
标题: 请大神帮个忙,空指针异常问题
本帖最后由 白色麻雀 于 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, 下载次数: 89)

错误语句97行

错误语句97行

作者: lucien_he    时间: 2015-5-24 23:01
不能直接PreparedStatement stmt=null;   仅仅是申明的对象是不能使用的。
强制使用会抛出NulPointerException异常   必须new出来   望采纳
作者: 南朝小和尚    时间: 2015-5-24 23:33
你放这么一段代码,谁会看啊。。。。。。
作者: 白色麻雀    时间: 2015-5-25 00:03
南朝小和尚 发表于 2015-5-24 23:33
你放这么一段代码,谁会看啊。。。。。。

好吧,那我换个方式提问。在访问数据库的时候,我并没有提前关闭数据库的连接,为什么会提示我数据库连接关闭了呢?
作者: hui1107464497    时间: 2015-5-25 00:13
用了线程的??
作者: 白色麻雀    时间: 2015-5-25 00:16
hui1107464497 发表于 2015-5-25 00:13
用了线程的??

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

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

pstmt在debug的时候是有值的
作者: 白色麻雀    时间: 2015-5-27 23:28
南朝小和尚 发表于 2015-5-25 20:32
你说你遇到了空指针异常,那么可能是你的某些操作包含了隐含参数,从而数据库可能丢失数据,这个时候就有 ...

恩 我试试!
作者: 白色麻雀    时间: 2015-5-28 01:11
我把PreparedStatement stmt 设置成了成员变量,并把创建连接的操作放在了静态代码块中,然后在调用类中的方法时,就debug出了conn为空的问题,从而导致了stmt为空的异常。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2