解决过程(嫌麻烦可以直接看结论):
- 首先我以为是我的数据库驱动名字什么的没有写对,但是确实是对的,使用的是
com.mysql.cj.jdbc.Driver
,也没有发现多余的空格什么的
2. 于是我在数据库工具类内部重新写了一个test方法进行数据库连接的测试,结果发现可以成功连接数据库
3. 然后我又在外部重新创建了test类,通过new一个数据库工具类对象调用方法,然后发现也成功了
4. 于是我对比test类和DaoImpl类的区别就是DaoImpl类实现了一个接口,虽然说不太可能有影响但本质排除法的原则,我将test类也实现了Dao接口,结果发现还是连接成功了,所以知道问题不是出在实现接口上。
5. 再然后我在出现错误的DaoImpl类里面也写了一个test方法连接数据库,发现还是成功了,然后我比较test方法和错误的方法的区别,唯一的区别就是错误的方法是重写的,于是我以为是重写的原因,然后我将test方法也改成重写,结果发现还是成功了,我就百思不得其解。
6. 细想过后我又发现一个不同的地方,那就是每次我一启动服务器就报空异常,不启动直接在idea里面连接就正常,于是我又觉得是tomcat的问题,然后想到报的异常是没有驱动,恍然大悟,可能是tomcat没有数据库连接驱动的包,然后就在tomcat的lib目录下粘贴了数据库连接的jar包,结果果然成功了
7. 然后博主又反思,为什么之前写javaweb项目的时候没有数据库驱动也能成功连接数据库呢,然后找到以前的项目进行对比,发现以前的项目使用的是通过配置context.xml方法配置数据源,我以为是这个原因,然后也在该项目配置数据源,然后删掉了tomcat的lib目录的数据库驱动包,然后启动服务器,结果竟然报了跟之前一样的错误,然后我又加上驱动包,又成功了,然后我又删除了驱动包,驱动之前的项目,结果还是可以连接,我想为什么这个没有驱动也可以连接呢,后面想到会不会是其实他是有驱动的只是我没看到呢,然后百度tomcat启动时会加载两个地方的依赖,一个是tomcat自身目录下的lib目录,还有一个是WEB-INF下自己创建的lib目录,我一看之前的项目,果然在WEB-INF下有一个lib目录,里面有数据库驱动,于是真相大白了,我接着在原本的项目移动了lib目录的w位置,然后启动服务器,连接成功!
Original: https://www.cnblogs.com/xiaoye-Blog/p/16514399.html
Author: 小也取不到名字
Title: 连接数据库空异常
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/590026/
转载文章受原作者版权保护。转载请注明原作者出处!