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